मैंने हाल ही में संस्करण नियंत्रण के तहत अपना कोड डालना शुरू कर दिया है (लैब में मैं काम कर रहा हूं, एसवीएन के तहत, और जीथब में मेरे अपने कोड हैं (जाहिर है गिट के साथ)। संस्करण नियंत्रण का उपयोग करने से पहले, मैं ऐसा कुछ करता था। मेरे पास लाइब्रेरी के नाम के साथ एक फ़ोल्डर था, जिसमें संस्करण संख्या के साथ कई फ़ोल्डर थे। हर बार जब मैं एक नए संस्करण पर काम करना शुरू करना चाहता था, तो मैं अंतिम संस्करण की एक प्रतिलिपि बनाऊंगा, नए संस्करण में नाम बदलूंगा और लागू करना शुरू करूंगा।
हालाँकि यह बेमानी लगता है जब फ़ोल्डर को संस्करण नियंत्रण में रखा जाता है। अतिरेक के अलावा, यदि कोई नवीनतम संस्करण प्राप्त करना चाहता है, तो वह सभी संस्करणों को डाउनलोड कर रहा होगा यदि वह सिर्फ import
एस / clone
एस।
अब मुझे संस्करण नियंत्रण के साथ ऐसा करने के कई तरीके दिखाई दे रहे हैं, लेकिन जब से मैं इसके लिए नया हूं, मुझे नहीं पता कि कौन अधिक रखरखाव योग्य होगा।
विधि 1: टैग का उपयोग करना
अगर मैं टैग्स को सही तरीके से समझता हूं, तो आपके पास आपकी मुख्य शाखा होगी, आप जो भी बदलाव करते हैं, उसे करते हैं और उन्हें एक संस्करण के साथ टैग करते हैं। फिर, जब आप इसकी एक प्रतिलिपि प्राप्त करना चाहते हैं, तो आप एक निश्चित टैग के साथ प्राप्त करते हैं। (यदि मैं गलत हूं तो मुझे सही करों)
विधि 2: शाखाओं में बंटी संस्करण
इस पद्धति में, मुख्य शाखा विकास शाखा होगी। हर अब और फिर एक स्थिर संस्करण बनाया जाता है (मान लीजिए v1.2.0
), आप उस संस्करण के लिए एक शाखा बनाते हैं और इसके लिए कभी प्रतिबद्ध नहीं होते हैं। इस तरह, यदि आप एक निश्चित संस्करण डाउनलोड करना चाहते हैं, तो आपको उस शाखा से कोड प्राप्त होगा। हालाँकि मैंने कहा था कि आप कभी भी इसके लिए प्रतिबद्ध नहीं हैं, हो सकता है कि पुराने संस्करण को चालू रखने के लिए बग फिक्स और पुराने संस्करण की शाखा के लिए प्रतिबद्ध हो। उदाहरण के लिए यदि वर्तमान संस्करण है v2.0
, लेकिन ऐसे लोग हैं जो उपयोग करना चाहते हैं v1.2
, तो आप किसी अन्य शाखा को प्राप्त कर सकते हैं v1.2
, अर्थात् v1.2.1
बग फिक्स कर सकते हैं, या बस संस्करण को उसी तरह रख सकते हैं v1.2
और बग फिक्स कर सकते हैं।
तो शाखाएँ इस तरह दिखेंगी:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
इस तरह आपके पास हर छोटे संस्करण के अपडेट के लिए शाखाएँ हैं। (ध्यान दें कि ऊपर के ग्राफ़ में, v1.2.1 और v1.2.2 या v2.0.0 जारी होने के बाद बनाया गया था, इसलिए वे v1.2.0 और v2.0.0 के बीच विकास का हिस्सा नहीं थे। इसे पुराने संस्करणों के समर्थन के रूप में सोचें)
विधि 3: विकास शाखा
यह विधि पिछले के विपरीत है। मुख्य शाखा नवीनतम स्थिर संस्करण होगी। जब भी आप एक नए संस्करण पर काम कर रहे होते हैं, तो आप एक शाखा (विकास के लिए) बनाते हैं, अपने कोड पर काम करते हैं और जब यह स्थिर होता है, तो इसे मुख्य शाखा में विलय कर दें।
इस मामले में, शाखाएँ इस तरह दिखेंगी:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
संभवत: यह सही टैग के साथ संयोजन के रूप में किया जाना चाहिए?
प्रश्न!
वैसे भी, मेरा सवाल यह है कि आपके अनुभव के आधार पर, इनमें से कौन सा तरीका अधिक व्यावहारिक साबित होता है? वहाँ एक ज्ञात सबसे अच्छा तरीका है (कि संभवतः मैं अपने आप को पता नहीं था)? ये चीजें आमतौर पर कैसे की जाती हैं?