2011-03-01 10 views
7

में विघटन के ऊपर विभाजन मैंने कुछ महीने पहले एक सबवर्जन भंडार को Mercurial में परिवर्तित कर दिया और मैं अपने संशोधन इतिहास में दो अर्थहीन अंतराल छोड़ने घायल हो गया। मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या मैं अंतराल पर सिर्फ विभाजित कर सकता हूं, लेकिन मैं जो भी चाहता हूं उसे ठीक करने के लिए उपकरण नहीं प्राप्त कर पा रहा हूं।Mercurial भंडार समयरेखा

मैंने प्रोजेक्ट के शुरुआती दिनों में सबवर्सन रेपो दो बार पुनर्गठित किया था: सबसे पहले एक परियोजना रूट को ट्रंक/शाखाओं/टैग लेआउट में परिवर्तित करने के लिए, और उसके बाद दूसरे रूट फ़ोल्डर में दूसरी संबंधित परियोजना को जोड़ने के लिए ट्रंक/शाखाओं/टैग।

जब तक मैंने Mercurial में स्विच करने का फैसला किया, वहां पहली, मूल परियोजना के ट्रंक के बाहर कोई महत्वपूर्ण विकास गतिविधि नहीं थी। मैं नए Mercurial भंडार में एक समझदार ट्रंक को फिर से इकट्ठा करने के लिए Mercurial रूपांतरण उपयोगिताओं और पथ मैपिंग का उपयोग करने में सक्षम था, या तो मैंने सोचा।

अब मुझे पता है मैं दो अतिरिक्त सिर है, प्रत्येक जहां परिवर्तन इतिहास अनिवार्य रूप से शुरू होती है करने के लिए इसी:

r0 ... r16 | (r17) r18 ... r61 | (r62) r63 ... tip 

टूटता है, R17 और R62 के बाद दो संशोधनों के परिणाम, सामग्री में समान हैं ब्रेक से पहले इसी संशोधन के लिए - वे पिछले संशोधन के समान सामग्री के साथ पूरी तरह से फ़ाइल ऐड ऑपरेशंस के होते हैं। अर्थपूर्ण परिवर्तन केवल अगले संशोधन (आर 18 और आर 63 क्रमशः) में शुरू होते हैं।

मैं R17 और R62 से अधिक विवाह करने की कोशिश में मर्क्युरियल प्रत्यारोपण विस्तार के साथ गड़बड़ है, लेकिन यह (इस बिंदु पर R405) डिफ़ॉल्ट शाखा की नोक पर सभी तरह spliced ​​changesets श्रृंखलाबद्ध अप हवाएँ।

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

क्या कोई इस बात से संपर्क करने के बारे में कोई सलाह दे सकता है? क्या मैं सिर्फ झंडे को गलत कर रहा हूं, या क्या मैं गलत उपकरण का उपयोग कर रहा हूं? क्या मुझे इसके बजाय रीबेस एक्सटेंशन का उपयोग करना चाहिए? किसी प्रकार की डंप-एडिट डंपफाइल-रीलोड प्रक्रिया के बारे में क्या है जिसे हम सब सबवर्जन के साथ करते थे?

जबकि मैंने प्रोजेक्ट को अपने विकास सर्वर पर प्रकाशित किया है, वहां केवल कुछ क्लोन हैं, इसलिए उन प्रतियों को नष्ट करना और पुनः दावा करना एक बड़ा सौदा नहीं होना चाहिए।

+1

मैं reposurgeon में देख सुझाव है: http://esr.ibiblio.org/?p=2718 –

+0

धन्यवाद ... मैं उसकी समीक्षा करेंगे। – bpanulla

+0

रीबेस, कोशिश करने लायक काम कर सकता है। – tonfa

उत्तर

5

एक्सटेंशन आदेश rebase और collapse चाल चलाना चाहिए।

$ hg glog -p 

o changeset: 3:bc701d12d956 
| tag:   tip 
| summary:  hack 
| 
| diff --git a/file b/file 
| --- a/file 
| +++ b/file 
| @@ -1,1 +1,1 @@ 
| -hello world 
| +hello big world 
| 
o changeset: 2:2bb8c95d978e 
    parent:  -1:000000000000 
    summary:  history breaking svn reorganization 

    diff --git a/file b/file 
    new file mode 100644 
    --- /dev/null 
    +++ b/file 
    @@ -0,0 +1,1 @@ 
    +hello world 

@ changeset: 1:b578b2ec776b 
| summary:  hack 
| 
| diff --git a/file b/file 
| --- a/file 
| +++ b/file 
| @@ -1,1 +1,1 @@ 
| -hello 
| +hello world 
| 
o changeset: 0:c3d20f0b7072 
    summary:  initial 

    diff --git a/file b/file 
    new file mode 100644 
    --- /dev/null 
    +++ b/file 
    @@ -0,0 +1,1 @@ 
    +hello 

यह मूल रूप से अपनी स्थिति जैसा दिखता है, यानी इतिहास है, जहां दूसरी पंक्ति (r2) के पहले संशोधन में सब कुछ मौजूद एक सादे ऐड है की दो असंबंधित लाइनों देखते हैं: एक उदाहरण के रूप में निम्नलिखित छोटे भंडार पर विचार करें पहली पंक्ति का अंतिम संशोधन (आर 1)।

आप rebase के साथ पहली बार एक पर दूसरी पंक्ति रख सकते हैं:

$ hg rebase -s 2 -d 1 
$ hg glog 

@ changeset: 3:020d1b20caa8 
| summary:  hack 
| 
o changeset: 2:2a44eb4b74c3 
| summary:  history breaking svn reorganization (empty changeset now) 
| 
o changeset: 1:b578b2ec776b 
| summary:  hack 
| 
o changeset: 0:c3d20f0b7072 
    summary:  initial 

जैसा कि आप देख, दो पंक्तियों में शामिल हो गए की है। संशोधन 2 अब एक अप्रचलित खाली परिवर्तन है। आप संशोधन 1 और 2 गठबंधन करने के लिए collapse आदेश का उपयोग करके इसे से छुटकारा पाने के कर सकते हैं:

$ hg collapse -r 1:2 
<edit commit message> 
$ hg glog -p 

@ changeset: 2:d283fe96a5e6 
| tag:   tip 
| summary:  hack 
| 
| diff --git a/file b/file 
| --- a/file 
| +++ b/file 
| @@ -1,1 +1,1 @@ 
| -hello world 
| +hello big world 
| 
o changeset: 1:c486d8191bf0 
| summary:  hack 
| 
| diff --git a/file b/file 
| --- a/file 
| +++ b/file 
| @@ -1,1 +1,1 @@ 
| -hello 
| +hello world 
| 
o changeset: 0:c3d20f0b7072 
    summary:  initial 

    diff --git a/file b/file 
    new file mode 100644 
    --- /dev/null 
    +++ b/file 
    @@ -0,0 +1,1 @@ 
    +hello 

अब इतिहास के असंबंधित लाइनों एक सार्थक तरीके से जुड़े हुए हैं।

+0

जब रिबेस आदेश चलाकर, मैं जो संस्करणों कुछ फ़ाइलों के रखने के लिए के बारे में संकेत मिलेगा, और मुझे यकीन है कि क्या इस फैसले के संदर्भ है नहीं कर रहा हूँ: "स्थानीय बदल src/com/foo/बार/baz.txt जो रिमोट हटाया उपयोग (सी) फांसी संस्करण या (डी) elete? " मेरा अनुमान है कि यह सफल changesets के माध्यम से काम कर रहा है, और उस समय मुझे यकीन है कि कैसे मैं जवाब देने के लिए माना जाता रहा हूँ नहीं हूँ। – bpanulla

+0

अगर आप रीडिंग से पहले अपनी कार्यशील प्रतिलिपि साफ़ करते हैं तो यह संदेश दूर जाना चाहिए। 'एचजी अपडेट नल' चलाएं। संदेश शायद दिखाई दिया क्योंकि अपने काम की नकल अवांछित सिर संशोधन (R16 या अपने उदाहरण में R61) में से एक में था और इस प्रकार निहित जो बाद में लेकिन तकनीकी रूप से असंबंधित लाइनों में से एक में एक बाद संशोधन में हटा दिया गया है फ़ाइलों। –

+0

मैं अपनी परियोजना के एक स्वच्छ क्लोन पर काम कर रहा हूं, इसलिए यह मुद्दा नहीं था। कुछ बदलावों में फ़ाइल नामों के साथ इसका कुछ संबंध हो सकता है। मुझे लगता है कि विलय तर्क नहीं है (नहीं कर सकता) पता है कि कौन सा रखना है, इसलिए यह संकेत देता है। – bpanulla

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