मैं एक लंबे समय के लिए ख़ामख़ाह का इस्तेमाल किया है, और इसलिए मेरी टिप्पणी एक छोटे से लाज़िमी केंद्रित हो सकता है, लेकिन बुनियादी किसी भी एससीएम सॉफ्टवेयर आधा सभ्य शाखाओं में है कि करने के लिए लागू होते हैं। मैं ब्रांडेड विकास प्रथाओं का उपयोग करने में एक बहुत मजबूत आस्तिक हूं। मेरे पास "मुख्य" (उर्फ "मेनलाइन") है जो कोडबेस को अब से अनंत काल तक दर्शाता है। इसका उद्देश्य यह है कि, अधिकांश समय, स्थिर और यदि धक्का ढकने आया, तो आप किसी भी समय रिलीज काट सकते हैं जो सिस्टम की वर्तमान कार्यक्षमता को प्रतिबिंबित करेगा। उन अजीब बिक्री लोग पूछते रहते हैं ....
एमएनआईएन से शाखाओं में विकास होता है (आमतौर पर - कभी-कभी आप मौजूदा देव शाखा से शाखा बनाना चाहते हैं)। चीजों को जितनी बार आप कर सकते हैं, उतनी बार अपनी देव शाखाओं में मेन से एकीकृत करें - या आप बाद में एक बड़ी एकीकरण अवधि के लिए बजट कर सकते हैं। जब आप सुनिश्चित हैं कि यह आगामी रिलीज में बाहर जाएगा, तो केवल अपने गधे को नई सुविधा को लात मारने के लिए एकीकृत करें।
अंत में, आपके पास एक रिलीज लाइन है, जो विभिन्न रिलीज के लिए विभिन्न शाखाओं का विकल्प है। आपके एससीएम सॉफ़्टवेयर की लेबलिंग क्षमताओं के आधार पर कुछ विकल्प हैं, और विभिन्न प्रमुख/मामूली संशोधन होने की संभावना है।तो आप उदाहरण के लिए, प्रत्येक बिंदु रिलीज के लिए रिलीज शाखा के लिए, या केवल प्रमुख संशोधन संख्या के लिए चुन सकते हैं। आपकी माइलेज भिन्न हो सकती है।
आम तौर पर, MAIN से शाखा जितनी देर हो सके रिलीज करने के लिए। बगफिक्सेस और अंतिम मिनट के परिवर्तन या तो बाद में एकीकरण के लिए, या तत्काल एकीकरण बैक अप के लिए मुख्य में एकीकरण के लिए सीधे रिलीज में जा सकते हैं। कोई कठोर और तेज़ नियम नहीं है - जो सबसे अच्छा काम करता है। यदि, हालांकि, आपके पास परिवर्तन हैं जो MAIN को सबमिट किए जा सकते हैं (उदा। एक देव शाखा से, या MAIN पर किसी के द्वारा "छोटे बदलाव"), फिर पूर्व करें। यह इस बात पर निर्भर करता है कि आपकी टीम कैसे काम करती है, आपके रिलीज चक्र क्या हैं आदि
उदा। मेरे पास ऐसा कुछ होगा:
//MYPROJECT/MAIN/... - the top level folder for a complete build of all the product in main.
//MYPROJECT/DEV/ArseKickingFeature/... - a branch from MAIN where developers work.
//MYPROJECT/RELEASE/1.0/...
//MYPROJECT/RELEASE/2.0/...
एक गैर-तुच्छ परियोजना में शायद कई बार डीवी शाखाएं सक्रिय होंगी। जब एक विकास को MAIN में एकीकृत किया गया है, तो यह अब मूल परियोजना का हिस्सा है, जितनी जल्दी हो सके पुरानी डीवी शाखा को मार दें। कई इंजीनियर एक डीवी शाखा का अपना निजी स्थान मानते हैं, और समय के साथ विभिन्न सुविधाओं के लिए इसका पुन: उपयोग करते हैं। इसे हतोत्साहित करें।
यदि रिलीज के बाद, आपको एक बग ठीक करना होगा, तो उसे संबंधित रिलीज शाखा में करें। यदि बग पहले MAIN में तय किया गया है, तो पूरे में एकीकृत करें, जब तक कि मेन में कोड इतना बदल नहीं जाता है, तो फिक्स अलग होता है।
कोडेलिन वास्तव में क्या अंतर करता है वह नीतियां जिनका उपयोग आप उन्हें प्रबंधित करने के लिए करते हैं। उदाहरण के लिए, कौन से परीक्षण चलते हैं, जो बदलाव को पूर्व/पोस्ट करते हैं, बिल्ड ब्रेक होने पर क्या कार्रवाई होती है। आम तौर पर नीतियां - और इसलिए उपरि - रिलीज शाखाओं में सबसे मजबूत हैं, और DEV में सबसे कमजोर हैं। एक लेख here है जो कुछ परिदृश्यों के माध्यम से जाता है, और अन्य उपयोगी चीजों के लिंक।
अंत में, मैं शुरू करने के लिए एक सरल संरचना के साथ जाने की सलाह देता हूं, और केवल अतिरिक्त dev & रिलीज़ वाले लोगों को आवश्यकतानुसार पेश करता हूं।
आशा है कि मदद करता है, और ब्लीडिन-स्पष्ट नहीं है।