रिमोट के रूप में एक आधिकारिक भंडार के साथ, और उससे जुड़े स्थानीय स्थानीय भंडार, क्या एक पूर्व-प्रतिबद्ध हुक उस मुख्य भंडार पर लिखे जा सकते हैं और इसके सभी क्लोनों पर लागू किया जा सकता है?गिट रिमोट/साझा प्री-प्रतिबद्ध हुक
उत्तर
मुझे ऐसा नहीं लगता है, क्योंकि हुक क्लोन नहीं किए जाते हैं।
हो सकता है कि वह हुक स्क्रिप्ट स्वयं ही संस्करणित हो, और फिर क्लोन सर्वर में (प्रतीकात्मक लिंक) से लिंक करें (उनके ओएस समर्थन लिंक लिंक प्रदान करता है)।
या हो सकता है कि हुक क्लोन बनाने के लिए उपयोग किए गए git template directory का हिस्सा हैं (जो केवल क्लोन रेपो में उनकी उपस्थिति सुनिश्चित करेगा, जो गारंटी नहीं देंगे कि वे वास्तव में उपयोग और निष्पादित होते हैं)।
लेकिन मुझे नहीं लगता कि प्रतिबद्धता को लागू करने के लिए कोई "केंद्रीय" तरीका है।
Jefromi टिप्पणियां (जोर मेरा) में और भी अधिक स्पष्ट रूप से बताते हैं:
मैं यह वास्तव में लागू की हुक रेपो के साथ वितरित की है, एक Git भंडार के विचार के खिलाफ जाता है लगता है।
मेरा क्लोन मेरा भंडार है। मुझे इस पर गिट का उपयोग करने में सक्षम होना चाहिए, हालांकि मुझे पसंद है कि हुक चलाने के लिए या नहीं चुनना शामिल है।
(और एक सुरक्षा के दृष्टिकोण से, जो वास्तव में एक तरह से डरावना होगा -। कोई मुझे जब भी मैं कुछ Git आदेशों को चलाने के कुछ आलेख निष्पादित करने के लिए मजबूर करने की क्षमता होनी चाहिए)
मुझे लगता है कि टिप्पणी से सहमत , और केवल एक विशेष विशेष रेपो में, स्थानीय रूप से लागू नियमों को लागू करने के तरीकों को देखा है।
उदाहरण के लिए, आप केंद्रीय रेपो को सीधे नहीं दबाएंगे, लेकिन पहले क्यूए रेपो को धक्का देंगे जो केवल कुछ नियमों का पालन करने पर ही आपकी प्रतिबद्धता स्वीकार करेगा। यदि ऐसा होता है, तो क्यूए रेपो आपकी प्रतिबद्धता को केंद्रीय रेपो में धक्का देगी।
एक और उदाहरण सीधे क्या मैं सिर्फ होगा उल्लेख से प्राप्त "Serverless Continuous Integration with Git", एक तरह से स्थानीय स्तर पर निजी निर्माण है कि उन्हें कहीं भी धक्का से पहले काम करता है लागू करने के लिए।
मुझे लगता है कि यह वास्तव में एक गिट भंडार के विचार के खिलाफ चला जाता है रेपो के साथ वितरित लागू हुक। मेरा क्लोन * मेरा * भंडार है। मुझे इस पर गिट का उपयोग करने में सक्षम होना चाहिए, हालांकि मुझे पसंद है कि हुक चलाने के लिए या नहीं चुनना शामिल है। (और एक सुरक्षा दृष्टिकोण से, यह वास्तव में डरावना होगा - जब भी मैं कुछ गिट कमांड चलाता हूं तो मुझे किसी भी स्क्रिप्ट को निष्पादित करने के लिए मजबूर करने की क्षमता नहीं होनी चाहिए।) – Cascabel
@ जेफ्रोमी: आप जानते हैं कि क्या डरावना है? जब मैंने अपना संपादित उत्तर सबमिट करने से पहले टिप्पणी टाइप की, तो मैंने 'एड ...' टाइप करना शुरू किया, और मेरे कंप्यूटर पर फ़ायरफ़ॉक्स ने मुझे प्रस्ताव दिया: "जेफ्रोमी की टिप्पणी जोड़ें"। पहली बार मैं वहां नहीं रहा हूं, जाहिर है;) – VonC
स्वयं को ध्यान दें: यह भी देखें http://stackoverflow.com/questions/3209208/what-is-the-cleverest-use-of-source-repository-that-you सिमलिंक प्रस्ताव के लिए-कभी-कभी देखा/320 9 767 # 320 9 767 – VonC
क्या एक पूर्व-प्रतिबद्ध हुक उस मुख्य भंडार पर लिखे जा सकते हैं और इसके सभी क्लोनों पर लागू किया जा सकता है?
githooks(5)
से:
pre-commit This hook is invoked by git commit, and can be bypassed with --no-verify option.
के बाद से हुक आसानी से नजरअंदाज किया जा सकता है, ऐसा लगता है आपके सवाल का जवाब है "नहीं"।
इसके अलावा, चूंकि .git/hooks निर्देशिका को क्लोन नहीं किया गया है, इसलिए क्लाइंट को इसे धक्का देने के लिए एक तंत्र प्रतीत नहीं होता है।
आप पूर्व-प्रतिबद्ध हुक को स्थानीय स्थानीय भंडारों पर पर मजबूर नहीं कर सकते हैं, लेकिन आपके केंद्रीय रेपो में आप अभी भी एक प्री-प्राप्त हुक चला सकते हैं।
एफ। पूर्व मुझे यह सुनिश्चित करने की ज़रूरत है कि प्रतिबद्ध संदेशों ने कुछ नियमों (ट्रैक एकीकरण आदि के लिए) का पालन किया है, इसलिए मैंने निम्नलिखित पूर्व-प्राप्त हुक का उपयोग किया, जो प्रत्येक प्रतिबद्ध संदेश को केंद्रीय भंडार में धक्का दिया जाता है, और इनकार कर देगा अगर इसका स्वागत नहीं किया जाता है तो धक्का दें।
#!/bin/sh while read rev_old rev_new ref do MALFORMED="$(git rev-list --oneline $rev_old..$rev_new | egrep -v '#[0-9]+' | awk '{print $1}')" if [ x"$MALFORMED" != x ] then echo Invallid commit message on $MALFORMED exit 1 fi doneअधिक जानकारी के लिए
देख f.ex https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
मान लें कि आप अपना Git रेपो निर्माण प्रणाली के साथ जुड़े है कि में स्रोत कोड है, तो आप स्थापित करने के लिए निर्माण सिस्टम को कॉन्फ़िगर कर सकता है पूर्व के लिए प्रतिबद्ध हुक, यानी पूर्व-प्रतिबद्ध हुक को स्थानांतरित या लिंक करके ~ संस्करणित किया गया है।
मैंने अभी तक यह कोशिश नहीं की है। मैं एक बेहतर समाधान के लिए googling जबकि यहाँ आया था।
- 1. गिट हुक
- 2. गिट हुक: क्या क्लोन हुक है?
- 3. गिट पोस्ट-पुश हुक?
- 4. गिट हुक वाक्यविन्यास चेक
- 5. गिट: पोस्ट-प्राप्त हुक
- 6. गिट प्री-पुश हुक
- 7. गिट सबमिशन प्रतिबद्ध हुक
- 8. क्रॉस प्लेटफ़ॉर्म गिट हुक
- 9. गिट वैश्विक हुक अनुकूलन
- 10. बुनियादी गिट हुक को समझना
- 11. गिट हुक पोस्ट-मर्ज - त्रुटि:
- 12. गिट प्रतिबद्ध हुक - वैश्विक सेटिंग्स
- 13. गिट, हेरोकू: पूर्व-प्राप्त हुक
- 14. एक गिट पोस्ट-अपडेट हुक
- 15. हुक करने के लिए हुक या नहीं - गिट
- 16. क्या उपयोगकर्ता गिट हुक चलाता है?
- 17. एक बिटबकेट गिट प्रतिबद्ध हुक बनाएँ?
- 18. गिट हुक का परीक्षण कैसे करें
- 19. विलय विवादों के लिए गिट हुक
- 20. गिट हुक और नई शाखाएं प्राप्त/अद्यतन
- 21. पायथन/बैश स्क्रिप्ट्स में गिट हुक लिखना
- 22. संस्करण गिट और गिटोलाइट हुक कैसे करें?
- 23. गिट हुक - रिमोट रिपोजिटरी से प्रचार?
- 24. गिट प्री-हुक प्राप्त करने के लिए हुक प्री-हिप प्राप्त करें PHP CodeSniffer
- 25. हुक
- 26. प्री-प्रतिबद्ध हुक
- 27. गिटहब: एंटरप्राइज़ पोस्ट-हुक हुक
- 28. गिट हुक: जब शाखा उन्नत होती है तो कार्रवाई करें
- 29. गिट पोस्ट-प्राप्त हुक काम नहीं कर रहा
- 30. HTTP पर गिट पुश रिमोट हुक को सक्रिय नहीं करता
यदि आप * प्रवर्तन * चाहते हैं, तो केंद्रीय रिपो में एक अद्यतन हुक का उपयोग करें। यदि हुक प्रति प्रतिबद्ध सत्यापन कर रहा है, तो आप अभी भी प्री-प्रतिबद्ध हुक प्रदान कर सकते हैं; डेवलपर्स इसे स्वेच्छा से अपनाने की संभावना रखते हैं, ताकि जब तक वे धक्का देने की कोशिश न करें, तब तक वे कुछ गलत करने के बजाय तुरंत पता लगा सकते हैं। – Cascabel
संभावित डुप्लीकेट: (http://stackoverflow.com/questions/3462955/) और (http://stackoverflow.com/questions/427207/) – blong