एक उत्पाद संस्करण, जैसे कि v1.0.0.100
, न केवल सॉफ़्टवेयर का एक अद्वितीय उत्पादन रिलीज़ दर्शाता है, बल्कि उक्त उत्पाद के लिए फ़ीचर सेट और हॉटफ़िक्स चरणों की पहचान करने में मदद करता है। अभी मुझे किसी उत्पाद के अंतिम पैकेज / बिल्ड / बाइनरी संस्करण को बनाए रखने के दो तरीके दिखाई देते हैं:
संस्करण नियंत्रण। एक फ़ाइल कहीं संस्करण संख्या को संग्रहीत करती है। कंटीन्यूअस इंटीग्रेशन (CI) बिल्ड सर्वर में सॉफ्टवेयर बनाने के लिए एक स्क्रिप्ट होगी जो इस चेक-इन संस्करण संख्या का उपयोग करके इसे आवश्यक सॉफ्टवेयर के सभी क्षेत्रों (बायनेरी, इंस्टॉलर पैकेज, हेल्प पेज, डॉक्यूमेंटेशन आदि) पर लागू करती है।
पर्यावरण और / या निर्माण मानकों। इन्हें संस्करण नियंत्रण से बाहर रखा गया है (अर्थात ये स्नैपशॉट / टैग / शाखा से बंधे नहीं हैं)। बिल्ड स्क्रिप्ट्स उसी तरह से संख्या को वितरित और उपयोग करती हैं, हालांकि वे सिर्फ मूल्य अलग-अलग प्राप्त करते हैं (यह स्क्रिप्ट को पता करने के बजाय, इसे स्रोत के पेड़ के सापेक्ष कहां प्राप्त करना है), इसे बिल्ड स्क्रिप्ट को प्रदान किया जाता है ।
पहले दृष्टिकोण के साथ समस्या यह है कि यह मेनलाइन शाखाओं में विलय को जटिल कर सकता है। यदि आप अभी भी एक ही सॉफ्टवेयर के 2 समानांतर रिलीज को बनाए रखते हैं, तो आप दो मुख्य बिंदुओं के बीच विलय करते समय संघर्षों को हल करेंगे यदि अंतिम विलय के बाद से दोनों पर संस्करण बदल गया हो।
दूसरे दृष्टिकोण के साथ समस्या सामंजस्य है। जब आप 1 साल पहले किसी रिलीज़ पर वापस जाते हैं, तो आप पूरी तरह से टैग जानकारी पर भरोसा करेंगे कि इसकी रिलीज़ संख्या की पहचान करें।
दोनों मामलों में, संस्करण संख्या के कुछ पहलू हो सकते हैं जो सीआई बिल्ड से पहले ज्ञात नहीं हैं। उदाहरण के लिए, एक CI बिल्ड प्रोग्रामेटिक रूप से 4 वें कंपोनेंट में डाल सकता है जो वास्तव में ऑटोमेटेड बिल्ड नंबर है (जैसे ब्रांच पर 140 वां बिल्ड)। यह वीसीएस में एक संशोधन संख्या भी हो सकती है।
सॉफ़्टवेयर के संस्करण नंबर के साथ बनाए रखने का सबसे अच्छा तरीका क्या है? क्या "ज्ञात" भागों को हमेशा वीसीएस में बनाए रखा जाना चाहिए? और यदि हां, तो मुख्य शाखाओं में संघर्ष एक मुद्दा है?
अभी हम सीआई बिल्ड प्लान (एटलसियन बैंबू) में निर्दिष्ट और बनाए गए मापदंडों के माध्यम से अपना संस्करण संख्या बनाए रखते हैं। हमें अपनी master
शाखा में विलय करने से पहले सावधान रहना होगा कि CI बिल्ड किकिंग से पहले वर्जन नंबर ठीक से सेटअप हो । Gitflow वर्कफ़्लो के संबंध में, मुझे लगता है कि यदि संस्करण संख्या को स्रोत नियंत्रण में ट्रैक किया गया था, तो हम गारंटी दे सकते हैं कि जब हम release
रिलीज की तैयारी में अपनी शाखा बनाते हैं तो यह ठीक से सेटअप हो । QA इस शाखा पर अंतिम एकीकरण / धुएं / प्रतिगमन परीक्षण का प्रदर्शन करेगा और साइनऑफ़ पर, एक विलय होने वाला master
है जो जारी करने की प्रतिबद्धता का संकेत देता है।
version.txt
होता है, जिसमें एक संस्करण में एकल रेखा होती है1.0.7
और दूसरी1.2.0
वास्तव में हल करने के लिए कठिन होती है? अगर यह दो शाखाओं को मिलाने में एकमात्र संघर्ष है, जो अलग हो गया, तो मैं खुद को बहुत भाग्यशाली समझूंगा। यह कितनी बार होता है? यदि ऐसा होता है, तो क्या यह अच्छी बात नहीं है कि आप सोचने पर मजबूर हो जाएं कि मर्ज किए गए संस्करण की संख्या क्या होनी चाहिए? (शब्द "संस्करण" के अस्पष्ट उपयोग के लिए क्षमा करें।)