git submodule
एक खोल स्क्रिप्ट के रूप में कार्यान्वित किया जाता है, तो यह देखने के लिए कि यह क्या कर रहा है आसान है - यह /usr/lib/git-core/git-submodule
में हो सकता है आप एक पैक संस्करण का उपयोग कर रहे हैं। मूलतः यह सिर्फ submodule अगर यह वस्तु का नाम (sha1sum) मुख्य परियोजना के पेड़ संस्करण से मेल नहीं खाता में जमा हो जाती submodule में बाहर की जाँच की, Koraktor points out के रूप में git-fetch
चलाता है।
documentation for git fetch
(या man git-fetch
जबकि kernel.org नीचे है) का कहना है कि यह हर टैग जो डाउनलोड किए वस्तु की ओर इशारा करता लाने चाहिए, और डाउनलोड की वस्तुओं में शामिल होंगे हर प्रतिबद्ध है कि हर शाखा है, जो प्राप्त किया गया है के एक पूर्वज है। इसका मतलब है कि यह मेरे लिए आश्चर्य की बात है कि आपको git submodule update
पर सभी प्रासंगिक टैग नहीं मिलते हैं।
यदि ऐसा है कि आप वास्तव में चाहते हैं कि आपकी स्क्रिप्ट के लिए एक नया सबमिशन संस्करण सेट करने का प्रयास करें और परिणाम न दें, तो मुझे नहीं लगता कि git submodule update
वह टूल है जो आप चाहते हैं - यह सुनिश्चित करने के लिए है कि वर्तमान में मुख्य परियोजना के प्रतिबद्धता के आधार पर आपके सबमिड्यूल सही संस्करण पर हैं। इसके बजाय आप बस की तरह कुछ करना चाहिए:
(cd my-submodule && \
git fetch && \
git fetch --tags && \
git checkout my-tag)
git add my-submodule
git commit -m 'Update the submodule to the "my-tag" version' my-submodule
(मैं एक अतिरिक्त git fetch --tags
just in case अपने टैग जोड़ा एक जो डाउनलोड करने के लिए अंक नहीं है।)
जाहिर है एक और संभावना है - कम से submodule बात करने के लिए प्रतिबद्ध है जो टैग अंक के बजाय टैग से भी है, लेकिन इस के रूप में साफ प्रतीत नहीं होता।
ठीक है, केवल एक चीज है कि submodule के लिए मुख्य परियोजना के पेड़ में संग्रह किया गया है सिर्फ प्रतिबद्ध वस्तु के हैश है, इसलिए भले ही एक आदेश है कि ने कहा, "कि submodule में टैग my-tag
करने के लिए अपने submodule सेट थे ", यह वैसे भी उस टैग के अनुरूप हैश को संग्रहीत करेगा ...
स्रोत
2011-09-22 06:32:39
आपकी सभी मदद के लिए धन्यवाद - ऐसा लगता है कि मेरी समस्या यह है कि जो प्रतिबद्धता मैं चाहता था वह किसी भी शाखा के इतिहास में नहीं है। क्या आपको लगता है कि एक अच्छा कारण है कि 'गिट सबमिशन अपडेट' केवल 'गिट फ़ेच' करता है, न कि 'गिट फ़ेच --टैग'? 'गिट फ़ेच - टैग्स' जोड़ना इस समस्या को भविष्य में आने वाले किसी भी व्यक्ति के लिए सॉर्ट करेगा। जब kernel.org बैक अप लेता है तो मुझे इसकी रिपोर्ट करने के लिए कहीं मिल जाएगा। –
@ डंकनपार्क्स गिट शुरू करना 1.9/2.0 (क्यू 1 2014), 'गिट फ़ेच --टैग' पर्याप्त होगा ('गिट फ़ेच' जोड़ने की कोई आवश्यकता नहीं है): http://stackoverflow.com/a/20608181/6309 – VonC