2011-06-27 9 views
6

का उपयोग कर सभी उप-रेपॉजिटरीज़ को रिकर्सिव रूप से टैग करें क्या मुख्य अभिभावक भंडार को टैग करना संभव है और टैग को सभी सब-रिपॉजिटरीज़ में भी जोड़ा गया है?Mercurial

इसके बिना अगर मैं उप-भंडार के रूप में एक परियोजना को हटाने के लिए कभी भी था और इसे अपने आप तक पहुंचता तो यह सभी टैग जानकारी खो देता है क्योंकि यह केवल माता-पिता रेपो से संबंधित है।

उत्तर

2

शायद यह संभव है, लेकिन थोड़ा मुश्किल है। अतिरिक्त जानकारी एकत्र करने और hg tag पर अतिरिक्त कॉल करने में सहायता के लिए आपको मूल रूप से tag उपयोगिता (शायद एक मर्कुरियल एक्सटेंशन के रूप में) लिखना होगा। मैं एक एक्सटेंशन लिखते समय एपीआई के बारे में ज्यादा नहीं जानता, हालांकि, जो भी विचार मैं ऑफ़र करता हूं वह सीधे hg को कमांड के साथ कॉल करने पर आधारित होगा।

डिफ़ॉल्ट रूप से जब आप मुख्य भंडार पर प्रतिबद्ध होते हैं, तो subrepositories पहले प्रतिबद्ध होते हैं। तो यह प्रत्येक subrepo के लिए नए changeset आईडी लेता है और इस तरह एक प्रारूप में .hgsubstate फ़ाइल में उन्हें कहते हैं:

77ba00000fe8e9ca033d97dc07b85a50dd106837 nested 

पुनरावर्ती टैगिंग के रूप में यह changeset में था .hgsubstate फ़ाइल की सामग्री को प्राप्त करने के लिए की आवश्यकता होगी आप मुख्य भंडार में टैगिंग कर रहे हैं। आप hg revert के बारे में सोच सकते हैं, लेकिन यह एक बुरा विचार होगा, क्योंकि यह आसानी से आपकी कार्यशील निर्देशिका को जोड़ सकता है (hg इसे किसी भी तरह से .hgsubstate पर करना पसंद नहीं करता है)। इसके लिए आपकी सबसे अच्छी शर्त फ़ाइल पर + लाइनों के परिणामस्वरूप भिन्नता को संशोधित करने के लिए hg export कर रही है।

फिर आप hg -R <subrepopath> tag -r <id> <tag> पर कॉल करने के लिए उनमें से प्रत्येक से चेंजसेट आईडी और सबरेपो नाम ले लेंगे। और निश्चित रूप से, अंत में मुख्य रेपो टैग करें।

अभी भी इसके साथ संभावित समस्याएं हैं, जिन चीजों को आपको अवगत रहना होगा या यह पता लगाना होगा कि कैसे रहना है। उदाहरण के लिए: यदि आप मुख्य रेपो पर प्रतिबद्ध हैं लेकिन 1 या अधिक subrepos पर नहीं है तो क्या होता है? अब आपके पास मुख्य रेपो पर एक से अधिक परिवर्तन हैं, जहां .hgsubstate subrepo पर एक ही परिवर्तन आईडी सूचीबद्ध करता है। इसलिए यदि आप मुख्य रेपो पर दोनों को टैग करते हैं, तो सबरेपो में परिवर्तन में 2 टैग होंगे।

मैं TortoisHg 2.0.5 w/Mercurial 1.8.4 का उपयोग कर रहा हूं। अपने आप को उप-उपनिवेशों को टैग करना मुख्य रेपो पर प्रतिबद्ध करने की कोई आवश्यकता नहीं उत्पन्न करता है, इसे ज्यादातर ठीक काम करना चाहिए।