2011-03-08 25 views
14

आप विभिन्न प्लेटफ़ॉर्म (कहें, * निक्स और विंडोज़) में गिट प्री/पोस्ट प्रतिबद्ध हुक का प्रबंधन कैसे करते हैं?क्रॉस प्लेटफ़ॉर्म गिट हुक

इस परिदृश्य के लिए अनुशंसित कोई भी सर्वोत्तम अभ्यास?

उत्तर

10

गिट हुक वास्तव में किसी भी शेल स्क्रिप्ट से अलग नहीं हैं, जिसमें उन्हें "क्रॉस-प्लेटफॉर्म" रखने के लिए सर्वोत्तम प्रथाएं लागू होती हैं। मामूली अंतर यह है कि आप विंडोज़ * निक्स इम्यूलेशन परतों को इन हुक के प्रमुख उपयोगकर्ताओं के रूप में भी लक्षित कर सकते हैं, और इन्हें तुलनात्मक रूप से सबसे वास्तविक यूनिक्स वातावरण की तुलना में अपंग किया जा सकता है।

मैंने अभी विंडोज़ के लिए डिफ़ॉल्ट गिट में एक पोस्ट-प्रतिबद्ध हुक (और प्री-प्रतिबद्ध हुक लिखा) लिखा है, जो MINGW32 का उपयोग करता है। परिवर्तन के कुछ मैं के बाद से पिछले संस्करण पटकथा पर्यावरण के बारे में कुछ मान्यताओं उपलब्ध कराया करना था:

  • कोई readlink उपलब्ध है, लेकिन यह वैसे भी विंडोज पर निष्प्रभावी था, इसलिए मैं सिर्फ which readlink का चेक में काट दिया और कोई लेखक की राय है, तो कोई भी
  • था
  • /dev/null के लिए पुनः निर्देशित Windows में काम नहीं करता है, बजाय आप nul पर रीडायरेक्ट करने, इस मैं सिर्फ एक uname -s जांच किया था क्या करना है और क्या
  • पर रीडायरेक्ट करने के लिए एक चर सेट नहीं है mktemp उपलब्ध है, लेकिन चूंकि यह एक निर्देशिका थी कि हम किसी भी तरह से छंटनी समाप्त कर चुके थे, हम इस्तेमाल करते थे एक भोलेपन से हार्ड-कोडेड निर्देशिका का नाम
  • किसी कारण से
  • , exec >>$out के माध्यम से STDOUT की पुन: निर्देशित हो MINGW32 में ठीक काम करता है, लेकिन STDERR के लिए exec 2>>$err नहीं है (यह चुपचाप मर रहा है), इसलिए दुर्भाग्य से हम सिर्फ इतना है कि पुनर्निर्देशन त्याग करना पड़ा

इसके अलावा, यह बहुत अच्छी तरह से काम करता है क्योंकि इसमें बहुत सारे प्लेटफॉर्म-विशिष्ट "सामान" नहीं थे। तो बस क्रॉस-प्लेटफार्म स्क्रिप्ट बनाने के लिए सर्वोत्तम प्रथाओं के साथ चिपके रहें और आपको वहां से कम से कम 80% रास्ता मिलना चाहिए। उसके बाद, उन सभी विभिन्न वातावरणों में परीक्षण परीक्षा परीक्षण जिन्हें आप लक्षित कर रहे हैं।

+4

बेशक, कोई आवश्यकता नहीं है कि गिट हुक एक शेल स्क्रिप्ट हो - वास्तव में, पर्ल में गिट की contrib निर्देशिका में कम से कम एक है। – Cascabel

+0

@ जेफ्रोमी अच्छा बिंदु, हालांकि [खोल] टैग मुझे विश्वास दिलाता है कि वह इसे शैल स्क्रिप्ट में कर रहा है, लेकिन हो सकता है कि वह नहीं जानता कि उसे +1 करना है –

संबंधित मुद्दे