ग्लोबल गिट हुक


4

क्या गिट रेपो बनाने के सभी तरीकों को हुक करना संभव है? इसलिए मैं स्क्रिप्ट चला सकता हूं जब रेपो को क्लोन किया जाता है, आरंभीकृत किया जाता है ... (क्या फ़ोल्डर को स्थानांतरित / कॉपी करने के अलावा कोई अन्य तरीके हैं?)।

मेरा इरादा सभी रिपोज को ट्रैक करना है, इसलिए मुझे कुछ कार्रवाई चलाने के लिए सभी डायरियों से गुजरने की जरूरत नहीं है (मुख्य git statusरूप से जैसा कि मैं कभी-कभी परिवर्तन करना भूल जाता हूं और git gc --auto)।

जवाबों:


5

हुक (वर्तमान में) विशेष रूप से प्रति-रिपॉजिटरी कॉन्फ़िगर किए गए हैं, इसलिए रिपॉजिटरी बनने से पहले कोई सक्रिय हुक नहीं हो सकता है।

यदि आप अभी कुछ नए रिपॉजिटरी विशिष्ट सेटिंग्स को सभी नए रिपॉजिटरी के लिए पहचानना चाहते हैं, तो आप रिपॉजिटरी टेम्पलेट तंत्र का उपयोग करने में सक्षम हो सकते हैं ।

अपने खुद के टेम्पलेट का उपयोग करके आप कर सकते हैं

  • सक्रिय हुक स्थापित करें (एक <template‑dir>/hooks/<hook‑name>फ़ाइल प्रदान करके ),
  • कॉन्फ़िगरेशन चर सेट करें (एक <template‑dir>/configफ़ाइल प्रदान करके ), और
  • प्रति-रिपॉजिटरी कॉन्फ़िगर करें नियमों या विशेषताओं को (एक <template‑dir>/info/excludeया <template‑dir/info/attributes>फ़ाइल प्रदान करके )।

कोई भी कॉन्फ़िगरेशन फ़ाइल जो एक .gitनिर्देशिका में रहती है , उसे टेम्पलेट से आरंभिक नई रिपॉजिटरी में उस फ़ाइल की प्रारंभिक प्रतिलिपि के रूप में सेवा करने के लिए एक टेम्पलेट में रखा जा सकता है। मुझे लगता है कि आप भी प्रारंभिक वस्तुओं और रेफरी प्रदान कर सकता है।

एक बार जब आपके पास अपने कस्टमाइज़ेशन के साथ एक टेम्प्लेट डायरेक्टरी बन जाती है, तो आपको उसे बताना होगा git initऔर उसे git cloneकहां खोजना है। यह --templateविकल्प के साथ स्पष्ट रूप से किया जा सकता है (0.99.4 या बाद में) या GIT_TEMPLATE_DIRपर्यावरण चर (Git 1.5.0 या बाद में) के साथ स्पष्ट रूप से, या init.templatedir"वैश्विक" (प्रति उपयोगकर्ता) में कॉन्फ़िगरेशन चर सेट करके स्पष्ट रूप से किया जा सकता है "सिस्टम" Git विन्यास फाइल ( ~/.gitconfigया /etc/gitconfig(अधिष्ठापन द्वारा बदलता है); Git 1.7.1 या बाद में)।


उत्तर के लिए धन्यवाद, लेकिन यह वह नहीं है जिसकी मुझे तलाश थी: मैं सभी रिपॉजिट को ट्रैक करना चाहता हूं, मैंने सवाल के बारे में अपने इरादे के बारे में लाइन जोड़ दी।
बाघ

0

आप git repos को "ट्रैक" नहीं कर सकते हैं (जैसा कि "कुछ केंद्रीय संदर्भात्मक वर्तमान में सक्रिय git रेपो की सूची पूछते हैं)।
प्रत्येक git रेपो दूसरे से स्वतंत्र होता है।

दो समाधानों पर विचार किया जा सकता है:

  • एक क्रिस टेम्पलेट के रूप में क्रिस के जवाब में, एक ग्राहक-साइड हुक के साथ , पहले उपयोग पर, कुछ "केंद्रीय" फ़ाइल में गिट रेपो को पंजीकृत करने के लिए।
    उस फ़ाइल को तब एक बाहरी स्क्रिप्ट (बाहरी से जीआईटी) द्वारा पढ़ा जाएगा, ताकि वह प्रासंगिक हो git statusया git gcजिसे आप चाहते हैं।

  • यदि आपके सभी git repos समान सामान्य निर्देशिका के तहत घोषित किए जाते हैं, तो आप एक वैश्विक पैरेंट git रेपो घोषित कर सकते हैं और सभी उप-रेपो को सबमॉड्यूल के रूप में जोड़ सकते हैं । Git1.7.0 के
    बाद से , जानता है कि जब एक सबमॉड्यूल में अनक्मिटेडgit status परिवर्तन होते हैं।


नोट: इस पर git submodules, एक पूरी तरह से पूर्ण परिचय है: longair.net/blog/2010/06/02/02/git-submodules-explained
VonC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.