मैं गिट में एक अद्यतन हुक जोड़ना चाहता हूं जो लोगों को जावा कोड को धक्का देने से रोकता है जो संकलित नहीं होगा। आदर्श रूप में यह जावैक को कॉल करेगा, नतीजा देखेंगे, या तो पुश को अनुमति या अस्वीकार कर देगा।मैं इसे कैसे बना सकता हूं ताकि गिट कोड को धक्का देकर अस्वीकार कर सके जो संकलित नहीं होगा?
किसी चीज़ का सबसे आम उदाहरण जिसे मैं रोकना चाहता हूं वह है कि कोई भी अपने सभी परिवर्तनों को इस प्रकार तोड़ने से नहीं रोकता है। हालांकि, यह मेरी समझ है कि गिट हुक क्लाइंट (सर्वर नहीं) पर चलते हैं, इसलिए यदि उपर्युक्त होता है तो हुक अभी भी पुश की अनुमति देगा।
लोगों को अधूरे कामों के साथ निर्माण को तोड़ने से रोकने का सबसे अच्छा तरीका क्या है?
अद्यतन:
हुक काम करने की एक आदिम संस्करण मिल गया, सभी मदद के लिए धन्यवाद! अद्यतन हुक से
अंश:
### make sure code compiles
## currently does this by copying the state of the repository as of the pushed code and attempting to build it
# for now, hard coded as C:\Windows\Temp
copydir="/c/Windows/Temp/git_hook_compile_copy"
echo "making copy of $newrev to $copydir" >&2
rm -rf "$copydir"
mkdir "$copydir"
git archive $newrev | tar -x -C $copydir/
if [ "$?" != "0" ]; then
echo "*** unable to make copy of code" >&2
exit 1
fi
echo "attempting to build $newrev" >&2
"$ANT_HOME/bin/ant" -file "$copydir/appropriatePath/build.xml"
if [ "$?" != "0" ]; then
echo "*** code does not compile" >&2
exit 1
fi
(इस पर ध्यान दें एक विंडोज़ वातावरण के लिए है और ANT_HOME (और इस प्रकार JAVA_HOME पर निर्भर करता है) वातावरण चर परिभाषित किया जा रहा)
प्रत्येक धक्का पर एक परियोजना संकलन निषिद्ध रूप से महंगा हो सकता है; यदि हां, तो 'निरंतर एकीकरण' Google के लिए क्या है। निरंतर एकीकरण के लिए – 9000
+1। –
निरंतर एकीकरण के संबंध में, मैं इसके बारे में भी एक बड़ा प्रशंसक हूं और हम अपने मुख्य प्रोजेक्ट के लिए हडसन का उपयोग करते हैं। यह एक साइड प्रोजेक्ट है और मैं बस कुछ वास्तविक सरल चाहता हूं जो लोगों को उस कोड को चेक करने में सक्षम होने से रोकता है जो निर्माण को तोड़ता है, इस तरह कोई और नहीं (इस मामले में वर्चुअल मशीन स्क्रिप्ट चल रहा है) एक टूटा हुआ निर्माण देख सकता है। – Zugwalt