आप एचजी विलय को एक उपवर्तन भंडार में धक्का नहीं दे सकते, क्योंकि एसवीएन उन्हें समझ नहीं सकता है। आपको नवीनतम एसवीएन प्रतिबद्धता के शीर्ष पर अपने परिवर्तनों को पुन: पेश करने की आवश्यकता है।
संपादित कदम इतिहास समतल:
चेतावनी, मर्ज के बहुत सारे है के लिए तैयार रहना विरोध करता है
आप MQ की जरूरत है और rebase विस्तार सक्रिय
पहला कदम बनाने के लिए है एक बैकअप रेपो, क्योंकि आपको आगामी मर्ज विवादों के संदर्भ के रूप में इसकी आवश्यकता होगी (उनमें से कई की उम्मीद है)।
अपने ग्राफ इस तरह दिखता है कहते हैं:
C1--C2--C3------M1--C5--C6--C7---M2--
\ /\ /
\--B1--B2--/ \--B3--B4-B5-/
फिर दूसरे चरण के लिए सी 3 के शीर्ष पर बी 1 + बी 2 rebase के लिए है: hg rebase -b B2 -d C3
-b
के लिए शुरू के रूप में दोनों शाखाओं के आम आधार का उपयोग शाखा को पुनर्जीवित करने के लिए, इसलिए मर्क्योरियल पाता है कि बी 1 पहली विचलन प्रतिबद्धता है, जब भी आप बी 2 को रिबेस करने के लिए कहते हैं, तब भी इसका उपयोग करता है। -d
पुनर्स्थापित शाखा का गंतव्य निर्दिष्ट करता है।
वेन आप विलय विवादों का सामना करते हैं तो सुनिश्चित करें कि बी 2 '= एम 1 का परिणाम, अन्यथा आपको निम्नलिखित संशोधनों में बहुत से संघर्ष मिलेंगे।
बाद में मर्ज एम 1 चला गया है और अपने ग्राफ इस तरह दिखता है:
C1--C2--C3--B1'--B2'--C5'--C6'--C7'---M2'--
\ /
\--B3'--B4'-B5'-/
और अब आप कर दूसरे मर्ज के लिए एक ही: hg rebase -b B3' -d C7'
, जो इस तरह अपने रेपो देखो बनाता है:
C1--C2--C3--B1'--B2'--C5'--C6'--C7'--B3''--B4''--B5''
तब तक दोहराएं जब तक आपके पास एक रैखिक संस्करण इतिहास न हो।
इतिहास को चकित करने के बाद आपको svn प्रतिबद्धताओं के शीर्ष पर अपने कामों को फिर से व्यवस्थित करने की आवश्यकता है। अपने रेपो अब लग रहा है इस तरह कहो (एस = तोड़फोड़ करने, सी = स्थानीय प्रतिबद्ध):
S1--S2--S3--C1--C2--S4--S5--C3-C4--C5--C6--C7--S6--S7
अब तुम एक तेज कतार (hg qimport -rC1:
) गुणा (सहित) से सी 1 सब कुछ आयात करते हैं। सभी बनाए गए पैच देखने के लिए hg qseries
का उपयोग करें।
फिर आप सभी पैच (hg qgoto C1.diff [this is the first one in qseries]
, hg qpop
के बाद) को अनुपयुक्त करते हैं। फिर आप उपversण को हटाते हैं (hg qdelete S4.diff S5.diff S6.diff S7.diff
)।
अब svn commits (hg pull »svn-remote«
) को फिर से लाने का समय है। फिर आप सभी स्थानीय पैच को दोबारा दोहराएं, एक hg qpush
के साथ, और सभी विलय विवादों को ठीक करें जो अब हो रहे हैं। जब आप एक संघर्ष के साथ होते हैं, तो आप वर्तमान पैच को hg qfinish -a
के साथ एक मेरबुरियल प्रतिबद्धता में ले जा सकते हैं, और अपना वर्तमान स्थिति hg push »svn-remote«
के साथ भेज सकते हैं।
ठीक है, मैंने इसे बाद में अन्य पोस्टों से इकट्ठा किया है। तो, मैं पहले से ही क्या कर चुका हूं इसे ठीक कर सकता हूं? (वास्तव में मेरा मूल प्रश्न कौन सा था) –
अहह, सही। मैंने यह पता लगाने का प्रयास किया था कि इसे रीबेस और पतन का उपयोग करके कैसे किया जाए, लेकिन सही आदेश नहीं थे। यह एक महान कैसे है, धन्यवाद। चूंकि मुझे जल्द ही बाद में एसवीएन के लिए अपना कोड प्राप्त करना पड़ा, मैं आगे बढ़ गया और मेरे बदले रेपो बनाम डिफ़ॉल्ट एसवीएन का एक एसवीएन डिफ बनाया, और इसे एक ही प्रतिबद्ध के रूप में लागू किया। इतिहास एसवीएन के लिए खो गया है, लेकिन आपकी पोस्ट के लिए धन्यवाद, अब मैं जानता हूं कि भविष्य में इसे कैसे सुधारें यदि यह फिर से होता है। चीयर्स –
@ जोन सामान्य एचजी सर्वोत्तम प्रथाओं के खिलाफ एसवीएन जुड़े रेपो पर अलग-अलग इतिहास को विलय करना बेहतर नहीं होता है। जब आप एक svn repo से खींचने के बाद अपने काम को दोबारा दबाते हैं, तो आप बाद में एक संभावित धक्कादायक स्थिति में हैं। सहायता के लिए – Rudi