एक पारंपरिक वीसीएस में, मैं समझ सकता हूं कि आप अनसुलझी फाइलें क्यों नहीं करेंगे, क्योंकि आप बिल्ड को तोड़ सकते हैं। हालांकि, मुझे समझ नहीं आता क्यों एक DVCS (उनमें से कुछ वास्तव में होगा में अनसुलझे फ़ाइलों के लिए प्रतिबद्ध नहीं करना चाहिए रोकने फ़ाइलें करने से आप)।
इसके बजाय, मुझे लगता है कि आपकी रिपॉजिटरी को धक्का देने और खींचने से बंद होना चाहिए , लेकिन कमिटिंग नहीं।
विलय प्रक्रिया के दौरान प्रतिबद्ध होने के कई फायदे हैं (जैसा कि मैं इसे देखता हूं):
- वास्तविक मर्ज परिवर्तन इतिहास में हैं।
- यदि मर्ज बहुत बड़ा था, तो आप समय-समय पर कमिट कर सकते थे।
- यदि आपने कोई गलती की है, तो वापस रोल करना आसान होगा (पूरे मर्ज को फिर से किए बिना)।
- फाइलों को तब तक अनसुलझे रखा जा सकता है जब तक कि उन्हें हल नहीं किया जाता। यह पुश / पुलिंग को रोकता है।
आप संभावित रूप से केवल एक एकल के बजाय मर्ज के रूप में परिवर्तन का एक सेट कार्य कर सकते हैं । यह आपको अभी भी जैसे उपकरण का उपयोग करने की अनुमति देगा git rerere
।
तो क्यों अनसुलझे फ़ाइलों के साथ प्रतिबद्ध है / पर रोका? क्या परंपरा के अलावा कोई कारण है?
hg 1.6
मर्ज के बाद कम से कम , फ़ाइलों को अनसुलझे के रूप में चिह्नित किया जाता है। hg
होगा नहीं करते हैं तो आप के लिए प्रतिबद्ध जब तक आप उन्हें हल में चिह्नित किया है (जरूरी मतलब नहीं है कि आप वास्तव में उन्हें हल करने के लिए है, लेकिन मैं विचार है कि ग्रहण करेंगे)।
hg
वास्तव में उन फ़ाइलों की एक सूची रखता है जिन्हें "हल" (उपयोग hg resolve
) के रूप में चिह्नित नहीं किया गया है । अगर U
इस सूची में कोई फाइल है, तो यह आपको कमिट नहीं होने देगा।
hg resolve
विशेष रूप से संघर्षों के साथ विलय के लिए उपयोग किया जाता है; selenic.com/mercurial/hg.1.html#resolve देखें । Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.