मैं Mercurial का उपयोग नहीं करता, लेकिन मैं शुरू करना चाहता हूं, इसलिए मैं इसके बारे में पढ़ रहा हूं। एकमात्र एससीएम प्रणाली जिसका मैंने बड़े पैमाने पर उपयोग किया है वह सीवीएस है। Mercurial के बारे में मैंने जो कुछ पढ़ा है, वह समझ में आता है, और अच्छा लगता है। लेकिन मैं वैकल्पिक रूप से चौंक गया हूं और इस तरह से परेशान हूं कि यह टैग करता है।मैं Mercurial में सभी टैग के बारे में हमेशा कैसे जान सकता हूं?
एक टैग सिर्फ एक changeset लिए एक उपनाम है (और 'changeset' से हम वास्तव में मतलब राज्य changeset से उत्पन्न)। ठंडा। टैग्स से चेंजेट आईडी में मैपिंग .hgtags
फ़ाइल में संग्रहीत है। भी शांत है। .hgtags
फ़ाइल का संस्करण है।
क्या?
यह counterintuitive परिणामों के बहुत सारे है। उदाहरण के लिए, यदि मैं एक परिवर्तन करता हूं जिसे मैं टैग करना चाहता हूं (कहें, कोड जो रिलीज 1.0 होगा), मुझे टैगिंग के बाद फिर से प्रतिबद्ध करना होगा, अद्यतन टैग फ़ाइल को भंडार में रखना होगा। और यदि मैं बाद में उस टैग किए गए परिवर्तन को कुछ बाद की तारीख में अपडेट करता हूं, तो कार्यशील प्रति में उस टैग का कोई ज्ञान नहीं होगा। अगर मैं कुछ काम करता हूं, इस प्रकार एक नई शाखा (कहें, बगफिक्स के लिए, 1.1 की तरफ बढ़ रहा है), उस शाखा को टैग के बारे में कोई जानकारी नहीं होगी, जिससे यह बढ़ता है। जब तक मैं इसे मैन्युअल रूप से कॉपी नहीं करता, वह है।
और जैसा कि विकास महत्वपूर्ण ट्रंक और मेरी नई शाखा दोनों पर जारी रहता है, महत्वपूर्ण परिवर्तनों को चिह्नित करने के लिए टैग बनाए जा रहे हैं (ट्रंक पर 2.0 रिलीज, 1.1 और 1.2 बगफिक्स शाखा पर रिलीज़), दोनों शाखाएं आगे बढ़ेगी अन्य शाखा के टैग की अज्ञानता। इसलिए, यदि मैं एक शाखा पर काम करना समाप्त करता हूं, और किसी अन्य बदलाव में स्विच करना चाहता हूं (कहें, मैं 1.2 बगफिक्स रिलीज को समाप्त करता हूं, लेकिन अब 2.0 के आधार पर 2.1 बगफिक्स पर शुरू करना है), अब मैं भरा हुआ हूं। मेरा वर्तमान परिवर्तन 2.0 के बारे में नहीं जानता!
मैं क्या कर सकता हूं?
- मैं किसी ऐसे व्यक्ति से पूछ सकता हूं जो 2.0 के लिए वास्तविक परिवर्तन आईडी को पढ़ने के लिए 2.x शाखा पर काम कर रहा है, और स्पष्ट रूप से इसका उपयोग करता है, लेकिन यह अपमानजनक है।
- मैं अपनी शाखाओं का नाम दे सकता हूं, साथ ही टैग का उपयोग कर सकता हूं, ताकि मैं 2.x शाखा के सिर पर जा सकूं, इस प्रकार नए टैग के बारे में सीख सकूं, और फिर 2.0 टैग पर वापस जा सकूं। यह मानते हुए कि टैग के विपरीत, शाखाएं सार्वभौमिक रूप से दिखाई देती हैं - क्या यह मामला है? यहां तक कि अगर यह है, यह गुंजाइश लगता है।
- मैं भंडार के बाहर एक भी वैश्विक
hgtags
फ़ाइल को बनाए रखने सकता है, और एक अद्यतन पर एक कॉपी में खींचने के लिए, स्थानीय प्रतिलिपि को अधिलेखित हुक के एक जोड़े का उपयोग करें, और एक प्रतिबद्ध पर किसी भी परिवर्तन वापस कॉपी करने के लिए। मुझे यकीन नहीं है कि यह एक बहु-उपयोगकर्ता वातावरण में कैसे काम करेगा, जहां डेवलपर्स एक साझा भंडार में परिवर्तन को दबा रहे हैं; मुझेhgtags
फ़ाइल के लिए एक अलग भंडार की आवश्यकता हो सकती है। - मैं स्थानीय टैग का उपयोग कर सकता हूं, जो संस्करण तंत्र के बाहर खड़ा है, और इसलिए पूरी समस्या से बचें। साझा वैश्विक टैग के साथ, मुझे डेवलपर्स के बीच
localtags
फ़ाइल को सिंक्रनाइज़ करने के लिए एक तंत्र स्थापित करना होगा।
इन समाधानों में से कोई भी पूरी तरह से महान लग रहे हैं। मुझे क्या करना चाहिए?
यहाँ एक धारणा है कि मैं एक भी भंडार में नामित शाखाओं का उपयोग कर शाखाओं प्रबंध कर रहा हूँ, बल्कि भंडार-प्रति-शाखा के अलावा है। अगर मैं बाद वाले करता तो क्या स्थिति बेहतर होगी?
@SilentGost: 'mergurial' टैग के बाद से मैंने 'hg' टैग हटा दिया है और अधिक उपयोग किया जाता है। लेकिन शायद यह एक गलती थी? –