2009-06-09 10 views
7

मेरे पास दो शाखाओं के साथ एक गिट भंडार है; कोड के लिए एक जिसे विनिर्माण/परीक्षण और वास्तविक उत्पादन फर्मवेयर (वे लगभग समान हैं) के लिए उपयोग किया जाता है। अब निर्माता को भेजने के लिए रिलीज काटने का समय है, इसलिए मैं स्वाभाविक रूप से दोनों शाखाओं पर कुछ उचित टैग डालना चाहता हूं।गिट में कई शाखाएं टैग करें?

लेकिन, ऐसा लगता है कि गिट मुझे दोनों शाखाओं पर एक ही टैग नाम नहीं देगी। यदि मैं व्यक्तिगत रूप से शाखाओं को टैग करने का प्रयास करता हूं तो यह मुझे बताता है कि जब मैं सेकेंड शाखा टैग करता हूं तो टैग पहले से मौजूद है। मैंने गिट टैग में दो काम करने की कोशिश की, लेकिन इसे पसंद नहीं आया। मुझे लॉकस्टेप में हमेशा दो शाखाओं को टैग करने की आवश्यकता नहीं है, लेकिन मैं नाम टकराव से बचने के लिए टैग में यादृच्छिक वर्ण जोड़ना नहीं चाहता हूं।

क्या मैं चाहता हूं कि कोई काम करने का कोई तरीका है, या क्या मैं गलत काम करना चाहता हूं?


एक शाखा कोड उस डिवाइस पर निर्माण कहते हैं परीक्षण करने के लिए कि यह ठीक से इकट्ठा किया गया था। दूसरी शाखा वह कोड है जो उत्पाद में जहाज बनाती है। यह वास्तव में प्रति रिलीज दो शाखा नहीं है। यह इस उत्पाद के लिए पहली रिलीज है, और इसलिए पहले दोनों शाखाओं के लिए रिलीज है, इसलिए मैंने दोनों शाखाओं को 'रिलीज-1.0' के साथ टैग करने की कोशिश की।

उत्तर

13

आप गलत काम करना चाहते हैं। एक टैग का उद्देश्य अनजाने में एक विशेष संशोधन की पहचान करना है। अगर मैं आप थे, तो मैं केवल उत्पादन शाखा को टैग करता हूं और परीक्षण शाखा को अनचाहे छोड़ देता हूं।

हालांकि, यह बहुत अजीब बात है कि आपके पास प्रति रिलीज दो स्वतंत्र शाखाएं हैं। ऐसा क्यों है? उत्तर बेहतर समाधान का वर्णन करने में मदद कर सकता है।


के बाद से टैग वास्तव में एक ही संशोधन को इंगित करने वाले नहीं हैं, लेकिन (संभावित) विभिन्न संशोधन, टैग कुछ इस तरह होना चाहिए:

  • appname-1.0-manufacturing
  • appname-1.0-production

इस तरह, आपको पता चलेगा कि प्रत्येक टैग किस रिलीज से संबंधित है, साथ ही कोड समाप्त हो गया है।

+1

एक शाखा वह कोड है जो विनिर्माण उपकरण को यह जांचने के लिए रखती है कि इसे ठीक से इकट्ठा किया गया था। दूसरी शाखा वह कोड है जो उत्पाद में जहाज बनाती है। यह वास्तव में प्रति रिलीज दो शाखा नहीं है। यह इस उत्पाद के लिए पहली रिलीज है, और इसलिए पहले दोनों शाखाओं के लिए रिलीज है, इसलिए मैंने दोनों शाखाओं को 'रिलीज-1.0' के साथ टैग करने की कोशिश की। मुझे मूर्ख। –

+0

धन्यवाद, मैंने टिप्पणी के लिए उस अतिरिक्त जानकारी को जोड़ा है। –

+1

बीटीडब्ल्यू। टैग नाम पदानुक्रमित हो सकते हैं, इसलिए आप रिलीज-1.0 (या v1.0) और टेस्ट/रिलीज-1.0 –

5

एक टैग सिर्फ एक ही प्रतिबद्धता का नाम देता है, इसलिए नहीं, शायद आप जो चाहते हैं उसे करने का कोई तरीका नहीं है।

मुझे उत्सुकता है कि वांछित परिणाम क्या होगा। मेरा मतलब है, टैग का एक उद्देश्य एक ऐसा नाम होना है जिसे आप बाद में चेकआउट कर सकते हैं। तो यदि आप एक टैग पर git checkout जो दो शाखाओं को संदर्भित करता है .. क्या होता है?

+0

मैं सोच रहा था कि टैग मुझे उस समय की किसी भी शाखा के उपयुक्त संस्करण को प्राप्त करने की अनुमति देगा। मैंने उससे परे ज्यादा विचार नहीं किया। जाहिर है मुझे होना चाहिए। –

+0

यदि कोई टैग एक ही प्रतिबद्धता का नाम देता है, तो क्या होता है जब कोई विशेष रूप से चेरी को कई शाखाओं में उठाया जाता है? उस टैग को जांचने का क्या प्रभाव है? –

+0

टैग उस प्रतिबद्धता पर रहता है जिस पर इसे लागू किया गया था। एक चेरी पिक प्रत्येक अलग-अलग शाखाओं पर एक नई प्रतिबद्धता बनाता है। इन नए कामों में वही परिवर्तन होता है जो वे आए थे, लेकिन वे सभी अलग-अलग काम करते हैं। –

2

पार्टी के लिए देर से आ रहा है, लेकिन एक और विकल्प दो शाखाओं को विलय करना होगा, इसलिए किसी भी समय एक प्रतिबद्धता में परीक्षण कोड और उत्पादन कोड की स्थिति शामिल थी, मानते हुए कि वे विवादों के बिना सह-अस्तित्व में हो सकते हैं (इस मामले में यह कितना मुश्किल है कि विलय होगा कि यह प्रयास करने लायक होगा)। यह उन स्थितियों से बचने में भी मदद करेगा जहां आप गलती से गलत शाखा को टैग करते हैं, जैसा कि आप उन्हें टैग करते समय परीक्षण शाखा और उत्पादन शाखा को सिंक में रखने की कोशिश कर सकते हैं।

संबंधित मुद्दे