2008-08-20 8 views
5

जब मैंने पहली बार CVS और SVN जैसे संशोधन नियंत्रण प्रणाली का उपयोग शुरू किया, तो मैंने वास्तव में "ट्रंक", ब्रांचिंग, विलय और टैगिंग की अवधारणाओं को नहीं समझा। अब मैं इन अवधारणाओं को समझना शुरू कर रहा हूं, और वास्तव में उनके पीछे महत्व और शक्ति प्राप्त कर रहा हूं।रिपोजिटरी संगठन

तो, मैं इसे ठीक से करने के लिए शुरू कर रहा हूँ। या तो मुझे लगता है ... यह मैं अब तक समझता हूं: आपके कोड का नवीनतम रिलीज/स्थिर संस्करण/ट्रंक में बैठना चाहिए/जबकि बीटा संस्करण या खून बहने वाले किनारे संस्करण प्रत्येक बीटा के लिए अलग-अलग निर्देशिकाओं के रूप में/शाखाओं/निर्देशिका के अंदर बैठते हैं रिलीज, और फिर जब आप रिलीज करते हैं तो ट्रंक में विलय हो जाता है।

यह भी साधारण बातों पर एक दृश्य है? आप लोग क्या रिपोजिटरी लेआउट की सिफारिश करते हैं? अगर इससे कोई फर्क पड़ता है, तो मैं सबवर्सन का उपयोग कर रहा हूं।

उत्तर

5

कि मुझे क्या करना है और सामान्य रूप से देखने के रूप में एक मानक है:

ट्रंक को शामिल करना चाहिए विकास की आपकी मुख्य रेखा, आपके अस्थिर संस्करण। आपको अपनी रिलीज के लिए रिलीज शाखाएं बनाना चाहिए।

कुछ की तरह:

/ट्रंक (यहाँ संस्करण 2.0 विकसित कर रहे हैं) /branches/RB-1.0 (यह 1.0 के लिए विज्ञप्ति जारी की शाखा है) /branches/RB-1.5

जब आप 1.5 में एक बग पाएं, आप इसे आरबी शाखा में ठीक करें और फिर ट्रंक में विलय करें।

मैं भी this book सलाह देते हैं।

1

एरिक स्रोत नियंत्रण का उपयोग करें और संगठनात्मक सर्वोत्तम प्रथाओं पर लेख का एक उत्कृष्ट श्रृंखला है। Chapter 7 deals with branches (और हाँ, यह/ट्रंक/और/शाखाओं/निर्देशिका आप सुझाव है कि सिफारिश की गई है)।

1

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

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

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

आम तौर पर, 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 & रिलीज़ वाले लोगों को आवश्यकतानुसार पेश करता हूं।

आशा है कि मदद करता है, और ब्लीडिन-स्पष्ट नहीं है।