Mercurial: क्या मैं एक शाखा का नाम बदल सकता हूँ?




branch dvcs (4)

अब हमारे पास "स्टिगिंग" शाखा है, जहां "स्टेजिंग" एक बेहतर बेहतर अर्थपूर्ण फिट प्रतीत होता है। इसे संभालने के लिए एक अच्छी रणनीति क्या है?


"स्टेजिंग" नामक एक नई शाखा बनाएं और दूसरे को भूल जाएं ...


भविष्य के पाठकों के लिए: rebase एक्सटेंशन के साथ, आप एक ही माता-पिता के साथ एक नई शाखा बना सकते हैं जैसे कि पूरे शाखा इतिहास को इसमें stiging और स्थानांतरित करें:

hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging

यह मानता है कि stiging में केवल एक माता पिता है। बेशक आप इसके बजाय स्पष्ट संशोधन संख्या का उपयोग कर सकते हैं।

नोट 1: यदि शाखा में stiging में अन्य शाखाओं के साथ विलय शामिल है, तो मुझे लगता है कि यह उन्हें संरक्षित रखेगा, जब तक कि staging और stiging में एक ही माता-पिता हों। लेकिन मैं निश्चित रूप से दोबारा जांच करूँगा।

नोट 2: चूंकि यह इतिहास संपादित करता है, इसलिए पुरानी शाखा क्लोन रिपोजिटरी से गायब नहीं होगी ( rebase दस्तावेज़ देखें)। जब तक कि हर कोई फिर से क्लोन नहीं कर सकता, यह एक बड़े समूह के लिए एक बहुत ही व्यावहारिक समाधान नहीं हो सकता है।

नोट 3 / संपादित करें (@JasonRCoombs की सौजन्य): अब वह phases Mercurial में मानक हैं, रीबेज उन परिवर्तनों को संशोधित करने से इंकार कर देगा जो पहले ही धकेल चुके हैं। या तो चरण को वापस ड्राफ्ट ( hg phases साथ) में बदलकर इसे hg phases , या पुरानी शाखा को जहां रहें, और बस एक उचित नामित प्रतिलिपि बनाएं (उदाहरण के लिए, 'एचजी रीबेज - रखरखाव' के साथ)।


यह इतिहास को संशोधित करता है और केवल उन्नत Mercurial उपयोगकर्ताओं के लिए है। अगर आप नहीं जानते कि इसका क्या अर्थ है तो ऐसा मत करो।

अगर स्टिगिंग केवल स्थानीय है, तो आप इसे graft और strip संयोजन के साथ स्टेजिंग में बदल सकते हैं। पूर्वजों के परिवर्तन को अद्यतन करके शुरू करें जहां स्टिगिंग अलग हो गई थी। स्टेजिंग शाखा बनाने और प्रत्येक प्रतिबद्धता को स्टेगिंग से लेकर स्टेजिंग तक बनाएं। स्टेजिंग अब stiging की एक प्रति होना चाहिए। अंत में, अपनी पहली प्रतिबद्धता को अलग करके कड़वाहट को नष्ट कर दें।

hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch

stiging शाखा में अपडेट करें और stiging एक नई शाखा बनाएं। फिर पुरानी शाखा बंद करें।

संक्षेप में:

hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch




dvcs