में रिलीज शाखाओं का प्रबंधन हाल ही में मैंने एसवीएन से Mercurial में स्विच किया। अब मुझे आश्चर्य है कि अच्छे अभ्यास के अनुसार मर्कुरियल में मेरे इच्छित ब्रांचिंग कार्य प्रवाह को कैसे महसूस किया जाए, उम्मीद है कि अन्य डेवलपर्स को यह समझने की उम्मीद है कि भंडार में क्या होता है।Mercurial
- आमतौर पर मैं एक ट्रंक/डिफ़ॉल्ट शाखा जहां मौजूदा रिलीज श्रृंखला पर काम होता है:
इस काम प्रवाह है। मान लें कि 1.x है। उसी समय मैं अगली बड़ी रिलीज पर काम करने के लिए शाखा 2.x का उपयोग करता हूं। इस शाखा में परिवर्तन कट्टरपंथी हो सकते हैं, इसलिए ट्रंक/डिफ़ॉल्ट/1.x शाखा के साथ विलय करना कोई समझ नहीं आता है।
- 2.x पर थोड़ी देर के काम के बाद समाप्त हो सकता है और संस्करण 2.0 जारी हो जाता है। अब मैं चाहता हूं कि 2.x शाखा नई डिफ़ॉल्ट/ट्रंक शाखा हो और वर्तमान डिफ़ॉल्ट/ट्रंक 1.x शाखा हो।
- इस प्रक्रिया को दोहराते हुए, एक नई 3.x शाखा आ सकती है। पहले की तरह, यदि 3.0 जारी हो जाता है, तो 3.x को नई डिफ़ॉल्ट शाखा बननी चाहिए जबकि तत्कालीन वर्तमान डिफ़ॉल्ट 2.x शाखा (फिर से) बननी चाहिए।
मेरा प्रश्न नहीं है इस कार्य प्रवाह एक अच्छा एक (मुझे लगता है कि यह मौलिक रूप से गलत नहीं है) है या नहीं। मेरे प्रश्न यह है कि जिस तरह से मुझे मर्कुरियल में इसका एहसास है, उसे अच्छे अभ्यास के रूप में देखा जा सकता है या यदि बेहतर अवसर हैं।
$ hg init
$ echo "hello world" > file1.txt
$ hg ci -A -m "Initial commit of 1.x code"
:
तो यहाँ कैसे मैं मर्क्युरियल में शाखाओं का प्रबंधन करने के ...
एक एकल शाखा के साथ एक भंडार जो मौजूदा रिलीज श्रृंखला 1.x के कोड धारण से शुरू की योजना है (1.x)
$ hg branch 2.x
$ hg ci -m "Create new branch for 2.x development"
$ echo "Big new feature for 2.x" > file2.txt
$ hg ci -A -m "Add big new feature"
इस बीच, मौजूदा रिलीज श्रृंखला में कुछ काम करना: रिहाई 2.x पर काम शुरू
$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"
कुछ समय बाद रिलीज 2.0 तैयार है, yippee! डिफ़ॉल्ट शाखा 1.x करने के लिए डिफ़ॉल्ट करने के लिए और 2.x करें:
$ hg up default
$ hg branch 1.x
$ hg ci -m "Make default branch to 1.x branch"
$ hg up 2.x
$ hg ci --close-branch -m "Close branch 2.x"
$ hg branch --force default
$ hg ci -m "Make former 2.x branch to new default"
अब एक नई शाखा 3.x और उस में काम बनाने के लिए, यह भी डिफ़ॉल्ट पर काम । फिर, कुछ समय के 3.0 के बाद तैयार है और यह समय फिर से शाखा के नाम का प्रबंधन करने के लिए:
$ hg up default
$ hg branch --force 2.x # (reuse previously closed 2.x branch name)
$ hg ci -m "Make default branch to 2.x branch"
$ hg up 3.x
$ hg ci --close-branch -m "Close branch 3.x"
$ hg branch --force default
$ hg ci -m "Make former 3.x branch to new default"
अब रेपो कुछ ऐसा दिखाई देगा ('o' सिर कर रहे हैं):
o Branch default (3.x)
|
| o Branch 2.x
\|
| o Branch 1.x
\|
|
.
मुख्य बिंदु मुझे यकीन नहीं है कि शाखा नाम के साथ शाखा नाम और जुगलिंग का उपयोग कर रहा है डिफ़ॉल्ट अच्छा अभ्यास है।
उस प्रश्न के लिए बहुत सारे पाठ - क्षमा करें - लेकिन मैं यह जानना चाहता हूं कि मैं क्या कर रहा हूं।
[Mercurial विकी] (http://www.mercurial-scm.org/wiki/Standardbranching) इस विषय पर एक अच्छा परिचय प्रदान करता है। – xyres