2012-10-18 28 views
6

में त्रुटि के बाद प्राप्त एक bash स्क्रिप्ट में पकड़ने मैं एकएक Git एक स्क्रिप्ट

git push 

करते हैं और मैं अपने से बाहर निकलें स्थिति की जाँच।

रिमोट सर्वर पर एक पोस्ट-प्राप्त हुक है जो कुछ चीजें करता है। यदि कोई त्रुटि होती है तो पोस्ट-प्राप्त हुक गैर-शून्य मान से बाहर निकल जाएगा।

हालांकि जब पोस्ट-हुक त्रुटियां बाहर होती हैं, तो गिट पुश सामान्य रूप से बाहर निकलता है। जब तक मैं विशेष रूप से विशिष्ट त्रुटि तारों (जो मैं नहीं हूं) के आउटपुट की जांच कर रहा हूं, मेरी स्क्रिप्ट सोचती है कि सब कुछ ठीक हो गया है।

क्या यह निर्धारित करने का कोई आसान तरीका है कि पोस्ट-प्राप्त हुक विफल हुआ है या नहीं?

+0

केवल बाहर निकलने की स्थिति के बजाय 'गिट पुश' कमांड के * आउटपुट * की जांच करने के बारे में क्या? शायद हुक विफलता आउटपुट में कहीं भी पता लगाने योग्य है जिसे प्रारूपित किया गया है: '

-> ()'। बस जोर से सोच रहा है ... –

+0

यही वह है जो मैं वास्तव में टालना चाहता हूं। लेकिन अगर मैं त्रुटियों को पोस्ट-प्राप्त करते समय त्रुटि के साथ गिट निकास नहीं कर सकता, तो मुझे लगता है कि मुझे यही करना होगा। – Jistanidiot

उत्तर

3

तो उत्तर नहीं है कि पोस्ट-प्राप्त हुक विफल होने पर आसानी से जांचने का कोई तरीका नहीं है। सबसे अच्छा आप कर सकते हैं रिमोट से आउटपुट के लिए अपनी स्क्रिप्ट जांचें और सुनिश्चित करें कि आपका पोस्ट-प्राप्त हुक एक त्रुटि संदेश है जिसे आप ढूंढ रहे हैं।

मेरे मामले में एक प्री-प्राप्त हुक काम नहीं करेगा क्योंकि मैं किसी अन्य बैकअप रेपो पर दबाव डाल रहा हूं और इसे आगे बढ़ाने से पहले नई प्रतिबद्धता स्वीकार करनी होगी।

मूल रूप से बाद प्राप्त हुक की तरह कुछ करना चाहिए:

some-command-that-might-fail 

RC=$? 

if [ $RC -eq 0 ]; then 
echo -e "\nERROR: some-command-that-might-fail FAILED!!!!!!!! PANIC!!!!!!\n" 
fi 

फिर स्क्रिप्ट धक्का कर रही विफल रहा है या त्रुटि या आतंक के लिए उत्पादन grep और बाद प्राप्त त्रुटि रिपोर्ट करना चाहिए।

0

http://www.kernel.org/pub/software/scm/git/docs/githooks.html#post-receive से हवाला देते हुए:

बाद प्राप्त
...
यह हुक Git-प्राप्त पैक के परिणाम को प्रभावित नहीं करता है, क्योंकि यह बाद असली काम हो गया है कहा जाता है।

शायद pre-receive hook आपके उद्देश्य के लिए बेहतर अनुकूल है, हालांकि प्रेषण रिटर्न कोड का कोई उल्लेख नहीं है।