जब gitflow का उपयोग किया जाता है तो एक रिलीज शाखा या मास्टर शाखा को टैग किया जाना चाहिए?


16

यह समस्या इंगित करती है कि:

विलय से पहले रिलीज़ शाखा पर टैग लगाने (और मास्टर शाखा पर नहीं) से मेरी समझ से वास्तव में ऐसा करने के लिए सही बात है, इसे विकसित शाखा से git वर्णन --tags द्वारा पाया जा सकता है। # 374 देखें

एक और पोस्ट करते समय :

मैंने आज होमबॉव के माध्यम से गलती से 0.4.2-पूर्व संस्करण स्थापित किया और उस संस्करण में टैगिंग के काम करने के तरीके से भ्रमित था। पहले (संस्करण 0.4.1) टैग को मास्टर शाखा पर बनाया गया था, रिलीज शाखा को इसमें विलय कर दिया गया था। अब ऐसा लगता है कि रिलीज़ ब्रांच के आखिरी कमिट पर टैग बनाया गया है, जो मेरे लिए अच्छा विचार नहीं है। विशेष रूप से यदि आपके पास एक बिल्ड-सिस्टम है जो गिट टैग पर निर्भर करता है और एक रिलीज संस्करण बनाता है यदि HEAD एक टैग की गई प्रतिबद्धता और एक विकास संस्करण है, तो इसके निम्न में से एक है। क्या कोई मुझे इस बदलाव के पीछे का तर्क समझा सकता है? और सिमेंटिक वर्जनिंग के संबंध में मैं इसे पैच-लेवल में एक वर्जन टक्कर नहीं मानूंगा!

हमारी टीम में हमने इस बारे में कई चर्चाएँ की हैं। कुछ संकेत देते हैं कि मास्टर शाखा से एक टैग बनाने की आवश्यकता है जबकि अन्य रिलीज शाखा को पसंद करते हैं। Gitflow चित्र के अनुसार:

यहाँ छवि विवरण दर्ज करें

ऐसा लगता है कि टैग मास्टर पर रखा गया है।


1
मुझे पता है कि गिटलैब शाखाओं पर टैग के साथ संघर्ष करता है जब आप पुरानी शाखाओं को दूर करते हैं, तो यह बेहतर होगा कि टैग मास्टर पर हो। अन्य गिट टूल्स के बारे में निश्चित नहीं है।
होरस्कॉक

'Gitflow' का तात्पर्य है कि यह (IMO खराब) वर्कफ़्लो मानक या आधिकारिक git वर्कफ़्लो है। यह नहीं है।
मील राउत

@MilesRout अपने पसंदीदा गिट वर्कफ़्लो क्या है?
0:30

मेरे मामले के लिए मैं ऐप के संस्करण को रिलीज़ करने के लिए git टैग के मूल्यों का उपयोग करता हूं, इसलिए मैं इसे रिलीज़ शाखा में बनाता हूं।
दो बार सोचें कोड एक बार

जवाबों:


16

सबसे पहले, आप शाखाओं को टैग नहीं कर सकते हैं, आप केवल टैग कर सकते हैं।

आपको वास्तव में जारी होने वाले कमिट को टैग करना चाहिए। यह संस्करण-टैगिंग की बात है। यदि आपके पास कुछ वातावरण (उत्पादन या अन्यथा) में आपके सॉफ़्टवेयर के साथ कोई समस्या है, तो आप विश्वास के साथ कह सकते हैं कि इस मुद्दे को इस प्रतिबद्धता के साथ पेश किया गया था कि रिलीज से प्राप्त किया गया था।

(यही कारण है कि लोग 'प्रतिलिपि प्रस्तुत करने योग्य बिल्ड' के बारे में बात करते हैं: इसलिए वे आश्वस्त हो सकते हैं कि उनकी रिहाई की प्रक्रिया नए बगों का परिचय नहीं दे रही है जो उनके पूर्वावलोकन / मंचन के वातावरण में मौजूद नहीं थे, और अगर उनके पास उत्पादन में बग है जब वे इसे डीबग करने जाते हैं, तो बाइनरी उनकी मशीन पर चल रही होती है।)

नीचे की ओर से दूसरी ग्रीन कमिट को टैग करने का कोई मतलब नहीं है (कमिटि का हरा बच्चा 'केवल बगफिक्स!') को 'v1.0' के रूप में चिह्नित किया गया है क्योंकि आपने उस उत्पादन को जारी नहीं किया था। आपने गुरु पर वचन जारी किया। आप यह भी देख सकते हैं कि गिट प्रवाह ने 'टैग 1.0' के रूप में चिह्नित किया है।

याद रखें, टैग का एक उद्देश्य है: आसानी से कमिट्स ढूंढना। आप 'v1.0' के रूप में एक कमेंट को टैग करते हैं ताकि आप उस चीज को आसानी से पा सकें जो आपने संस्करण 1.0 के रूप में जारी की है। आप इसे वास्तव में जारी किए गए वचनपत्र के निकट अस्पष्ट रूप से अपने प्रतिबद्ध पेड़ में कहीं भी 'v1.0' टैग होने के लिए टैग नहीं करते हैं।

यदि आपके पास अपनी विकास शाखा से टैग खोजने के मुद्दे हैं जो एक पूरी तरह से अलग मुद्दा है। उस उपकरण को ठीक करें जिसका उपयोग आप टैग खोजने के लिए करते हैं। या बेहतर अभी तक: गिट-प्रवाह का उपयोग न करें। प्यारे रंग के डॉट्स और अच्छी तरह से बिछाई गई लाइनों की वजह से यह उस आरेख में अच्छा लग रहा है, लेकिन वास्तव में यह रंगीन लाइनों और डॉट्स के एक पागल गड़बड़ वेब जैसा दिखता है।


3
You should tag the commit you actually release। इसलिए यदि उदाहरण के लिए 20 को जारी शाखा में निवास करने की आवश्यकता होती है और इस शाखा को मास्टर में विलय कर दिया जाता है, तो जो मर्ज कमेटी बनाई गई है उसे यह जानने के लिए टैग किया जाना चाहिए कि क्या जारी किया गया है?
0:30

1
हां, मर्ज कमिटमेंट को टैग किया जाएगा। Git प्रवाह का एक प्रकार के रूप में, मैं भी बनाने / एक अलग "संस्करण टक्कर प्रतिबद्ध" टैगिंग सीधे पर देखा हैbranch:master
rmharrison
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.