सर्वोत्तम अभ्यास: सॉफ्टवेयर संस्करण [बंद]


211

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

लेकिन मैं संस्करण कहां से शुरू करूं? 0.0.0? या 0.0? और फिर मैं संख्याओं को कैसे बढ़ाऊं? प्रमुख रिलीज। मामूली परिवर्तन? और क्या किसी संस्करण नियंत्रण प्रणाली के लिए कोई प्रतिबद्ध नहीं होना चाहिए एक और संस्करण? या यह केवल उन संस्करणों के लिए है जो एक उत्पादक तरीके से उपयोग किए जाते हैं?


2
आपका स्रोत कोड नियंत्रण उपकरण क्या करता है? आपको एक का उपयोग करना चाहिए । कौन सा एक आप प्रयोग कर रहें है?
एस.लॉट

3
मुझे थोड़ी देर हो गई है ... लेकिन stackoverflow.com/questions/615227/how-to-do-version-numbers
व्युत्पन्न


1
@DaveGregory के पास सवाल का एक गैर-राय-आधारित उत्तर है। यह लिंक semver.org विस्तार में एक संस्करण अर्थ का वर्णन करता है। समान योजना आमतौर पर एंड्रॉइड सहित अधिकांश Google परियोजनाओं द्वारा उपयोग की जाती है। इसके अलावा, टॉम प्रेस्टन-वर्नर में हम इस विषय पर किसी भी विश्वसनीय आवाज के रूप में पा सकते हैं।
राहुल मुर्मुरिया

जवाबों:


125

आपको संस्करण 1 से शुरू करना चाहिए, जब तक कि आपको पता न हो कि आपका पहला संस्करण "रिलीज़" किसी तरह से अधूरा है।

जैसा कि आप संस्करणों को कैसे बढ़ाते हैं, यह आपके ऊपर है, लेकिन एक गाइड के रूप में प्रमुख, लघु, बिल्ड नंबर का उपयोग करें।

यह आवश्यक नहीं है कि आप प्रत्येक संस्करण को किसी अन्य संस्करण के रूप में स्रोत नियंत्रण के लिए प्रतिबद्ध करें - आपके पास वास्तव में बहुत बड़ा संस्करण संख्या होगी। जब आप बाहरी दुनिया के लिए एक नया संस्करण जारी करते हैं, तो आपको केवल संस्करण संख्या (किसी तरह) बढ़ाना होगा।

इसलिए यदि आप संस्करण 1.0.0.0 से संस्करण 2.0.0.0 तक एक बड़ा बदलाव करते हैं (आप उदाहरण के लिए WinForms से WPF में बदल गए हैं)। यदि आप 1.0.0.0 से 1.1.0.0 तक छोटा परिवर्तन करते हैं (आपने png फ़ाइलों के लिए समर्थन जोड़ा है)। यदि आप एक मामूली बदलाव करते हैं, तो 1.0.0.0 से 1.0.1.0 तक जाएं (आपने कुछ बग्स को ठीक किया है)।

यदि आप वास्तव में बिल्ड नंबर के रूप में अंतिम संख्या का विस्तृत उपयोग करना चाहते हैं जो कि हर चेकइन / कमिट के लिए वृद्धि होगी (लेकिन मुझे लगता है कि यह बहुत दूर जा रहा है)।


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

@VansFannel, मैं अपेक्षा करता हूं कि बिल्ड नंबर किसी भी उच्चतर संख्या को टक्कर देने पर हर बार 0 पर रीसेट हो जाएगा।
जेफरी केम्प

@ जेफ्रीकेम्प हां, मुझे ऐसा लगता है। लेकिन काम पर हम साल के दिन का उपयोग करते हैं और मुझे यह पसंद नहीं है।
वंसफैनलाइन

हां, मैं ऐसा नहीं चाहूंगा :(
जेफरी केम्प

2
यह भी ध्यान दिया जाना चाहिए कि प्रमुख संस्करणों में परिवर्तन आम तौर पर पिछड़े संगत नहीं हैं। मामूली संस्करण में वृद्धि प्रमुख संस्करण के भीतर पिछड़े संगत हैं। जेनेरिक कार्यान्वयन में एक कठिन कोडित MySQL कार्यान्वयन से बदलाव के आकार के कारण एक प्रमुख संस्करण हो सकता है, लेकिन इसे एक फीचर परिवर्तन (मामूली) भी माना जा सकता है क्योंकि यह पिछड़ा संगत बना हुआ है।
डीएचडब्ल्यू


42

मैं मूल रूप से इस पैटर्न का पालन करता हूं:

  • 0.1.0 से शुरू करें

  • जब यह तैयार हो जाता है तो मैं स्रोत रेपो में कोड शाखा, 0.1.0 टैग करता हूं और 0.1.0 शाखा बनाता हूं, सिर / ट्रंक 0.2.0-स्नैपशॉट या कुछ समान हो जाता है

  • मैं नई सुविधाओं को केवल ट्रंक में जोड़ता हूं, लेकिन शाखा में शाखा को ठीक करता है और समय पर मैं इसे 0.1.1, 0.1.2 से जारी करता हूं, ...

  • मैं संस्करण 1.0.0 की घोषणा करता हूं, जब उत्पाद को पूर्ण माना जाता है और बड़ी कमियां नहीं होती हैं

  • तब से - हर कोई तय कर सकता है कि प्रमुख संस्करण को कब बढ़ाया जाए ...


अगर मेरे पास 9 से अधिक फ़ीचर हैं, तो क्या मैं x.20.0 लिख सकता हूं?
जेमशीट इस्केंडरोव

@JemshitIskenderov बेशक आप कर सकते हैं।
पावेल एस।

35

मैं अपने अनुप्रयोगों के लिए इस नियम का उपयोग करता हूं:

xyz

कहाँ पे:

  • x = मुख्य संस्करण संख्या, 1- ~।
  • y = सुविधा संख्या, 0-9। यदि बग में बग फिक्स के साथ नई सुविधाएँ हैं, तो इस संख्या को बढ़ाएँ।
  • z = हॉटफिक्स संख्या, 0- ~। इस संख्या को बढ़ाएं यदि परिवर्तन में केवल बग फिक्स हैं।

उदाहरण:

  • नए आवेदन के लिए, संस्करण संख्या 1.0.0 से शुरू होती है।
  • यदि नए संस्करण में केवल बग फिक्स हैं, तो हॉटफ़िक्स संख्या बढ़ाएँ ताकि संस्करण संख्या 1.0.1 होगी।
  • यदि नए संस्करण में बग फिक्स के साथ या उसके बिना नई सुविधाएं हैं, तो फीचर नंबर बढ़ाएं और हॉटफ़िक्स नंबर को शून्य पर रीसेट करें ताकि संस्करण संख्या 1.1.0 हो जाए। यदि सुविधा संख्या 9 तक पहुँच जाती है, तो मुख्य संस्करण संख्या बढ़ाएँ और सुविधा और हॉटफ़िक्स संख्या को शून्य (2.0.0 आदि) पर रीसेट करें

36
मैं "फ़ीचर" / "हॉटफ़िक्स" नंबर में 9 -> 0 को रोल किए बिना इस योजना का उपयोग करने का सुझाव दूंगा, बस 10 पर जाएं! 10 मामूली अपडेट अभी भी मामूली अपडेट हैं यदि उन्हें वेतन वृद्धि जारी की गई थी, तो 1.10.0 या 1.1.10 के साथ कुछ भी गलत नहीं है।
तारिक

4
..और ऊपर जाते रहे। क्या होगा यदि आपके पास v.2 से पहले लागू करने के लिए वास्तव में 23 सुविधाएँ हैं? और फिर उस अंतिम सुविधा पर 30 बगफिक्स? आपके पास संस्करण 1.23.30 होगा। प्रमुख संस्करण रिलीज कुछ मील के पत्थर के साथ बड़ी अमूर्त अवधारणाएं हैं, दशमलव गिनती नियमों का मनमाने ढंग से पालन करने की कोई आवश्यकता नहीं है।
ब्रांचलैंस

11

हम एबीसी का उपयोग करते हैं

  • a - प्रमुख (ग्राहक को वितरण पर बढ़ा हुआ)
  • बी - नाबालिग (ग्राहक को वितरण पर बढ़ा हुआ)
  • सी - संशोधन (आंतरिक रिलीज पर बढ़ा हुआ)
  • डी - बिल्ड (क्रूज नियंत्रण द्वारा संवर्धित)

5

फिर भी A.B.Cदृष्टिकोण के लिए एक और उदाहरण ग्रहण बंडल संस्करण है । ग्रहण बंडल में एक चौथा खंड है:

ग्रहण में, संस्करण संख्याएं चार (4) खंडों से बनी होती हैं: 3 पूर्णांक और एक स्ट्रिंग जिसका नाम क्रमशः है major.minor.service.qualifier। प्रत्येक खंड एक अलग इरादा रखता है:

  • प्रमुख खंड एपीआई में टूट-फूट को इंगित करता है
  • मामूली खंड "बाहरी रूप से दृश्यमान" परिवर्तनों को इंगित करता है
  • सेवा खंड बग फिक्स और विकास धारा के परिवर्तन को इंगित करता है
  • क्वालीफायर सेगमेंट एक विशेष बिल्ड को इंगित करता है

5

वहाँ भी है तारीख वर्ज़निंग योजना , जैसे: YYYY.MM, YY.MM,YYYYMMDD

यह काफी जानकारीपूर्ण है क्योंकि पहली नज़र रिलीज़ की तारीख के बारे में बताती है। लेकिन मैं xyz योजना को पसंद करता हूं, क्योंकि मैं हमेशा अपने जीवन चक्र में एक उत्पाद का सटीक बिंदु जानना चाहता हूं (Major.minor.rel)


2

मूल उत्तर "यह निर्भर करता है" है।

संस्करण बनाने में आपका उद्देश्य क्या है? बहुत से लोग version.revision.build का उपयोग करते हैं और केवल संस्करण का उपयोग करते हैं। यदि आप चेक-इन 'संस्करण' का उपयोग करते हैं, तो आप जल्दी से पाएंगे कि आपके संस्करण संख्याएं बड़ी हो गई हैं।

यदि आप अपनी परियोजना की योजना बना रहे हैं, तो मैं बड़े बदलाव, बग फिक्स या कार्यक्षमता / सुविधाओं के साथ छोटे बदलाव और वृद्धि संस्करण के साथ रिलीज़ के लिए वेतन वृद्धि संशोधन करूँगा। यदि आप बीटा या नाइटली बिल्ड प्रकार रिलीज़ की पेशकश कर रहे हैं तो बिल्ड और इंक्रीमेंट को शामिल करने के लिए संस्करण का विस्तार करें जो हर रिलीज़ के साथ हो।

फिर भी, दिन के अंत में, यह आपके ऊपर है और इसे आपको समझाना है।


2

जैसा कि महेश कहते हैं: मैं xyz तरह के संस्करण का उपयोग करूंगा

x - प्रमुख रिलीज़ y - लघु रिलीज़ z - बिल्ड संख्या

आप z के बजाय शायद एक डेटाइम जोड़ना चाहते हैं।

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


2

आप जानते हैं कि आप हमेशा देख सकते हैं कि दूसरे क्या कर रहे हैं। ओपन सोर्स सॉफ्टवेयर अपने रिपॉजिटरी तक पहुंच की अनुमति देते हैं। उदाहरण के लिए आप अपने एसवीएन ब्राउज़र को http://svn.doctrine-project.org पर इंगित कर सकते हैं और वास्तविक परियोजना द्वारा उपयोग की जाने वाली संस्करण प्रणाली पर एक नज़र डाल सकते हैं।

संस्करण संख्या, टैग, यह सब वहाँ है।


2

हम एबीसी दृष्टिकोण का पालन करते हैं जैसे:

आवेदन में कुछ बड़े बदलाव हुए हैं तो 'a'। जैसे हम .NET 1.1 को .NET 3.5 में अपग्रेड करते हैं

यदि किसी नए सीआर या एनहांसमेंट जैसे कुछ छोटे बदलाव हैं, तो 'बी' को लागू किया जाता है।

कोड में कुछ दोषों को ठीक करने पर ग्रेजुएशन 'c'।


0

मैं सबसे कम (गैर हॉटफ़िक्स) सेगमेंट में संस्करण बनाना शुरू करता हूं। मैं इस सेगमेंट को १० तक सीमित नहीं करता। जब तक आप बिल्ड पर नज़र नहीं रख रहे हैं, तब आपको यह तय करने की ज़रूरत है कि आप कब वेतन वृद्धि लागू करना चाहते हैं। यदि आपके पास एक QA चरण है, तो वह वह स्थान हो सकता है जहां आप सबसे कम खंड में वेतन वृद्धि लागू करते हैं और फिर QA पास होने पर और अगली बार जारी किया जाता है। प्रमुख व्यवहार / UI परिवर्तनों के लिए सबसे ऊपरी खंड छोड़ दें।

यदि आप मेरे जैसे हैं, तो आप इसे तरीकों का एक हाइब्रिड बना देंगे ताकि आपके सॉफ़्टवेयर की प्रगति की गति से मेल खा सके।

मुझे लगता है कि सबसे अधिक स्वीकृत पैटर्न एबीसी या एबीसीडी विशेष रूप से यदि आपके पास मिश्रण में क्यूए / अनुपालन है। मुझे अब तक संस्करणों का एक नियमित हिस्सा होने के आसपास इतना अधिक फाल्ट पड़ा है कि मैंने इसे मुख्यधारा के लिए छोड़ दिया।

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

मैं व्यक्तिगत रूप से va.b Revc की सॉफ़्टवेयर योजना का विरोध नहीं करूँगा जहाँ c YYYYMMDDHHMM या YYYYMMDD है।

वो सब कहा। यदि आप बस कॉन्फ़िगर करने के लिए एक उपकरण लावा कर सकते हैं और इसके साथ चला सकते हैं, तो आपको सिरदर्द से लेकर संस्करण बनाने की राय का पहलू भी मिल जाएगा और आप बस "टूल का उपयोग करें" कह सकते हैं ... क्योंकि विकास प्रक्रिया में हर कोई आमतौर पर इतना आज्ञाकारी होता है ।

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