क्या जीआईटी टैग के लिए एक मानक नामकरण सम्मेलन है? [बन्द है]


229

मैंने v1.2.3जीआईटी में टैग के लिए नामकरण सम्मेलन का उपयोग करते हुए बहुत सी परियोजनाएं देखी हैं । मैंने कुछ उपयोग भी देखा है 1.2.3। क्या कोई आधिकारिक रूप से समर्थित शैली है, या तो उपयोग करने के लिए कोई अच्छा तर्क है?


19
43 अपवोट्स और काउंटिंग के साथ, मैं सोच रहा हूं कि क्या यह बहुत मूल्यवान प्रश्न फिर से तैयार किया जा सकता है और फिर से खोला जा सकता है, कुछ जवाब के साथ सभी बिंदुओं को एक अच्छे सारांश में जोड़कर सबसे ऊपर होगा? @ पीटरइसेन्ट्राट सबसे अधिक पूर्ण प्रतीत होता है; जबकि स्वीकृत उत्तर एटीएम थोड़ा भ्रामक लगता है। (मुझे लगता है कि मैं सभी बिंदुओं को पढ़ने के बाद स्वयं टैग के लिए v1.2.3 का उपयोग करूंगा।)
HostileFork का कहना है कि SE

1
SO कोड तय करने के लिए है। सर्वोत्तम प्रथाएं सॉफ्टवेयरइंजीनियरिंग.स्टैकएक्सचेंज डॉट कॉम
सीस

Semver.org (शब्दार्थ संस्करण) पर एक नज़र डालें , जिससे आपको कुछ विचार मिलें
वॉनब्रांड

मेरा अनुभव मुझे एक अलग योजना का उपयोग करने के लिए कहता है। 1. उपनिर्देशिका: एक जीआईटी टैग कम से कम v/इस समूह टैग में टैग के साथ शुरू होना चाहिए । 2. आदर्श रूप से, एक टैग में एक परिचित भी होना चाहिए जो ऐप की विशिष्ट पहचान करता है। उदा v/myapp/1.0। इससे गिट रिपोजिटरी विलय आसान हो जाता है: यदि ऐप्स मर्ज हो जाएंगे, तो टैग नाम स्थान में टैग नहीं टकराएंगे।
कुल्हाड़ी

जवाबों:


166

GitHub प्रसिद्धि के टॉम प्रेस्टन-वर्नर द्वारा शब्दार्थ संस्करण का संस्करण 1.0.0 , इसका एक उप-विनिर्देश पता था:

टैगिंग विशिष्टता (SemVerTag)

यदि आप अपने कोड को संग्रहीत करने के लिए संस्करण नियंत्रण प्रणाली (Git, Mercurial, SVN, आदि) का उपयोग करते हैं तो इस उप-विनिर्देशन का उपयोग किया जाना चाहिए। इस प्रणाली का उपयोग करने से स्वचालित उपकरण आपके पैकेज का निरीक्षण कर सकते हैं और वीवीआर अनुपालन और जारी किए गए संस्करणों को निर्धारित कर सकते हैं।

  1. जब एक संस्करण नियंत्रण प्रणाली में टैगिंग जारी होती है, तो एक संस्करण के लिए टैग "vX.YZ" होना चाहिए, जैसे "v3.1.0"

हालांकि, चर्चा के बाद इसे हटा दिया गया था, और यह अब सेमी वीयर के नवीनतम संस्करण में मौजूद नहीं है (लेखन के समय 2.0.0)। एक ही स्थान पर बाद में चर्चा धागा अधिक गहराई में चला गया, और एक नए संस्करण "v1.2.3" के परिणामस्वरूप एक शब्दार्थ संस्करण है? सेमर की शाखा में एफएक्यू में जोड़ा जा रहा है master, हालांकि लेखन के समय (2 साल बाद) यह परिवर्तन अभी भी आधिकारिक रूप से जारी किए गए चश्मे में मौजूद नहीं है


9
धन्यवाद - वह बहुत करीब है। काश वह योग्य होता है क्योंv वहाँ हालांकि होना चाहिए।
troelskn

3
@troelskn @mojombo == टॉम प्रेस्टन-वर्नर
पेरिटस

4
अपडेटेड लिंक: github.com/mojombo/semver.org/issues/1
जोश ली

41
सिमेंटिक संस्करण 1.0.0 प्रारूप "v1.2.3" का उपयोग करता है। सिमेंटिक वर्जनिंग 2.0.0-rc.1 शायद प्रारूप "1.2.3" का उपयोग करता है। टैगिंग विशिष्टता (SemVerTag) लेख को स्पेक्स से हटा दिया गया था। यहां अधिक: semver.org
petrnohejl

9
यह उत्तर पुराने सेमर (संस्करण 1.0) के अस्तित्व में होने पर किया जाता है। आजकल उपसर्ग v2.0 से उपसर्ग 'v' हटा दिया गया है। जानकारी के लिए नीचे पोस्ट देखें।
महत्वपूर्ण

111

प्रतीत होता है कि दो प्रभुत्वशाली सम्मेलन हैं (यह मानते हुए कि आप स्वयं को रिलीज़ करने के लिए कुछ उचित मानक का पालन करते हैं):

  • v1.2.3
  • 1.2.3

लाभ v1.2.3यह है कि Git प्रलेखन (और मर्क्यूरियल दस्तावेज़ीकरण) उस प्रारूप का उपयोग इसके उदाहरणों में करता है, और यह कि कई "प्राधिकरण" जैसे कि लिनक्स कर्नेल और Git स्वयं इसका उपयोग करते हैं। (उल्लिखित शब्दार्थ संस्करण का उपयोग करने के लिए किया गया था, लेकिन अब और नहीं हुआ।)

लाभ यह है 1.2.3कि gitweb या GitHub स्वचालित रूप से फॉर्म का एक टारबॉल या ज़िप डाउनलोड की पेशकश कर सकता है packagename-$tag.tar.gz(और मुझे लगता है कि यह काफी स्थापित है कि टारबॉल का नाम नहीं होना चाहिए package-v1.2.3.tar.gz)। वैकल्पिक रूप से, आप git describeटारबॉल संस्करण संख्या उत्पन्न करने के लिए सीधे उपयोग कर सकते हैं । एक औपचारिक रिलीज प्रक्रिया के बिना हल्के परियोजनाओं के लिए, ये संभावनाएं काफी सुविधाजनक हो सकती हैं। यह भी ध्यान दिया जाना चाहिए कि सिमेंटिक वर्जनिंग का अर्थ है केवल वर्जन नंबरिंग के लिए या केवल एक सार्वभौमिक रूप से स्वीकृत मानक। और उल्लेखनीय परियोजनाएं जैसे कि गनोम और साथ ही अनगिनत अन्य परियोजनाएं 1.2.3नामकरण का उपयोग करती हैं ।

मुझे लगता है कि इन पदों को मजबूत करने में शायद बहुत देर हो चुकी है। हमेशा की तरह, सुसंगत रहें और समझदारी बनाएं।


अपडेट: जैसा कि इस टिप्पणी में बताया गया है , GitHub अब टैग के 'v' छीनने के साथ एक टारबॉल नाम प्रदान करता है।


13
GitHub और टारबॉल पीढ़ी के बारे में: यह अब प्रासंगिक नहीं है। वे टैग से 'v' छीन लेते हैं।
हरमन बीर

6
वर्णमाला क्रम में टैग छँटाई करते समय tags v ’का उपसर्ग करना भी काफी उपयोगी होता है। अन्य टैग भी मौजूद हो सकते हैं; चाहे आधिकारिक तौर पर मास्टर रिपॉजिटरी में या स्थानीय रूप से किसी डेवलपर के काम को ट्रैक करने के लिए। 'V' उपसर्गों के साथ रिलीज टैग बाकी के नामस्थानों पर बिखरे होने के बजाय, अपना समूह बनाते हैं।
रॉबी बसक

1
उस उत्तर को दर्शाने के लिए अद्यतन करें जो अब SemVer उपयोग नहीं करता है v
एडम स्पियर्स

80

पूर्ववर्ती 'वि ’का कारण ऐतिहासिक है। पुराने SCCS (cv, rcs) एक टैग पहचानकर्ता और एक संशोधन संख्या के बीच अंतर नहीं कर सके। टैग पहचानकर्ताओं को एक संख्यात्मक मान के साथ शुरू नहीं करने के लिए प्रतिबंधित किया गया था ताकि संशोधन संख्या का पता लगाया जा सके।


5
+1: मेरा पहला पसंदीदा उत्तर और मेरी पसंदीदा पुस्तकों में से एक नाम :-) शायद आपका अगला उत्तर एक अधिक वर्तमान प्रश्न पर होगा, हालांकि।
१२:

1
... लेकिन अगर यह पुराने SVCS के लिए ही सही है , तो क्या होगा अगर आधुनिक Git के बारे में एक प्रश्न के लिए इस उत्तर का मतलब है?
मेस्टेरलियन

3
यह अभी भी गिट में उपयोगी है, इसलिए आप आसानी से संस्करण टैग्स को भेद कर सकते हैं, अन्य प्रकार के टैगों से (टैग कई अन्य चीजों के लिए उपयोगी हैं)
बेंज

19

मेरी जानकारी में नहीं।
लेकिन Git एक ही समय में एक टैग और एक ही नाम की एक शाखा की अनुमति नहीं देगा, इसलिए यदि आपके पास " 1.1" 1.1कार्यों के लिए एक शाखा है , तो टैग " 1.1", उदाहरण के लिए उपयोग न करें " v1.1"


8
शाखाओं के लिए उपयोग करें 1.1.x. बस।
जीवन शक्ति

1
अच्छी पकड़, धन्यवाद।
RY

10

नए पैकेज प्रबंधक उपसर्ग के बिना संस्करणों को टैग करने की सलाह देते हैं v(जैसे PHP परियोजनाओं के लिए संगीतकार )। SemVer 2.0 में टैग विनिर्देश के बारे में कुछ भी नहीं है। यह जानबूझकर संघर्षों से बचने के कारण किया गया है। हालाँकि यह प्रलेखन और पाठ संदर्भों में उपसर्ग जोड़ने की सलाह दी जाती है v। उदाहरण के रूप v1.0.4में पूर्ण के बजाय प्रारूप version 1.0.4या ver. 1.0.4प्रलेखन में पर्याप्त क्रिया और सुरुचिपूर्ण है।


22
"यह सलाह दी जाती है ..." किसने सलाह दी, और हम उस सलाह को उसके मूल संदर्भ में कहां देख सकते हैं?
bignose

8

हम वास्तविक रिलीज़ के बाद क्रमशः रिलीज़-विशिष्ट कार्य के लिए शाखाओं और टैग का उपयोग करते हैं:

o---o-----o---o---o--- ...   master
     \   /       /
      \ /       /
       o-------o--- ...      1.6 branch

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

जब हम रिलीज़ करने के लिए तैयार होते हैं, तो हम इसे टैग करते हैं और फिर एक अंतिम बार वापस मर्ज करते हैं, और हम टैग को शाखा के समान नाम के साथ नाम देते हैं, लेकिन एक अतिरिक्त पहचानकर्ता के साथ कि यह किस विशेष संस्करण के बारे में है, जैसे "1.6-रिलीज़" या "1.6-बीटा" या "1.6-आरसी 2", एट सीटेरा।

... ------o---o---o--o---o--- ...   master
         /       /
        /       /
... ---o------(*)--- ...      1.6 branch
          1.6-release

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

आह, गच्चा! आपके प्रश्न को गलत समझने के लिए क्षमा करें। नहीं, मानव संचार के अलावा किसी विशेष नाम का उपयोग करने का कोई विशेष तकनीकी कारण नहीं है। आप अपनी शाखाओं और टैगों को बहुत पसंद कर सकते हैं।
जॉन फेमिनाला

आपकी रिलीज़-1.6 शाखा का नाम "1.6 शाखा" है? मुझे लगा कि शाखा नामों में रिक्त स्थान समर्थित नहीं हैं।
सेस टिम्मरमैन

8

मुझे किसी भी मानक का पता नहीं है। मैं बस अपने टैग नामों का चयन करता हूं ताकि मैं छड़ी कर सकूं

VERSION = `git describe --tags`

मेरी बिल्ड स्क्रिप्ट में। तो, टैग नामकरण सम्मेलन वास्तव में परियोजना के नामकरण सम्मेलन के संस्करण पर निर्भर करता है।


1
git description --tags:>
डेमियन कैरोल

1

कोई है एक सबसे अच्छा अभ्यास मैं के बारे में पता कर रहा हूँ। यहाँ कुछ लिंक दिए गए हैं:

आम तौर पर, वर्जनिंग ( 0.0.1, v0.2.1...) हो सकता है कि हाथ में हाथ डालकर किसी मुद्दे पर नज़र रखी जा सके। (.. हालांकि मैं आमतौर पर v-प्रभात टैग नामों का उपयोग करता हूं .. यह भी देखें @VonC उत्तर)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.