मेरा सेटअप एक विंडोज एक्सएएमपीपी सर्वर है, कर्ल सक्षम है, और गिट और हडसन स्थापित है। हडसन चुनाव हर मिनट परिवर्तनों को देखने के लिए गिट करते हैं, और यदि उन्हें पाता है, तो यह एक निर्माण बनाता है। मैं इस परीक्षण का उपयोग अपने परीक्षण सर्वर के रूप में करता हूं। यह ठीक काम करता है।गिट पोस्ट-प्राप्त हुक काम नहीं कर रहा
मैं अपने केंद्रीय रिमोट रिपोजिटरी पर पोस्ट-प्राप्त हुक सेट अप करना चाहता हूं जो हडसन के बल निर्माण कार्य को चलाता है।
मैंने अपने केंद्रीय गिट भंडार में हुक निर्देशिका में "पोस्ट-प्राप्त" नामक एक पोस्ट-प्राप्त फ़ाइल बनाई है, जिसे डेवलपर्स की स्थानीय शाखाओं से धक्का दिया जाता है। वे प्रत्येक केंद्रीय भंडार पर अपनी शाखा में धक्का देते हैं। मैं प्रत्येक धक्का के तुरंत बाद पोस्ट-प्राप्त बिल्ड को चलाने के लिए हर हडसन पोल गिट के बजाय दौड़ना चाहता हूं।
जब मैं रिमोट सर्वर पर खोल खोलता हूं और हुक फ़ोल्डर में "पोस्ट-प्राप्त" चलाता हूं, तो यह चलता है। इसे तब नहीं कहा जा रहा है जब लोग इसे स्थानीय भंडार प्रतियों से केंद्रीय केंद्र में ले जाते हैं।
शायद मैं इस अधिकार को समझा नहीं रहा हूं, लेकिन मैं गिट को समझता हूं। जब मैं एक खोल खोल सकते हैं और इस चलाने
#!/bin/sh
curl http://myserver.com:8080/hudson/job/myjobname/build?token=mytoken
फिर,, यह काम करता है, लेकिन जब कोई इसे करने के लिए धक्का, कुछ भी नहीं एक मिनट या उससे कम हो जाता है जब तक, होता है:
बाद प्राप्त कोड दो पंक्तियों है द्वारा, हडसन को पता चलता है कि गिट बदल गया था, और फिर यह बनाता है।
मुझे आवश्यकता होने पर स्पष्ट करने में खुशी है। कोई भी मदद बहुत ही सराहनीय होगी।
संपादित करें: इसके साथ खेलने के बाद, मुझे लगता है कि पोस्ट-प्राप्त निष्पादन निष्पादित नहीं हो रहा है क्योंकि रेफरी को कुछ अपडेट नहीं किया जा रहा है? गिट प्रलेखन का कहना है कि
यह सभी रेफरी अपडेट होने के बाद रिमोट रिपोजिटरी पर निष्पादित होता है।
क्या इसका मतलब यह नहीं है कि कुछ भी अपडेट नहीं होता है, तो यह निष्पादित नहीं होगा? और यदि ऐसा है, तो मुझे यकीन है कि चीज़ें वैसे भी अपडेट हो रही हैं, इसलिए इसे लागू नहीं करना चाहिए।
यहां मेरी प्रक्रिया है: स्थानीय रूप से संपादन करें। संपादन संपादित करें। 'हेब्रैंच' नामक रिमोट शाखा में मेरे सिर से पुश करें (मास्टर शाखा नहीं, जिसे चेक आउट किया गया है) यह वह बिंदु है जहां मैं अपना हुक निष्पादित करना चाहता हूं।
उपयोगकर्ता अपने Git डेमॉन चलाने वाले स्क्रिप्ट को निष्पादित करने की अनुमति है के बजाय हुक सर्वर साइड? – jweyrich
सुनिश्चित नहीं है। जब मैं इसे गिट बैश के माध्यम से चलाता हूं तो यह निष्पादित करता है, लेकिन जब मैं इसे धक्का देता हूं तो ऐसा नहीं होता है। मैं उन अनुमतियों की जांच कैसे करूं? – spanky
सही अनुमति उस तरीके पर निर्भर करती है जिस पर आप अपना भंडार साझा कर रहे हैं, और वास्तविक कॉन्फ़िगरेशन। हालांकि, msquared आपको सभी उपयोगकर्ताओं/समूहों को निष्पादन योग्य अनुमति देने का तरीका बताता है, इसलिए यदि समस्या वास्तव में है तो इसे काम करना चाहिए। – jweyrich