2012-05-08 10 views
8

Mercurial में शाखा के लिए प्रतिबद्ध एक का नाम बदलें - इसे बनाने के बाद और स्थानीय स्तर पर और केंद्रीय रेपो में किए जाने के बाद शाखा के नाम को पूरा करने के लिए क्या कदम शामिल हैं।Mercurial

उदाहरण के लिए, मैं एक शाखा ज़ेल्डा बुलाया बना लिया है और उसके बाद के लिए प्रतिबद्ध है और एक केंद्रीय भंडार को धक्का दे दिया। अब मैं शाखा का नाम ट्रिफॉर्स में बदलना चाहता हूं।

क्या कोई ऐसा एक्सटेंशन है जो इसे पूरा करता है? किसी भी विस्तार समाधान के अलावा लंबा रास्ता क्या हो सकता है?

+3

शायद यह धागा का जवाब फिट बैठता है: http://stackoverflow.com/questions/4378684/mercurial-can-i-rename-a-branch – birryree

उत्तर

10

संक्षिप्त उत्तर कोई है।

लंबा उत्तर यह है कि, Mercurial शाखाएं नाम परिवर्तनों से जुड़ी हैं। आप शाखा Zelda और दिया है (यानी, केंद्रीय रेपो को धक्का दे) करने के लिए प्रतिबद्ध कई changesets है, तो कोई रास्ता नहीं आप इन changesets फिर से बनाने, जो इतिहास को फिर से लिखने का मतलब है बिना उस शाखा का नाम बदल सकते हैं।

यहां तक ​​कि अगर तुम दोनों आप रेपो में और केंद्रीय रेपो में उन लोगों के changesets निकाल देते हैं, तो उन्हें शाखा को Triforce संबंधित के रूप में फिर से बनाने, और "का नाम बदलकर" शाखा फिर से धक्का आपके सहयोगी के सभी खत्म हो जाएगा शाखा Zelda पर एक सेट changesets की दो प्रतियां, एक और होने शाखा Triforce पर।

तो हाँ, आपको क्या करना चाहिए https://stackoverflow.com/a/7245187/67988 में वर्णित है। वहां से उद्धरण के लिए, अपने शाखा नामों में समायोजित करने के लिए, यानी ज़ेल्डा पुरानी शाखा बंद होनी चाहिए और ट्राइफॉर्स नई शाखा बनाई जानी चाहिए।

hg update zelda 
hg commit --close-branch -m "mgmt: Close branch zelda" 
hg branch triforce 
hg commit -m "mgmt: Create branch triforce" 
hg push --new-branch 

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

+1

अच्छा जवाब। लेकिन मैं 'ट्राइफॉर्स' खोलने से पहले 'ज़ेल्डा' बंद कर दूंगा और इसलिए इतिहास रैखिक रखूंगा। मुझे लगता है कि क्लीनर दिखता है। –

+0

@ मार्टिन गिसलर: मुझे याद है कि शाखाओं के साथ कुछ समस्याएं चल रही हैं, जिस तरह से आप सुझाव देते हैं। जहां तक ​​मुझे याद है, एचजीवेब में, शाखाएं जो बंद थीं, लेकिन बंद होने वाले समापन परिवर्तन के साथ निष्क्रिय, बंद नहीं थे। मुझे नहीं पता, शायद यह एक बग था जिसे बाद में तय किया गया है, लेकिन मैं आमतौर पर सुरक्षित पक्ष पर रहने के लिए अकेले बंद परिवर्तन को छोड़ देता हूं। – Helgi

+1

Mercurial के आधुनिक संस्करणों में, एक * बंद * शाखा hgweb में एक बेहोश रंग के साथ दिखाया गया है। एक * निष्क्रिय * शाखा अलग-अलग स्टाइल नहीं होती है, कम से कम "पेपर" नामक डिफ़ॉल्ट शैली से नहीं। विलय से पहले बंद होने का अर्थ यह भी है कि आपको अपने इतिहास में कम स्थलीय सिर मिलते हैं। कुछ प्रोटोकॉल अनुरोध सभी टोपोलॉजिकल हेड के हैंश भेजते हैं, इसलिए सिर की संख्या सीमित करने से प्रदर्शन में मदद मिल सकती है। यह मामला होता था कि कई सिर हमारे HTTP अनुरोधों को सामान्य वेबसर्वर द्वारा अनुमत अधिकतम लंबाई से अधिक कर सकते हैं, लेकिन अब हम इसके बजाय HTTP शीर्षलेख में डेटा भेजते हैं। –