2010-04-25 6 views
19

मैं एक एचजी परियोजना में कुछ प्रयोगात्मक काम करना चाहता हूं। तो मैं शाखा बनाना चाहता हूं, इसे प्रतिबद्ध करता हूं। और यदि प्रयोग काम करता है, तो मैं इसे वापस मुख्य शाखा में विलय कर सकता हूं।एचजी में एक शाखा पर कैसे विकसित किया जाए?

Git में, मैं क्या कर सकते हैं

$ git branch experimental 
$ git checkout experimental 
(edit file) 
$ git commit -a 
$ git checkout master 

मैं A Guide to Branching in Mercurial पढ़ा है। यह कहा hg branch feature। लेकिन अगला क्या है? मैं पालन नहीं करता हूं।

उत्तर

24
$ hg branch experimental 

(edit file) 
$ hg commit 
$ hg update default 
+0

क्या मुझे 'एचजी शाखा प्रयोगात्मक' करने से पहले 'डिफ़ॉल्ट' में किए गए सभी परिवर्तनों को करने की आवश्यकता है? – michael

+1

हाँ - आप मानते हैं कि लंबित परिवर्तन डिफ़ॉल्ट शाखा में जाना चाहते हैं। अन्यथा, लंबित परिवर्तन उस शाखा में आपका अनुसरण करते हैं जिसे आपने "प्रयोगात्मक" नाम दिया है, और आप उन्हें वहां प्रतिबद्ध कर सकते हैं। – sblom

+0

आपको यहां भी डिफ़ॉल्ट रूप से अपडेट करने के बाद "एचजी प्रयोगात्मक विलय" करने की आवश्यकता होगी, मुझे विश्वास है। – jacobbaer

8

यदि यह एक बड़ी सुविधा नहीं है (यानी शाखा का नाम नहीं है), यह काफी सरल है।

मान लीजिए कि आपका भंडार परिवर्तनशील एक्स पर है। आप इस सुविधा पर जितना चाहें उतना काम करते हैं, प्रतिबद्ध करते हैं, प्रतिबद्ध करते हैं, प्रतिबद्ध करते हैं और यदि आप परिणाम से खुश हैं, तो जारी रखें जैसे कि आप जानते थे कि यह सभी के साथ काम करेगा। ;) यदि आप खुश नहीं हैं, तो hg update X करें और वहां से विकास जारी रखें। आपके प्रयोग पर किए गए सभी काम एक अज्ञात शाखा बन जाएंगे।

आश्चर्यजनक रूप से पर्याप्त, यह appears कि गिट अज्ञात शाखाओं के साथ काम करने का ऐसा तरीका प्रदान नहीं करता है जो आपको भ्रमित कर सकता है।

+1

इसके अलावा, विशेष रूप से एचजी विकी में Mercurial दस्तावेज, इस क्षेत्र में थोड़ा अपरिहार्य और संभावित रूप से भ्रमित है। आप 'अज्ञात शाखाओं' कह रहे हैं, मर्कुरियल कॉल 'हेड' के मामले हैं। एक 'सिर' बच्चे के बिना एक परिवर्तन है। एक परिवर्तन हमेशा एक और केवल एक नाम शाखा से संबंधित है; यह डिफ़ॉल्ट शाखा हो सकती है, जिसका नाम 'डिफ़ॉल्ट' है। एक नामित शाखा में कम से कम एक 'सिर' होता है लेकिन इसमें अधिक हो सकता है। 'एचजी अपडेट एक्स' और एक प्रतिबद्धता करके, आप नामित शाखा में एक नया सिर बनाते हैं जिसके लिए एक्स संबंधित है, लेकिन सिर 'शाखा' के एचजी की भावना में शाखा नहीं है। –

+1

मुझे यकीन नहीं है कि आप सही हैं: Mercurial शाखाओं के पत्ते संशोधन "सिर" कॉल करता है और "अज्ञात शाखाओं" शाखाओं को बुलाता है जिन्हें स्पष्ट रूप से नामित नहीं किया गया है। तथ्य यह है कि "नामित शाखा" में आमतौर पर कई अज्ञात शाखाएं होती हैं जो किसी को आसानी से समझने में मदद नहीं करती हैं, लेकिन इस तरह यह काम करता है ... –

+1

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

20

सबसे पहले ध्यान दें कि git branchअलगhg branch से है। hg branch के साथ बनाई गई शाखाएं स्थायी हैं और वैश्विक नाम स्थान पर रहते हैं, जबकि git branch के साथ बनाई गई शाखाएं क्षणिक हैं। git branch का निकटतम समतुल्य hg bookmark है: बुकमार्क का नाम बदलकर हटाया जा सकता है और गिट-शाखाओं की तरह व्यवहार कर सकता है।

मैंने हाल ही में guide for Mercurial bookmarks लिखा है। named branch guide के साथ इसकी तुलना करें। दोनों गाइडों में विकास के ट्रैक रखने के लिए Mercurial में शाखाओं का उपयोग (नामित) शाखाओं का उपयोग करने के उदाहरण हैं। यह दिखाता है कि शाखाओं को कैसे विलय करना है और उन्हें कैसे बंद करना है या जब आप पूरा कर लें तो बुकमार्क को हटाएं।

+0

नामित शाखाओं के लिए उपयोगी चलना, हालांकि यह अज्ञात शाखाओं के बारे में जागरूक होना भी उपयोगी है (जैसा कि टॉमस्लाव बताता है)। –

+1

+1 @ मार्टिन गिसलर। आपकी शाखा के माध्यम से चलना उत्कृष्ट है। – klabranche

+0

-1: लिंक टूटा हुआ है, अगर आप इसे ठीक करते हैं तो मैं इस पोस्ट को +1 कर दूंगा। –