Bunu pencerelerde yapmak istedim ve en iyi yolu değişiklikleri izlemek için Dizin İzleyicisi'ni kullanmak olduğunu öğrendim, o zaman bir değişiklik algıladı:
Program: cmd.exe
Parametreler: /CC:\yolToBatchFile.bat
Bu toplu iş dosyası şunları içeriyordu:
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"
))
Ayrıca dosya ( "%PROGRAMFILES(X86)%\git\bin\sh.exe" --login -i -c "git add *.*") eklemek için başka bir komut var denedim , ama ben düzgün çalışıyorum var sanmıyorum.
Ayrıca aşağıdakileri içeren bir taahhüt sonrası kanca yaptım:
#!/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
(Herhangi bir çatışma olsaydı, çekmeyi iptal eder ve itmeyi iptal ederdi, ancak bunun olduğunu söylemenin açık bir yolu yoktu - sonunda bu tek kusur nedeniyle tüm fikri terk ettik.)
Bu kıvırma komutu sunucuma kodu çekmesi gerektiğini söyledi. Php işlemek için gereken tek şey:
<?
$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";
}
?>
Tek sorun apache kullanıcı yerine kök kullanıcı tarafından çalıştırılması gerekiyordu, bu yüzden de /etc/sudoers.d/içeren bir dosya yapmak zorunda kaldı :
www-data ALL = NOPASSWD: /usr/bin/git
Benim için, bu oldukça sağlam çalıştı. Directory Monitor başlangıçta çalışacak ve simge durumuna küçültülecek şekilde yapılandırılabilir ve birkaç farklı klasörü izleyebilir