खैर लगभग आधे साल पहले मुझे उस सवाल का जवाब देने के लिए एक अध्ययन करने के लिए सौंपा गया था। यहां सारांश, अध्ययन किए गए संदर्भों के आधार पर (नीचे सूचीबद्ध है)
http://msdn.microsoft.com/en-us/library/aa730834%28v=vs.80%29.aspx
... सर्वश्रेष्ठ ब्रांचिंग रणनीति पर निर्णय करना एक संतुलनकारी कार्य है। आपको बढ़े हुए जोखिम के खिलाफ उत्पादकता लाभ का व्यापार करना चाहिए। चुने हुए रणनीति को मान्य करने का एक तरीका परिवर्तन के परिदृश्य पर विचार करना है। उदाहरण के लिए, यदि आप सिस्टम आर्किटेक्चर के साथ शाखाओं को संरेखित करने का निर्णय लेते हैं (उदाहरण के लिए, एक शाखा सिस्टम घटक का प्रतिनिधित्व करता है) और आप महत्वपूर्ण वास्तु परिवर्तन की अपेक्षा करते हैं, तो आपको प्रत्येक परिवर्तन के साथ अपनी शाखाओं और संबंधित प्रक्रियाओं और नीतियों का पुनर्गठन करना पड़ सकता है। एक अपर्याप्त ब्रांचिंग रणनीति चुनने से प्रक्रिया ओवरहेड्स और लम्बी एकीकरण हो सकती है और पूरी तरह से टीम के लिए निराशा साबित करने वाले चक्र जारी कर सकते हैं ...
http://www.cmcrossroads.com/bradapp/acme/branching/
... बार-बार, वृद्धिशील एकीकरण सफलता के संकेत बिंदुओं में से एक है, और इसकी अनुपस्थिति अक्सर विफलता की विशेषता है। वर्तमान परियोजना प्रबंधन विधियाँ सख्त जलप्रपात के मॉडल से बचने और सर्पिल की तरह चलने के मॉडल / वृद्धिशील विकास और विकासवादी वितरण को अपनाती हैं। वृद्धिशील एकीकरण रणनीतियाँ, जैसे मर्ज़ अर्ली और अक्सर और इसके वेरिएंट, जोखिम प्रबंधन का एक रूप है जो जीवन चक्र में पहले जोखिम को बाहर निकालने की कोशिश करता है जब इसका जवाब देने के लिए अधिक समय होता है। एकीकरण के बीच लय की नियमितता को [बूच], [मैककार्थी], और [मैककॉनेल] ने परियोजना स्वास्थ्य के एक प्रमुख संकेतक ("नाड़ी" या "दिल की धड़कन") के रूप में देखा है।
न केवल प्रारंभिक और लगातार एकीकरण मांस जोखिम को जल्द और छोटे "विखंडू" में करता है, यह टीम के साथियों के बीच परिवर्तनों को भी बताता है ...
http://www.codinghorror.com/blog/2007/10/software-branching-and-parallel-universes.html
... अधिकांश स्रोत नियंत्रण प्रणालियों में, आप बिना किसी प्रदर्शन के मुद्दों के साथ सैकड़ों शाखाएँ बना सकते हैं; यह उन सभी शाखाओं पर नज़र रखने का मानसिक उपरि है , जिनके बारे में आपको वास्तव में चिंता करने की ज़रूरत है ... ब्रांचिंग एक जटिल जानवर है। शाखा करने के दर्जनों तरीके हैं, और कोई भी आपको वास्तव में बता सकता है कि क्या आप इसे सही या गलत कर रहे हैं ...
http://www.lostechies.com/blogs/derickbailey/archive/2010/02/24/branching-strategies-when-to-branch-and-merge.aspx
... आपके कोड को ब्रांच करते समय एक प्रणाली के कई पहलुओं पर विचार किया जाना चाहिए ... अंत में, लक्ष्य उस संदर्भ के लिए एक सैंडबॉक्स प्रदान करना है जिसमें कोड लिखा जा रहा है। उपलब्ध विकल्पों को समझना, जब प्रत्येक विकल्प हाथ में स्थिति के लिए सबसे उपयुक्त होता है और इन विकल्पों की लागत आपको यह निर्णय लेने में मदद करेगी कि कैसे और कब शाखा के लिए ...
http://www.snuffybear.com/ucm_branch.htm
नोट को यहां सूचीबद्ध अन्य संदर्भ दिए गए हैं, लेखक का दावा है कि "यह लेख सॉफ्टवेयर इंजीनियरिंग परियोजनाओं में उपयोग किए जाने वाले तीन प्रमुख ब्रांचिंग मॉडल का वर्णन करता है " उचित नहीं लगता है। इस्तेमाल की जाने वाली शब्दावली व्यापक नहीं लगती है ( EFIX , Model-1,2,3 आदि)।
http://svn.haxx.se/users/archive-2007-10/att-0101/SCMBranchingModels-talkback.pdf
संदर्भ ब्रांचिंग रणनीतियों को संप्रेषित करने में कठिनाइयों का एक दिलचस्प उदाहरण प्रस्तुत करता है।
http://simpleprogrammer.com/2010/06/04/simple-branching-strategy-part-1-back-to-basics/
... इसे सरल रखें। ट्रंक से सीधे काम करना मेरी राय में अब तक का सबसे अच्छा तरीका है।
जब मैं वास्तव में इसे अपनी स्क्रीन पर टाइप करता हूं, तो यह लगभग सुनता है, लेकिन अगर आप एक पल के लिए मेरे साथ रहेंगे, तो न केवल मैं आपको दिखाऊंगा कि मुझे क्यों लगता है कि यह एक चुस्त प्रक्रिया के लिए आवश्यक है, लेकिन मैं आपको दिखाऊंगा कि कैसे यह काम करने के लिए ...
... अगर मुझे अपने तर्क को एक ठोस तर्क पर आधारित करना था, तो यह निरंतर एकीकरण का मूल्य होगा। मैंने अतीत में सीआई के मूल्य और सर्वोत्तम प्रथाओं के बारे में ब्लॉग किया । मैं सीआई का एक बहुत बड़ा वकील हूँ ...
... आप वास्तव में यहाँ अपने आप को एक सवाल पूछने के लिए है: "सभी भूमि के ऊपर है कि आप अपने जटिल शाखाओं में कर रहे हैं और एक वास्तविक मूल्य है कि एक और अधिक सरल रणनीति के ऊपर मौजूद नहीं है, जिसके परिणामस्वरूप रणनीति विलय से उठाने कर रहे हैं?" ...
.. .A रणनीति मैंने अतीत में प्रभावी रूप से उपयोग की है और समय के साथ विकसित हुई है। मैं इसे संक्षेप में यहाँ प्रस्तुत करूँगा।
- हर कोई धड़ल्ले से काम करता है।
- जब आप कोड जारी करते हैं तो शाखा।
- जब आपको पहले से ही जारी कोड के लिए बग फिक्स बनाने की आवश्यकता होती है, तो एक रिलीज़ को शाखा दें।
- प्रोटोटाइप के लिए शाखा।
...
http://www.codelathe.com/blog/index.php/2009/07/02/a-svn-branching-strategy-that-works/
... अंत में, याद रखें कि कोई आदर्श ब्रांचिंग और विलय की रणनीति नहीं है। यह आपके अद्वितीय विकास पर्यावरण पर बहुत निर्भर करता है ...
http://blog.perforce.com/blog/?cat=62
... सबसे खराब स्थिति यह है कि आप एक "सिमेंटिक मर्ज" समस्या का परिचय देते हैं, जहां एक स्वचालित मर्ज का परिणाम गलत होता है, लेकिन ठीक है और अतीत को दबाता है परीक्षण, संभवतः एक ग्राहक-दृश्यमान बग होने के लिए लंबे समय तक जीवित रहना। Eek!
चोट के अपमान को जोड़ना, क्योंकि वे लंबे समय तक पता लगाने से बच सकते हैं, सिमेंटिक मर्ज की समस्याओं को बाद में ठीक करना मुश्किल है, क्योंकि परिवर्तन अब डेवलपर के दिमाग में ताज़ा नहीं है जिसने परिवर्तन की उत्पत्ति की है। (आमतौर पर किए गए परिवर्तनों को मर्ज करने के बाद आमतौर पर सबसे अच्छा होता है, आदर्श रूप से डेवलपर द्वारा जो परिवर्तन की उत्पत्ति करता है यदि यह व्यावहारिक है) ...
https://stackoverflow.com/questions/34975/branching-strategies
सामुदायिक सदस्य विभिन्न शाखाओं में विभिन्न रणनीतियों का उपयोग करके विभिन्न अनुभव साझा करते हैं। "सर्वश्रेष्ठ" या "सबसे खराब" पर कोई सहमति नहीं बनी।
http://www.stickyminds.com/s.asp?F=S16454_COL_2
अनिवार्य रूप से http://oreilly.com/catalog/practicalperforce/chapter/ch07.pdf में प्रस्तुत सामान का संक्षिप्त सारांश
- http://www.stickyminds.com/s.asp?F=S16511_COL_2
... शाखा में कब और कैसे निर्णय लिया जाए, इसके लिए तीन सामान्य दृष्टिकोण हैं:
- जब आप "सुविधा पूर्ण" हो, तो रिलीज़ शाखा बनाएँ और इस कोड लाइन पर अंतिम-मिनट के मुद्दों को ठीक करने की योजना बनाएं। इस मामले में, रिलीज शाखा वास्तव में "रिलीज-प्रीप कोड कोड" है, जैसा कि सॉफ्टवेयर कॉन्फ़िगरेशन प्रबंधन पैटर्न में वर्णित है , क्योंकि आप उम्मीद करते हैं कि अभी भी काम करना बाकी है।
- सक्रिय एकीकरण लाइन से हटकर, अंतिम एकीकरण कार्य से बचने के लिए अपनी कार्य शैली बदलें।
- कार्य शाखा बनाकर नए कार्य के लिए शाखा जारी करने के बाद उस कार्य को सक्रिय विकास लाइन में विलय कर दिया जाता है।
... ब्रांचिंग के लिए एक तर्क एक रिलीज के अंत में कोड को अलग करना है ताकि यह स्थिर हो सके। ब्रांचिंग के माध्यम से अलगाव अक्सर एक गुणवत्ता की समस्या का सामना करता है जो एक उत्पाद जारी होने से पहले समानांतर धाराओं को बनाए रखने की अतिरिक्त लागत में खुद को प्रकट करेगा। शाखा लगाना आसान है। बल्कि, यह मर्जिंग है और यह समझने का संज्ञानात्मक उपरिव्यय है कि शाखाओं के बीच प्रवाह कैसे बदलता है जो मुश्किल है, इसलिए एक ऐसी प्रक्रिया चुनना महत्वपूर्ण है जो ब्रांचिंग और विलय की लागत को कम करती है ...
http://nvie.com/posts/a-successful-git-branching-model/ गिट-उन्मुख रणनीति।
... हम उत्पत्ति / मास्टर को मुख्य शाखा मानते हैं जहां हेड का स्रोत कोड हमेशा उत्पादन-तैयार स्थिति को दर्शाता है ।
हम उत्पत्ति / विकास को मुख्य शाखा मानते हैं, जहां HEAD का स्रोत कोड हमेशा अगली रिलीज के लिए नवीनतम वितरित विकास परिवर्तनों के साथ एक राज्य को दर्शाता है। कुछ लोग इसे "एकीकरण शाखा" कहेंगे। यह वह जगह है जहाँ से कोई भी स्वचालित नाइट बिल्ड बनाया जाता है ...।
http://svnbook.red-bean.com/en/1.5/svn.branchmerge.html
... सुविधा शाखा बनाने के लिए उचित होने पर परियोजना नीतियां व्यापक रूप से भिन्न होती हैं। कुछ परियोजनाएं कभी भी फीचर शाखाओं का उपयोग नहीं करती हैं: सभी के लिए / ट्रंक एक फ्री-फॉर-ऑल है। इस प्रणाली का लाभ यह है कि यह सरल है - किसी को शाखा या विलय के बारे में जानने की आवश्यकता नहीं है। नुकसान यह है कि ट्रंक कोड अक्सर अस्थिर या अनुपयोगी होता है। अन्य परियोजनाएं एक चरम पर शाखाओं का उपयोग करती हैं: कोई भी परिवर्तन कभी भी सीधे ट्रंक के लिए प्रतिबद्ध नहीं होता है । यहां तक कि सबसे तुच्छ परिवर्तन एक अल्पकालिक शाखा पर बनाए जाते हैं, ध्यान से समीक्षा की जाती है, और ट्रंक में विलय कर दिया जाता है। फिर शाखा को हटा दिया जाता है। यह प्रणाली हर समय एक असाधारण स्थिर और प्रयोग करने योग्य ट्रंक की गारंटी देती है, लेकिन जबरदस्त लागत परओवरहेड प्रक्रिया।
अधिकांश परियोजनाएं सड़क के बीच का रास्ता अपनाती हैं। वे आमतौर पर जोर देते हैं कि / ट्रंक संकलित करें और हर समय प्रतिगमन परीक्षण पास करें। एक सुविधा शाखा की आवश्यकता तभी होती है जब किसी परिवर्तन के लिए बड़ी संख्या में अस्थिर करने की आवश्यकता होती है। अंगूठे का एक अच्छा नियम यह सवाल पूछना है: यदि डेवलपर ने अलगाव में दिनों के लिए काम किया और फिर एक साथ बड़े बदलाव को पूरा किया (ताकि / ट्रंक को कभी भी अस्थिर नहीं किया गया), तो क्या यह समीक्षा करने के लिए बहुत बड़ा बदलाव होगा? यदि उस प्रश्न का उत्तर "हाँ" है, तो परिवर्तन को एक सुविधा शाखा पर विकसित किया जाना चाहिए। जैसा कि डेवलपर शाखा में वृद्धिशील परिवर्तन करता है, वे आसानी से साथियों द्वारा समीक्षा की जा सकती है।
अंत में, काम के बढ़ने के साथ ट्रंक के साथ "सिंक" में एक सुविधा शाखा को सर्वोत्तम तरीके से रखने का मुद्दा है। जैसा कि हमने पहले उल्लेख किया है, एक शाखा पर हफ्तों या महीनों तक काम करने का एक बड़ा जोखिम है; ट्रंक परिवर्तन, उस बिंदु तक डालना जारी रख सकते हैं, जहां विकास की दो लाइनें इतनी भिन्न होती हैं कि यह शाखा को ट्रंक में वापस विलय करने की कोशिश करना एक दुःस्वप्न बन सकता है।
ट्रंक परिवर्तनों को शाखा में नियमित रूप से विलय करने से इस स्थिति से सबसे अच्छा बचा जाता है। एक नीति बनाएं: सप्ताह में एक बार, पिछले सप्ताह के ट्रंक में परिवर्तन के मूल्य को शाखा में मर्ज करें ...
http://thedesignspace.net/MT2archives/000680.html
... ग्रहण सीवीएस ट्यूटोरियल का यह खंड ग्रहण वेबसाइट पर पॉल गिलेजन के लेख पर आधारित है: ग्रहण और सीवीएस के साथ शाखाओं में बंटी , और उनकी शर्तों के तहत उनकी अनुमति के साथ उपयोग किया जाता है ईपीएल लाइसेंस। मैं उनके संस्करण में जो बदलाव कर रहा हूं, वे मुख्य रूप से इसे स्टेप इमेजेज और एक्सप्लेनेशन द्वारा और अधिक विस्तार के साथ विस्तारित करने के लिए हैं, और इसे शुरुआती और डिजाइनरों के लिए अधिक सुलभ बनाने के प्रयास में अपने स्वयं के शुरुआती ट्यूटोरियल के साथ इसे एकीकृत करते हैं। अनुभवी डेवलपर्स शायद पॉल के संस्करण से काम करना पसंद करेंगे ...
http://learnsoftwareprocesses.com/2007/12/29/common-branching-strategies/
... यहाँ कुछ सामान्य शाखा मॉडल हैं:
- ब्रांच-बाय-रिलीज़ मॉडल: सबसे आम ब्रांचिंग रणनीतियों में से एक है, उत्पाद रिलीज के साथ शाखाओं को संरेखित करना। एक शाखा एक रिलीज के लिए सभी सॉफ्टवेयर विकास संपत्ति रखती है। कभी-कभी, अपडेट को एक रिलीज़ से दूसरे रिलीज़ में मर्ज किए जाने की आवश्यकता होती है, लेकिन वे आमतौर पर मर्ज नहीं होते हैं। जब कोई रिटायर होता है, तो शाखाएं बंद कर दी जाएंगी।
- पदोन्नति प्रति शाखा: एक और बहुत ही सामान्य दृष्टिकोण सॉफ्टवेयर परिसंपत्ति पदोन्नति के स्तर के साथ शाखाओं को संरेखित करना है। एक विशिष्ट विकास संस्करण को एक शाखा में विभाजित किया जाता है, जिस पर सभी एकीकरण और सिस्टम परीक्षण किए जाते हैं। जब आप परीक्षण पूरा कर लेते हैं, तो सॉफ़्टवेयर डेवलपमेंट एसेट्स प्रोडक्शन ब्रांच में पहुंच जाते हैं और अंततः उन्हें तैनात किया जाता है।
- टास्क प्रति शाखा: अतिव्यापी कार्यों (या गतिविधियों) और उत्पादकता में कमी से बचने के लिए, आप उन्हें एक अलग शाखा पर अलग कर सकते हैं। ध्यान रखें कि ये अल्पकालिक शाखाएं हैं जिन्हें कार्य पूरा होते ही मर्ज किया जाना चाहिए, अन्यथा आवश्यक रूप से विलय का प्रयास उन्हें पहली बार में बनाने के उत्पादकता लाभों से अधिक हो सकता है।
- प्रति घटक शाखा: आप सिस्टम आर्किटेक्चर के साथ प्रत्येक शाखा को संरेखित कर सकते हैं। इस रणनीति में, आप अलग-अलग घटकों (या सबसिस्टम) को शाखा देते हैं। तब एक घटक विकसित करने वाली टीम यह तय करती है कि अपने कोड को एकीकरण शाखा के रूप में कार्य करने वाली विकास लाइन में वापस मर्ज करें। यह रणनीति अच्छी तरह से काम कर सकती है यदि सिस्टम आर्किटेक्चर जगह में है और व्यक्तिगत घटकों में अच्छी तरह से परिभाषित इंटरफेस हैं। तथ्य यह है कि आप शाखाओं पर घटक विकसित करते हैं, सॉफ्टवेयर विकास परिसंपत्तियों पर अधिक सूक्ष्म नियंत्रण को सक्षम बनाता है।
- प्रति प्रौद्योगिकी शाखा: सिस्टम आर्किटेक्चर के साथ एक और ब्रांचिंग रणनीति। इस मामले में शाखाओं को प्रौद्योगिकी प्लेटफार्मों से जोड़ा जाता है। कॉमन कोड एक अलग शाखा पर प्रबंधित किया जाता है। सॉफ्टवेयर विकास की अद्वितीय प्रकृति के कारण शाखाओं पर संपत्ति का प्रबंधन, वे शायद विलय नहीं ...
http://msdn.microsoft.com/en-us/library/bb668955.aspx
... ब्रांचिंग और मर्जिंग दिशानिर्देशों के सारांश के लिए इस गाइड में "सोर्स कंट्रोल गाइडलाइन्स" में ब्रांचिंग और मर्जिंग दिशानिर्देशों का संदर्भ लें । ... जब शाखाओं में बँटे, तो निम्नलिखित पर विचार करें:
- जब तक आपकी विकास टीम को समवर्ती फ़ाइलों के एक ही सेट पर काम करने की आवश्यकता न हो, तब तक शाखा न लगाएं। यदि आप इसके बारे में अनिश्चित हैं, तो आप किसी बिल्ड को लेबल कर सकते हैं और बाद में उस बिल्ड से एक शाखा बना सकते हैं। मर्जिंग शाखाएं समय लेने वाली और जटिल हो सकती हैं, खासकर अगर उनके बीच महत्वपूर्ण बदलाव हों।
- अपनी शाखा के पेड़ों की संरचना करें ताकि आपको केवल पदानुक्रम के बजाय पदानुक्रम (शाखा वृक्ष के ऊपर और नीचे) के साथ विलय करने की आवश्यकता हो। पदानुक्रम में शाखा करने के लिए आवश्यक है कि आप एक आधारहीन मर्ज का उपयोग करें, जिसके लिए अधिक मैन्युअल संघर्ष समाधान की आवश्यकता होती है।
- शाखा पदानुक्रम शाखा माता-पिता और शाखा बच्चे पर आधारित है, जो डिस्क पर स्रोत कोड की भौतिक संरचना से भिन्न हो सकती है। अपने मर्ज की योजना बनाते समय, डिस्क पर भौतिक संरचना के बजाय तार्किक शाखा संरचना को ध्यान में रखें।
- बहुत गहराई से शाखा न करें। क्योंकि प्रत्येक मर्ज को निष्पादित करने और संघर्षों को हल करने में समय लगता है, एक गहरी शाखा संरचना का मतलब यह हो सकता है कि मुख्य शाखा के प्रचार के लिए एक बच्चे की शाखा में परिवर्तन बहुत लंबा समय लग सकता है। यह प्रोजेक्ट शेड्यूल को नकारात्मक रूप से प्रभावित कर सकता है और बग को ठीक करने के लिए समय बढ़ा सकता है।
- एक उच्च-स्तर पर शाखा और कॉन्फ़िगरेशन और स्रोत फ़ाइलों को शामिल करें।
- समय के साथ अपनी शाखाओं की संरचना का विकास करें।
- विलय को निष्पादित करने और टकराव को हल करने के लिए एक या अधिक डेवलपर्स की आवश्यकता होती है। मर्ज किए गए स्रोत का पूरी तरह से परीक्षण किया जाना चाहिए क्योंकि यह खराब मर्ज निर्णय लेने के लिए असामान्य नहीं है जो निर्माण को अस्थिर कर सकता है।
- शाखा पदानुक्रम में विलय करना विशेष रूप से कठिन है और आपको कई संघर्षों को मैन्युअल रूप से संभालने की आवश्यकता होती है जो अन्यथा स्वचालित रूप से नियंत्रित किए जा सकते हैं।
यह निर्णय कि क्या एक शाखा का निर्माण किया जा सकता है, क्या वास्तविक समय में विलय की लागतों की लागत शाखाओं के बीच विलय की ओवरहेड लागत से अधिक है ...
http://kashfarooq.wordpress.com/2009/11/23/bazaar-branching-strategy-with-a-subversion-trunk/
http://social.msdn.microsoft.com/Forums/en/tfsversioncontrol/thread/f127676c-8f05-410c-9a30-0eb43a26a9fa
इवोल्यूशन सिस्टम के मामले में रिलीज़ आइसोलेशन शाखा रणनीति के लिए सबसे अच्छा अभ्यास।
http://branchingguidance.codeplex.com/
"Microsoft टीम फ़ाउंडेशन सर्वर ब्रांचिंग गाइडेंस" - विभिन्न परियोजनाओं के अनुरूप सिफारिशों के साथ विशाल और विस्तृत दस्तावेज़: यहाँ HTML संस्करण । साबित होता है कि Microsoft एक-आकार-फिट-सभी दृष्टिकोण wrt ब्रांचिंग रणनीतियों में विश्वास नहीं करता है।
https://stackoverflow.com/questions/597707/best-branching-strategy-when-doing-continuous-integration
जब आप निरंतर एकीकरण करना चाहते हैं तो उपयोग करने के लिए सबसे अच्छी शाखा रणनीति क्या है? ... उत्तर आपकी टीम के आकार और आपके स्रोत नियंत्रण की गुणवत्ता और सही ढंग से जटिल परिवर्तन सेट को मर्ज करने की क्षमता पर निर्भर करता है ...
- http://www.zeroturnaround.com/blog/continuous-integration-and-feature-branches/
निरंतर एकीकरण के साथ ब्रान्चिंग इंटरप्ले का अधिक विस्तृत विश्लेषण, हडसन / जेनकिंस के साथ ठोस अनुभव के आधार पर - उपयोगी संदर्भों के एक जोड़े के साथ
.. । मेरी सबसे बड़ी खोज यह थी कि यद्यपि सीआई कमिटमेंट, पुश करने और अक्सर फीडबैक प्राप्त करने के बारे में है (यानी CI क्लस्टर आपको प्रतिक्रिया देता है कि आपका वर्कस्टेशन आपको कभी भी एक ही राशि में नहीं दे सकता है), वास्तव में शुद्ध शुद्धतावादी सीआई को एक और आवश्यकता है - कि टीम को उसी आधार रेखा पर काम करने की जरूरत है ...
सामग्री का उपयोग किया जाता है
http://codicesoftware.blogspot.com/2010/03/branching-strategies.html
... CVS और SVN पूरी ब्रांचिंग / विलय की रणनीति को हतोत्साहित कर रहे थे क्योंकि वे ऐसा करने में पूरी तरह से असमर्थ थे ... ... सरल नियम: आपके द्वारा लागू की जाने वाली प्रत्येक नई सुविधा या बगफ़िक्स के लिए एक कार्य शाखा बनाएं ... यह SVN / CVS उपयोगकर्ताओं के लिए ओवरकिल की तरह लग सकता है, लेकिन आपको पता है कि कोई भी आधुनिक SCM आपको एक सेकंड में शाखाएं बनाने देगा, इसलिए कोई वास्तविक ओवरहेड नहीं है।
महत्वपूर्ण नोट: यदि आप इसे ध्यान से देखेंगे तो आप देखेंगे कि मैं धनी-जप करने वाले के रूप में कार्य शाखाओं का उपयोग करने की बात कर रहा हूँ ...
http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m1/index.jsp?topic=/com.ibm.rational.clearcase.cc_proj.doc/c_bntr_plnbrstrat.htm
... ब्रांचिंग नीति विकास से प्रभावित है। परियोजना के उद्देश्य और कोड बेस के विकास को नियंत्रित करने के लिए एक तंत्र प्रदान करता है। ब्रांचिंग नीति के रूप में कई संगठन हैं जो तर्कसंगत क्लीयरेज़ संस्करण नियंत्रण का उपयोग करते हैं। लेकिन ऐसी भी समानताएं हैं जो सर्वोत्तम प्रथाओं के लिए सामान्य पालन को दर्शाती हैं ...
http://blogs.open.collab.net/svn/2007/11/branching-strat.html
... तोड़फोड़ मॉडल (या सामान्य रूप से खुला स्रोत मॉडल अधिक सटीक) वह है जो अस्थिर ट्रंक मॉडल में दिखाया जा रहा है। ।
http://en.wikipedia.org/wiki/Trunk_%28software%29
सॉफ्टवेयर विकास के क्षेत्र में, ट्रंक संशोधन नियंत्रण के तहत एक फ़ाइल ट्री की अनाम शाखा (संस्करण) को संदर्भित करता है । ट्रंक को आमतौर पर एक परियोजना का आधार माना जाता है, जिस पर विकास आगे बढ़ता है। यदि डेवलपर्स ट्रंक पर विशेष रूप से काम कर रहे हैं, तो इसमें हमेशा परियोजना का नवीनतम अत्याधुनिक संस्करण होता है, लेकिन इसलिए यह सबसे अस्थिर संस्करण भी हो सकता है। एक अन्य दृष्टिकोण ट्रंक से एक शाखा को विभाजित करना है, उस शाखा में परिवर्तन लागू करना और परिवर्तनों को वापस ट्रंक में मर्ज करना है जब शाखा स्थिर और काम करने वाली साबित हुई है। विकास मोड और प्रतिबद्ध पर निर्भर करता हैनीति में ट्रंक में सबसे स्थिर या कम से कम स्थिर या कुछ-के-बीच का संस्करण हो सकता है।
अक्सर मुख्य डेवलपर का काम ट्रंक में होता है और स्थिर संस्करण शाखाबद्ध होते हैं, और कभी-कभी बग-फिक्स को शाखाओं से ट्रंक में विलय कर दिया जाता है। जब भविष्य के संस्करणों का विकास गैर-ट्रंक शाखाओं में किया जाता है, तो यह आमतौर पर उन परियोजनाओं के लिए किया जाता है जो अक्सर बदलते नहीं हैं, या जहां एक बदलाव के विकास में एक लंबा समय लगने की उम्मीद है, जब तक कि यह ट्रंक में शामिल करने के लिए तैयार नहीं होगा। ।
http://www.mcqueeney.com/roller/page/tom/20060919
... ये सबवर्सन सर्वोत्तम प्रथाओं पर एक वेबिनार से नोट्स हैं , CollabNet द्वारा 30 अगस्त, 2006 को आयोजित किया गया। ... दो संगठनात्मक रणनीतियाँ: अस्थिर ट्रंक बनाम स्थिर ट्रंक ... ... जब संभव हो तो एक अस्थिर ट्रंक ...
https://stackoverflow.com/questions/153812/subversion-is-trunk-really-the-best-place-for-the-main-development
SVN में, ट्रंक मुख्य विकास के लिए अनुशंसित स्थान है और मैं इस सम्मेलन का उपयोग करता हूं मेरी सभी परियोजनाओं के लिए। हालांकि, इसका मतलब यह है कि ट्रंक कभी-कभी अस्थिर होता है, या यहां तक कि टूट जाता है ... ... यह बेहतर नहीं होगा कि "शाखा / देव जैसी कुछ शाखा पर" जंगली विकास "करें और जब निर्माण उचित हो तो ट्रंक में विलय करें" ठोस?
- ... ट्रंक वह जगह है जहां चल रहा विकास होना चाहिए। आपको वास्तव में "टूटे" कोड के साथ कोई समस्या नहीं होनी चाहिए, अगर हर कोई उन्हें करने से पहले अपने परिवर्तनों का परीक्षण कर रहा है। अंगूठे का एक अच्छा नियम है कि आप अपने परिवर्तनों को कोड करने के बाद एक अपडेट (रिपॉज से सभी नवीनतम कोड प्राप्त करें) करें। फिर निर्माण और कुछ इकाई परीक्षण करें। यदि सब कुछ बनता है और काम करता है, तो आपको इसे जांचना अच्छा होना चाहिए ...
- ... नहीं ट्रंक सबसे अच्छी जगह नहीं है। हमारे संगठन में हम हमेशा इस दृष्टिकोण का पालन करते हैं: ट्रंक में रिलीज़ कोड होता है, इसलिए यह हमेशा संकलन करता है। प्रत्येक नई रिलीज / मील के पत्थर के साथ हम एक नई शाखा खोलते हैं। जब भी कोई डेवलपर किसी आइटम का मालिक होता है, तो वह इस रिलीज़ शाखा के लिए एक नई शाखा बनाता है और इसे परीक्षण करने के बाद ही रिलीज़ शाखा में विलीन कर देता है। सिस्टम परीक्षण के बाद रिलीज शाखा को ट्रंक में मिला दिया गया है ...
http://blog.yclian.com/2009/03/working-on-branches-and-stable-trunk.html
... मैं ट्रंक पर काम करता था क्योंकि मैंने जिन परियोजनाओं पर काम किया था, उनके लिए यह या तो मैं था। एकमात्र डेवलपर या टीम ने सुनिश्चित किया कि सभी कोड चेक-इन ने स्थानीय परीक्षण पास कर लिए हैं। अन्यथा, हमने बग फिक्स के लिए (हम अभी भी) शाखाएं बनाईं, नई सुविधाओं के लिए बड़े कोड आदि,
लगभग 2 महीने पहले, मेरे पास कमल के साथ एक छोटा सत्र था और उन्होंने मेरे साथ कहानी / शाखा का विचार साझा किया । और जैसे-जैसे मेरी टीम और अधिक देव लोगों के साथ बढ़ने लगी, मुझे और अधिक ब्रांचिंग को प्रोत्साहित करने की आवश्यकता महसूस हुई और अब यह एक नियम बन गया है। CI के साथ परिभाषित स्वचालित परीक्षणों के साथ एक परियोजना के लिए, एक स्थिर ट्रंक की गारंटी है और यह अभ्यास इसमें बहुत अच्छी तरह से फिट हो सकता है।
हम git का उपयोग नहीं करते हैं, लेकिन तोड़फोड़ इसलिए करते हैं कि हमने कैसे शुरुआत की और हम अभी भी इसके साथ सहज हैं (ज्यादातर समय) ...
http://www.ericsink.com/scm/scm_branches.html
यह ऑनलाइन कंट्रोल सोर्स नामक एक पुस्तक का हिस्सा है , जो स्रोत नियंत्रण, संस्करण नियंत्रण और कॉन्फ़िगरेशन प्रबंधन पर एक सर्वोत्तम प्रैक्टिस गाइड है
... एरिक के पसंदीदा ब्रांचिंग अभ्यास ... एक "मूल रूप से अस्थिर" ट्रंक रखें। ट्रंक में अपना सक्रिय विकास करें, जिसकी स्थिरता जारी होने के साथ बढ़ती जाती है। आपके जहाज करने के बाद, एक रखरखाव शाखा बनाएं और इसे हमेशा बहुत स्थिर रखें ...
... अगले अध्याय में मैं इसे विलय करने के विषय में तब्दील करूंगा ...
http://marc.info/?l=forrest-dev&m=112504297928196&w=2 अपाचे फॉरेस्ट प्रोजेक्ट के
लिए शाखाओं की रणनीति पर चर्चा करते हुए धागे का मेल शुरू करना
- कृपया ध्यान दें कि वर्तमान में परियोजना रिलीज शाखाओं के साथ अस्थिर ट्रंक मॉडल का उपयोग करती है:
- "विकास कार्य एसवीएन के ट्रंक पर किया जाता है ... एसवीएन की" रिलीज़ शाखाएं "हैं, उदाहरण के लिए forrest_07_branch।" ( परियोजना दिशानिर्देश )
- "रिलीज उम्मीदवार पैकेज का निर्माण ... 17. एसवीएन में एक रखरखाव शाखा बनाएं ..." ( कैसे जारी करें )
ओ रेली सीवीएस शाखाकरण डॉक्स:
http://commons.oreilly.com/wiki/index.php/Essential_CVS/Using_CVS/Tagging_and_Branching#Basically_stable
- ... मूल रूप से स्थिर शाखा दर्शन में कहा गया है कि ट्रंक में प्रोजेक्ट डेटा होना चाहिए जो हमेशा रिलीज के लिए तैयार होने के करीब है ... ... इस दर्शन के अधिक उदार रूपांतर कुछ भी अनुमति देते हैं जो डेवलपर यूनिट-टेस्टिंग को मर्ज करने की अनुमति देता है। सूँ ढ। इस तरह के आराम के दृष्टिकोण के लिए एक रिलीज के उम्मीदवार को बंद करने की आवश्यकता होती है और प्रकाशन से पहले एक पूर्ण क्यूए विश्लेषण के माध्यम से डाल दिया जाता है ...
- ... मूल रूप से अस्थिर दर्शन में कहा गया है कि ट्रंक में इसकी स्थिरता की परवाह किए बिना नवीनतम कोड होना चाहिए, और यह कि रिलीज उम्मीदवारों को क्यूए के लिए बंद कर दिया जाना चाहिए।
... अधिक उदार भिन्नताएं प्रयोगात्मक कोड, रीफैक्टरिंग और अन्य विशेष-केस कोड के लिए भी शाखाएं देती हैं। ट्रंक में एक शाखा का विलय शाखा के प्रबंधकों द्वारा किया जाता है। ...
- मेरे द्वारा की गई खोजों में से किसी में भी संसाधन से ऊपर नोट नहीं हुआ (CVS संबंधित दिशानिर्देश अब लोकप्रिय नहीं हैं?)
एससीएम (लेख मजबूरन) में सर्वोत्तम प्रथाओं पर
http://www.perforce.com/perforce/papers/bestpractices.html
... एससीएम तैनाती के छह सामान्य क्षेत्रों, और कुछ मोटे-कणों का उन क्षेत्रों में से प्रत्येक के भीतर सर्वोत्तम प्रथाओं। निम्नलिखित अध्याय प्रत्येक आइटम की व्याख्या करते हैं ...
कार्यक्षेत्र, कोडलाइन, शाखा, परिवर्तन प्रचार, निर्माण, प्रक्रिया ...