मैं खिड़कियों में ऐसा करना चाहता था, और पाया सबसे अच्छा तरीका है परिवर्तन की जाँच करना Directory Monitor का इस्तेमाल किया गया तो जब यह परिवर्तन का पता लगा इसे चलाएं:
प्रोग्राम: cmd।exe
पैरामीटर: /CC:\pathToBatchFile.bat
बैच फ़ाइल निहित है कि:
c:
cd c:\gitRepoDirectory\
(if exist "%PROGRAMFILES(X86)%" (
"%PROGRAMFILES(X86)%\git\bin\sh.exe" --login -i -c "git commit -am AutoCommitMessage"
) else (
"%PROGRAMFILES%\git\bin\sh.exe" --login -i -c "git commit -am AutoCommitMessage"
))
मैं भी फ़ाइलें ("%PROGRAMFILES(X86)%\git\bin\sh.exe" --login -i -c "git add *.*"
) जोड़ने के लिए वहाँ में एक और आदेश होने की कोशिश की, लेकिन मैं नहीं मुझे लगता है कि मैं ठीक से काम कर रहा है।
मैं भी एक के बाद प्रतिबद्ध हुक से युक्त बनाया:
#!/bin/sh
git.exe pull -v --progress "origin"
git.exe push --progress "origin" master:master
curl.exe -s https://webserverdomain.com/updateFromGitHook.x?r=repoName
(अगर कोई संघर्ष थे तो यह पुल गर्भपात और धक्का गर्भपात होगा, लेकिन क्या कोई स्पष्ट रास्ता बताने के लिए है कि नहीं था हुआ - अंत में हमने इस विचार के कारण पूरे विचार को त्याग दिया।)
उस कर्ल कमांड ने मेरे सर्वर से कहा कि उसे कोड पर खींचने की आवश्यकता है। सभी कि php में इसे संभाल करने के लिए आवश्यक किया गया था:
<?
$r = $_GET['r'];
if (!empty($c)) {
//use system instead of exec if you want the output to go back to the git client
exec("cd /path/to/repo/parent/$r; sudo git reset --hard HEAD; sudo git pull;");
echo "\n\nServer: Updated\n\n";
} else {
echo "\n\nServer: UPDATE FAILED\n\n";
}
?>
उस के साथ समस्या सिर्फ यह अपाचे उपयोगकर्ता के बजाय मूल प्रयोक्ता द्वारा चलाए जाने की आवश्यकता थी, इसलिए मैं भी युक्त /etc/sudoers.d/
में एक फ़ाइल बनाने के लिए किया था :
www-data ALL = NOPASSWD: /usr/bin/git
मेरे लिए, मुझे लगता है कि यह काफी ठोस काम करता है। निर्देशिका मॉनिटर स्टार्टअप पर चलाने के लिए और कम से कम शुरू विन्यस्त किया जा सकता है, और यह कई अलग अलग फ़ोल्डरों
एक संस्करण फ़ाइल सिस्टम का उपयोग करना आसान होगा: http://en.wikipedia.org/wiki/Versioning_file_system –
स्पार्कलेशेयर उस पर काफी प्रभावशाली था। – theode