2011-03-24 9 views
30

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

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

मुझे नहीं लगता कि मैं विलय करना चाहता हूं और न ही मुझे चाहिए? मैं यह कैसे कर सकता हूं ताकि स्थानीय और रिमोट दोनों भ्रमित न हों?

+1

जब मैंने Mercurial के साथ काम करना शुरू किया, तो मेरे पास शाखा नामों को संभालने में समान प्रयास थे लेकिन [बेहतर करने की सलाह दी गई है] (http://stackoverflow.com/questions/1405604/managing-release-branches-in-mercurial)। –

उत्तर

24

बस feature-branchdefault में तो करीब feature-branch विलय:

$ hg checkout default 
$ hg merge feature-branch 
$ hg commit 
$ hg checkout feature-branch 
$ hg commit --close-branch 

कोई अधिक स्वच्छ और समझदार रास्ता (है कि मैं के बारे में पता कर रहा हूँ) के लिए "feature-branch डिफ़ॉल्ट बनाने" है।

एक बात यह है कि के रूप में अच्छा नहीं होगा, लेकिन तुम कर सकते हो, एक feature-branch के शीर्ष पर default के लिए प्रतिबद्ध बनाना है:

$ hg checkout feature-branch 
$ hg branch default 
$ hg commit 

लेकिन इस default शाखा, में दो सिर छोड़ना होगा जो उपोष्णकटिबंधीय है।

+0

स्विच और नाम बदलने की तरह कुछ और उम्मीद कर रहा था, लेकिन अगर ऐसा है तो यह हो! त्वरित प्रतिक्रिया के लिए धन्यवाद .. – dartdog

7

मैं डिफ़ॉल्ट शाखा बंद करके विलय के बिना सफल हुआ।

मेरे विकास भंडार काम कर निर्देशिका में

:

$ hg update default 

$ hg commit --close

फिर मेरे विकास शाखा नया डिफ़ॉल्ट शाखा बन गया। लेकिन मुझे नियम नहीं पता कि मेरी विकास शाखा को नए डिफ़ॉल्ट के रूप में क्यों चुना गया था। मुझे लगता है कि ऐसा इसलिए है क्योंकि यह मेरा टिप था? (या शायद आखिरी बदली शाखा? (टिप?))

मुझे यह भी लगता है कि आपको अगली बार दोहराना होगा। क्योंकि मुझे लगता है कि मेरा चयनित शाखा नाम 'डिफ़ॉल्ट' नाम से "अधिलेखित" था।

यह शाखा का नाम है करने के लिए अच्छा होगा।

देव-ProjectName-version.x = डिफ़ॉल्ट

संबंध

+0

एक और अच्छा दृष्टिकोण ... – dartdog

+0

बहुत बढ़िया उत्तर ... –

17

मर्क्युरियल 2.4 के बाद से, आप एक बुकमार्क @ और मर्क्युरियल कहा जाता है कि संशोधन नया क्लोन चेकआउट बना सकते हैं।

हालांकि, मैं अब भी शाखा जहां मुख्य विकास जगह लेता है के रूप में default उपयोग करने के साथ छड़ी करने की कोशिश करेगा। विकि describes the standard way to use branches मर्क्युरियल में - ऐसा करने से डेवलपर्स पहले से ही मर्क्युरियल करने के लिए इस्तेमाल के लिए आश्चर्य की बात है की कम से कम राशि का कारण होगा।

आप विकास के लिए मुख्य शाखा के रूप में default का उपयोग करने का पारंपरिक सलाह का पालन करें, तो आप अपनी सुविधा शाखा इससे पहले कि आप इसे वापस मर्ज बंद हो जाना चाहिए:

$ hg update feature-branch 
$ hg commit --close-branch -m "Feature done, merging into default branch" 
$ hg update default 
$ hg merge feature-branch 
$ hg commit 

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

$ hg merge --noninteractive --tool internal:local feature-branch 
$ hg revert --all --rev feature-branch 
बस ऊपर hg merge के बजाय

कर सकते हैं। यह सुनिश्चित करेगा कि default पर नई प्रतिबद्धता feature-branch पर अंतिम प्रतिबद्धता की तरह दिखती है।

+0

बुकमार्क जोड़ना काम नहीं करेगा: "निरस्त करें: एक बुकमार्क में मौजूदा शाखा का नाम नहीं हो सकता है" भले ही शाखा बंद हो (एचजी 2.7 .2) – bartekbrak

+0

@ user35186: हेड-अप के लिए धन्यवाद। मुझे लगता है कि यह प्रतिबंध बाद में जोड़ा गया था। सौभाग्य से, एक और तंत्र भी बाद में जोड़ा गया था: Mercurial अब स्वचालित रूप से नए क्लोन में '@' बुकमार्क चेकआउट करेगा। –

1

मैं केवल वही करना चाहता था जो आपने वर्णित किया और शिकार किया जब तक कि मुझे कोई जवाब न मिले जो कि आप जो वर्णन करते हैं, उसे करने के लिए रिवर्ट कमांड का उपयोग करता है। यहाँ कोड मैं प्रयोग किया जाता है:

एचजी वापस लौटने --all --rev $ {1}

एचजी -m प्रतिबद्ध "पुनर्स्थापित कर शाखा $ {1} डिफ़ॉल्ट के रूप में"

जहां $ {1} संशोधन या शाखा का नाम है। ये दो पंक्तियां वास्तव में एक बैश स्क्रिप्ट का हिस्सा हैं, लेकिन यदि आप इसे मैन्युअल रूप से करना चाहते हैं तो वे स्वयं ठीक काम करते हैं।

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

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