আমি এটি উইন্ডোতে করতে চেয়েছিলাম, এবং সবচেয়ে ভাল উপায়টি ছিল অনুসন্ধানের জন্য ডাইরেক্টরি মনিটরটি ব্যবহারের পরে পরিবর্তনগুলি পরীক্ষা করার পরে যখন এটি পরিবর্তনটি সনাক্ত করে এটি চালু হয়:
প্রোগ্রাম: cmd.exe
প্যারামগুলি: / সিসি: প্যাথটোব্যাচফিল.বাট
ব্যাচের ফাইলটি এতে রয়েছে:
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
(যদি কোনও বিবাদ হয় তবে তা টান বাতিল করতে হবে এবং ধাক্কাটি বাতিল করতে হবে, তবে ঘটেছে তা বলার কোনও সুস্পষ্ট উপায় ছিল না - শেষ পর্যন্ত আমরা এই একটি ত্রুটির কারণে পুরো ধারণাটি ত্যাগ করেছি))
এই কার্ল কমান্ডটি আমার সার্ভারকে জানিয়েছে যে কোডটিতে একটি টান দেওয়া দরকার। এটি পিএইচপি-তে হ্যান্ডেল করার জন্য যা যা প্রয়োজন তা হ'ল:
<?
$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
আমার জন্য, আমি মনে করি এটি বেশ দৃly়ভাবে কাজ করেছে। ডিরেক্টরি মনিটরটি স্টার্টআপে চালনা ও কমানোর জন্য কনফিগার করা যায় এবং এটি বেশ কয়েকটি বিভিন্ন ফোল্ডার দেখতে পারে