2012-05-04 16 views
24

मेरे पास 3 रेपो, ए, बी और सी हैं, जो सभी एक ही परियोजना से संबंधित हैं। ए परियोजना का सबसे पुराना संस्करण है, बी एक प्रयोग है जो वास्तव में कहीं भी नहीं जाता है और सी नवीनतम कामकाजी संस्करण है। इन सभी repos में अलग-अलग फाइलें हैं - वे एक ही उत्पाद के विभिन्न कार्यान्वयन हैं।दो अलग-अलग भंडारों को विलय करना

मैं इन 3 रिपोज़ को अपने इतिहास को बनाए रखने में विलय करना चाहता हूं - यह महत्वपूर्ण है। मुझे लगता है कि मैं बी के शीर्ष पर ए और सी के शीर्ष पर बी को ढेर करना चाहता हूं लेकिन जब मैं प्रोजेक्ट को चेकआउट करता हूं तो मैं केवल रेपो सी

से संबंधित परिवर्तन प्राप्त करना चाहता हूं मेरा विचार एक नामित शाखा को टैग या बनाना है ए, एचजी आरएम *, प्रतिबद्ध और फिर शीर्ष पर ढेर बी। बी के साथ दोहराएं ताकि मैं सी को ढेर कर सकूं और फिर सामान्य रूप से प्रोजेक्ट पर जारी रख सकूं।

आपको क्या लगता है? इसके अलावा, मैं जो करना चाहता हूं उसके लिए कुछ प्रेरणा: 1, 2

+3

http://stackoverflow.com/q/12843/950708 – andruso

उत्तर

30

आप केवल एक बड़े भंडार में परिवर्तनों को खींच सकते हैं। एक रेपो से शुरू करें:

$ hg init combined 
$ cd combined 
$ hg pull ../A 
$ hg update 

फिर जबरन बी में खींच सकते हैं और डमी मर्ज दो सिर ताकि आप बी से फ़ाइलों को रखना:

$ hg pull ../C --force 
$ hg merge --tool internal:other 
$ hg revert --all --rev tip 
$ hg commit -m "Merge B and C, kept C" 
:

$ hg pull ../B --force 
$ hg merge --tool internal:other 
$ hg revert --all --rev tip 
$ hg commit -m "Merge A and B, kept B" 

तो सी के लिए दोहराएँ

यह आपको इतिहास की तीन पंक्तियां और एक विलय बिंदु देता है जहां आप पहले ए को फेंक देते हैं, फिर बी, और आखिरकार सी

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

मैं पहले विकल्प के साथ जाऊंगा: यह सबसे स्पष्ट है और इतिहास को झुकाव (परिवर्तित) किए बिना क्या होता है सबसे अच्छा दिखाता है।

+0

का संभावित डुप्लिकेट जब मैं वापस लौटाता हूं - पहली बार यह अनदेखा विलय के साथ बंद होता है जिसमें कोई संशोधन निर्दिष्ट नहीं होता है। – ruipacheco

+0

@ कोकोस्टर: इसके बारे में खेद है, मैं आदेश में '--rev' भूल गया। मैंने एक बेहतर कमांड के साथ फिर से लिखा है। –

+0

इसके अलावा, क्या आप सी के लिए "एचजी अपडेट टिप" नहीं खो रहे हैं? – ruipacheco

संबंधित मुद्दे