सबसे बड़ा अंतर यह है कि इतिहास में शाखा के नाम कैसे दर्ज किए जाते हैं। नामित शाखाओं के साथ शाखा का नाम प्रत्येक बदलाव में अंतर्निहित है और इस प्रकार यह इतिहास का एक अपरिवर्तनीय हिस्सा बन जाएगा। क्लोनों के साथ कोई स्थायी रिकॉर्ड नहीं होगा जहां एक विशेष परिवर्तन आया था।
इसका मतलब है कि क्लोन त्वरित प्रयोगों के लिए महान हैं जहां आप एक शाखा का नाम रिकॉर्ड नहीं करना चाहते हैं, और नामित शाखाएं दीर्घकालिक शाखाओं ("1.x", "2.x" और इसी तरह) के लिए अच्छी हैं।
यह भी ध्यान दें कि एकल भंडार आसानी से मर्क्यूरियल में कई प्रकाश-भार शाखाओं को समायोजित कर सकता है। ऐसी-रिपॉजिटरी शाखाओं को बुकमार्क किया जा सकता है ताकि आप उन्हें आसानी से दोबारा पा सकें। मान लीजिए कि आपने कंपनी रिपॉजिटरी को क्लोन किया है जब यह इस तरह दिखता था:
[a] --- [b]
आप दूर हैक और बनाने [x]
और [y]
:
[a] --- [b] --- [x] --- [y]
किसी को कहते हैं, जबकि मीन [c]
और [d]
भंडार में, इसलिए जब आप खींच आप इस प्रकार का इतिहास ग्राफ मिलती है:
[x] --- [y]
/
[ऐ बी सी डी]
यहाँ एक एकल भंडार में दो प्रमुख हैं। आपकी वर्किंग कॉपी हमेशा एक सिंगल चेंज को दर्शाती है, तथाकथित वर्किंग कॉपी पैरेंट चेंजेस। इस के साथ की जाँच करें:
% hg parents
मान लीजिए कि यह रिपोर्ट करता है [y]
। आप के साथ सिर देख सकते हैं
% hg heads
और इस रिपोर्ट करेंगे [y]
और [d]
। यदि आप अपने रिपॉजिटरी को स्वच्छ चेकआउट के लिए अपडेट करना चाहते हैं [d]
, तो बस करें ( [d]
इसके लिए संशोधन संख्या के साथ विकल्प [d]
):
% hg update --clean [d]
फिर आपको वह hg parents
रिपोर्ट दिखाई देगी [d]
। इसका मतलब है कि आपकी अगली प्रतिबद्धता [d]
माता-पिता के रूप में होगी । आप मुख्य शाखा में देखे गए बग को ठीक कर सकते हैं और बदलाव कर सकते हैं [e]
:
[x] --- [y]
/
[a] --- [b] --- [c] --- [d] --- [e]
[e]
केवल बदलाव को आगे बढ़ाने के लिए , आपको करने की आवश्यकता है
% hg push -r [e]
जहाँ [e]
हैश हैश है। डिफ़ॉल्ट रूप से hg push
बस खजाने की तुलना करें और देखें कि होगा [x]
, [y]
और [e]
याद कर रहे हैं, लेकिन आप साझा करने के लिए नहीं चाहते हो सकता है [x]
और [y]
अभी तक।
यदि बगफिक्स भी आपको प्रभावित करता है, तो आप इसे अपनी सुविधा शाखा में मर्ज करना चाहते हैं:
% hg update [y]
% hg merge
इस तरह से यह देखने के लिए आपका रिपॉजिटरी ग्राफ निकल जाएगा:
[x] --- [y] ----------- [z]
/ /
[a] --- [b] --- [c] --- [d] --- [e]
जहाँ और के [z]
बीच मर्ज है । आप शाखा को फेंकने का विकल्प भी चुन सकते हैं:[y]
[e]
% hg strip [x]
इस कहानी का मेरा मुख्य बिंदु यह है: एक एकल क्लोन आसानी से विकास के कई मार्गों का प्रतिनिधित्व कर सकता है। यह हमेशा बिना किसी एक्सटेंशन के "सादे hg" के लिए सही रहा है। बुकमार्क विस्तार एक बहुत मदद, हालांकि है। यह आपको नाम (बुकमार्क) को बदलने के लिए असाइन करने की अनुमति देगा। ऊपर के मामले में आप अपने विकास के प्रमुख पर एक बुकमार्क और ऊपर की तरफ एक सिर चाहते हैं। बुकमार्क्स को मर्क्यूरियल 1.6 के साथ धकेला और खींचा जा सकता है और मर्क्यूरियल 1.8 में बिल्ट-इन फीचर बन गया है।
यदि आपने दो क्लोन बनाने का विकल्प चुना था, तो आपके विकास क्लोन बनाने के बाद इस तरह दिखेंगे [x]
और [y]
:
[a] --- [b] --- [x] --- [y]
और आपके अपस्ट्रीम क्लोन में होगा:
[a] --- [b] --- [c] --- [d]
अब आप बग को नोटिस करते हैं और उसे ठीक करते हैं। यहाँ आप के hg update
बाद से नहीं है क्योंकि नदी के ऊपर क्लोन उपयोग करने के लिए तैयार है। आप प्रतिबद्ध और बनाएँ [e]
:
[a] --- [b] --- [c] --- [d] --- [e]
अपने विकास क्लोन में बगफिक्स को शामिल करने के लिए आप इसे वहां खींचते हैं:
[a] --- [b] --- [x] --- [y]
\
[c] --- [d] --- [e]
और मर्ज करें:
[a] --- [b] --- [x] --- [y] --- [z]
\ /
[c] --- [d] --- [e]
ग्राफ अलग दिख सकता है, लेकिन इसकी संरचना समान है और अंतिम परिणाम समान है। क्लोन का उपयोग करके आपको कम मानसिक बहीखाता करना पड़ता था।
नामांकित शाखाएं वास्तव में यहां तस्वीर में नहीं आईं क्योंकि वे काफी वैकल्पिक हैं। नामांकित शाखाओं का उपयोग करने से पहले हम वर्षों तक दो खंडों का उपयोग करके Mercurial का विकास किया गया था। हम 'डिफ़ॉल्ट' शाखा के अलावा 'स्थिर' नामक शाखा को बनाए रखते हैं और 'स्थिर' शाखा के आधार पर अपनी रिलीज़ करते हैं। अनुशंसित वर्कफ़्लो के विवरण के लिए विकी में मानक शाखा पृष्ठ देखें ।