आदर्श रूप से, हुक बैश में लिखे गए हैं, यदि आप नमूना फ़ाइलों का पालन करते हैं। लेकिन आप इसे उपलब्ध किसी भी भाषा में लिख सकते हैं, और बस यह सुनिश्चित करें कि इसमें निष्पादन योग्य झंडा हो।
तो, आप अपने लक्ष्यों को प्राप्त करने के लिए एक पायथन या गो कोड लिख सकते हैं, और इसे हुक फ़ोल्डर के नीचे रख सकते हैं। यह काम करेगा, लेकिन यह भंडार के साथ प्रबंधित नहीं किया जाएगा।
दो विकल्प
क) मल्टी लिपियों
आप अपनी मदद के अंदर अपने हुक को कोड कर सकते हैं, और अपनी सही स्क्रिप्ट को कॉल करने के लिए, हुक की एक छोटी सी टुकड़ी को इस तरह से जोड़ सकते हैं:
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/myprecommit.js
बी) एकल स्क्रिप्ट
एक कूलर विकल्प कई लोगों के बजाय उन सभी पर शासन करने के लिए सिर्फ एक स्क्रिप्ट जोड़ना है। तो, आप एक हुक / mysuperhook.go बनाते हैं और हर उस हुक को इंगित करते हैं जो आप चाहते हैं।
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/mysuperhook.go $(basename $0)
पैरामीटर आपकी स्क्रिप्ट प्रदान करेगा कि किस हुक को ट्रिगर किया गया था, और आप इसे अपने कोड के अंदर अंतर कर सकते हैं। क्यों? उदाहरण के लिए, कभी-कभी आप कमिट और पुश के लिए एक ही चेक चलाना चाहते हैं।
और तब?
फिर, आप आगे कार्य करना चाहते हो सकता है, जैसे:
- हुक को मैन्युअल रूप से जांचने के लिए ट्रिगर करें कि क्या सब कुछ एक कमिट या पुश से पहले ठीक है। यदि आप अपनी स्क्रिप्ट कहते हैं (विकल्प a या b) तो चाल चलेगी।
- CI पर ट्रिगर को ट्रिगर करता है, इसलिए आपको CI के लिए समान चेक को फिर से लिखने की आवश्यकता नहीं है, यह सिर्फ कमिट और पुश ट्रिगर को बुलाएगा, उदाहरण के लिए। ऊपर वाले को इसे हल करना चाहिए।
- बाहरी उपकरणों को कॉल करें, जैसे मार्कडाउन वैलिडेटर, या यम एलएलडी वेलेरेटर। आप syscalls कर सकते हैं और STDOUT और STDERR को संभालने की आवश्यकता है।
- सुनिश्चित करें कि सभी डेवलपर्स के पास हुक स्थापित करने का एक सरल तरीका है, इसलिए सही हुक के साथ डिफ़ॉल्ट हुक को बदलने के लिए भंडार में एक अच्छी स्क्रिप्ट को जोड़ने की आवश्यकता है
- कुछ वैश्विक सहायक हों, जैसे कि चेक को ब्लॉक करने और मास्टर शाखाओं को विकसित करने के लिए, इसे हर भंडार में जोड़ने के लिए नहीं। आप इसे वैश्विक स्क्रिप्ट के साथ एक और रिपॉजिटरी के द्वारा हल कर सकते हैं।
क्या यह सरल हो सकता है?
हां, गिट-हुक का प्रबंधन करने में आपकी मदद करने के लिए कई उपकरण हैं। उनमें से प्रत्येक एक अलग दृष्टिकोण से समस्या से निपटने के लिए तैयार है, और आपको उन सभी को समझने की आवश्यकता हो सकती है जो आपको या आपकी टीम के लिए सबसे अच्छा है। GitHooks.com हुकिंग के बारे में बहुत कुछ पढ़ने और आज उपलब्ध कई उपकरण प्रदान करता है।
आज तक, वहाँ 21 परियोजनाओं को सूचीबद्ध करने के लिए अलग-अलग रणनीतियों के साथ गिट हुक का प्रबंधन करना है। कुछ केवल एक ही हुक के लिए करते हैं, कुछ एक विशिष्ट भाषा के लिए, और इतने पर।
उन उपकरणों में से एक, जो मेरे द्वारा लिखे गए हैं और एक ओपनसोर्स प्रोजेक्ट के रूप में मुफ्त में पेश किए गए हैं, हुक कहते हैं । यह पायथन में लिखा गया है (क्योंकि मुझे यह पसंद है) लेकिन यह विचार एक एकल कॉन्फ़िगरेशन फ़ाइल में ऊपर सूचीबद्ध सभी वस्तुओं को संभालने के लिए है ।hooks4git.ini, जो आपके रिपॉजिटरी के अंदर रहता है और जिस भी स्क्रिप्ट को आप कॉल करना चाहते हैं, उसे किसी भी भाषा में कॉल कर सकते हैं। ।
गिट हुक का उपयोग करना बिल्कुल शानदार है, लेकिन जिस तरह से उन्हें पेश किया जाता है वह केवल लोगों को इससे दूर करता है।