5

मैं मर्कुरियल में एक प्रोजेक्ट को स्टोर करना चाहता हूं जिसमें गिट और एसवीएन रिपॉजिटरीज़ से आने वाले बाहरी कोड (जिसे मेरे द्वारा संशोधित किया जा सकता है) शामिल है। एसवीएन में मैं इसे vendor branches के साथ हल कर दूंगा और कोड को कॉपी कर दूंगा, लेकिन मुझे समझ में आया कि Mercurial it's better to have different repositories for different projects में, और आवश्यकता होने पर उनके बीच खींचें।Mercurial "विक्रेता शाखाएं"?

परियोजना लेआउट इस तरह होगा:

 
- externalLibraryA [comes from a SVN repo] 
    - ...with some extra files from me 
- externalLibraryB [comes from a SVN repo] 
    - ...with some extra files from me 
    - externalPluginForExternalLibraryB [comes from a Git repo] 

सबवर्सन में मैं trunk में सही जगह में, vendor dir और एक trunk निर्देशिका बनाना होगा vendor में पहली सभी बाहरी पुस्तकालयों की नकल, और फिर। (मुझे लगता है) मैं इसे Mercurial में भी कर सकता हूं, subrepositories के साथ, लेकिन क्या यह करने का यह सबसे अच्छा तरीका है?

मैंने बाहरी पुस्तकालयों के लिए अलग-अलग भंडार स्थापित करने का प्रयास किया, लेकिन ऐसा लगता है कि मैं externalLibraryARepo को अपने मुख्य भंडार की externalLibraryA निर्देशिका में नहीं खींच सकता? यह मुख्य निर्देशिका में जाता है, जो मैं नहीं चाहता हूं। मैं एक मर्कुरियल मिरर रिपोजिटरी भी बना सकता हूं और इसे अपने मुख्य भंडार में सबरेपो के रूप में शामिल कर सकता हूं, लेकिन फिर इस उपनिर्देशिका में परिवर्तन दर्पण भंडार में जाते हैं, जबकि मैं उन्हें मुख्य भंडार में रहना चाहता हूं।

उत्तर

1

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

यदि अंतर्निहित समस्या आप हल करने की कोशिश कर रहे हैं, तो बाहरी तरीके को बाहरी तरीके से अपडेट करने का तरीका है, तो शायद मैं इसके लिए anonymous branching का उपयोग करूंगा।

आईई। अपनी परियोजना में बाहरी lib, और अपने संशोधन जोड़ें। सुनिश्चित करें कि यह काम करता है। बाहरी ए-वी 1.0 के साथ टैग करें। अपने वास्तविक परियोजना पर हैक दूर। अब बाहरी, इंक। में उनकी सामग्री का एक नया संस्करण है। अपने रेपो को बाहरी ए-वी 1.0 टैग पर अपडेट करें। अपने नए संस्करण को आयात करें और शीर्ष पर अपने संशोधन लागू करें। प्रतिबद्ध होते हैं। अब आपके पास दो सिर हैं: एक आपके कोड के नवीनतम संस्करण (जो बाहरी ए-वी 1.0 के साथ काम करता है) और एक बाहरी के नवीनतम संस्करण के साथ (जो आपके कोड के साथ काम नहीं करता है) हो सकता है। तो फिर आप दोनों को विलय और मेल खाते हैं। फिर से टैग करें, अब बाहरी-v2.0 के साथ। आवश्यकतानुसार दोहराएं।

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

1

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

इस दृष्टिकोण के लिए एक चेतावनी: यदि उपरोक्त क्षेत्र में सक्रिय विकास चल रहा है, तो इसे सीधे एक अलग क्लोन के रूप में उपनिवेशी को संपादित करने के लिए रखें, अन्यथा शीर्ष-स्तरीय भंडार पर ध्यान देना आवश्यक है ताकि आप अनजाने में अपने। hgsubstate को गलत संशोधन के लिए आगे बढ़ाएं और अपना निर्माण तोड़ें।

शीर्ष-स्तरीय भंडार (आपकी परियोजना) के विलयों के लिए देखें जो आपके उप-क्षेत्र की विभिन्न नामित शाखाओं को इंगित करते हैं, क्योंकि इसके परिणामस्वरूप उपनगरीय क्षेत्र में "विक्रेता" और "प्रोजेक्ट" शाखाओं के बीच विलय हो सकता है जैसा कि यह recurses, जो वांछनीय नहीं हो सकता है।

ध्यान दें कि यह कार्यक्षमता भविष्य में भी बदल सकती है, क्योंकि कुछ महीनों में कुछ "गर्म" चर्चाएं उपरोक्त क्षेत्र के पुनरावृत्ति के भविष्य के बारे में मर्कुरियल-डेवेल मेलिंग सूचियों पर हो रही हैं।

संपादित करें: मैं बस के साथ-साथ संबंधित लिंक में इस चर्चा को देखा है, जो प्रासंगिक लगता है: https://stackoverflow.com/a/3998791/1186771