रिलीज के लिए सही ब्रांचिंग रणनीति चुनना


11

एक नई परियोजना पर एक नई देव टीम के साथ शुरू करना और हमें अपने स्रोत रिपॉजिटरी ( उदाहरण के लिए Microsoft टीम फाउंडेशन 2010 ) के लिए अपनी ब्रांचिंग रणनीति को परिभाषित करना होगा । हमने इस पर एक चिपचिपी चर्चा में भाग लिया है या नहीं ...

। एक रिलीज शाखा है जिसमें से हम उत्पादन बनाता है और तब लेबल करते हैं जब कुछ वास्तव में जारी किया जाता है

या

बी । उत्पादन में प्रत्येक नई रिलीज़ के लिए एक नई रिलीज़ शाखा है ( उदा। संस्करण 1, 2, 3, आदि ... )

विकल्प A बहुत सीधा-सा प्रतीत होता है, लेकिन हमें यकीन नहीं है कि यह लंबे समय तक समस्या का कारण बनेगा। विकल्प बी ऐसा लगता है जैसे यह सिर्फ एक बार लंबे समय तक रहने वाली शाखाओं को बनाता है जो समय के साथ ढेर हो जाते हैं।

क्या किसी के पास कोई ऐसा अनुभव है जो हमें तय करने में मदद कर सकता है? विशेष रूप से, मैं यह सुनना चाह रहा हूं कि दर्द-बिंदु किसी एक विकल्प के लिए कहां हैं। टीएफएस और / या रिलीज-मैनेजमेंट निहितार्थ के सापेक्ष विशिष्ट अनुभव प्रदान करने के लिए स्वतंत्र महसूस करें।

जवाबों:


15

विकल्प ए। केवल रिलीज के लिए मेनलाइन और टैगिंग का उपयोग करना

पेशेवरों:

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

विपक्ष:

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

व्यक्तिगत रूप से मैं इस दृष्टिकोण को पसंद करता हूं। कोड कवरेज और यूनिट परीक्षणों को उस कोड की पहचान करनी चाहिए जो दरवाजे से बाहर जाने के लिए तैयार नहीं है और लोगों को उस कोड पर काम नहीं करना चाहिए जो वर्तमान पुनरावृत्ति के दौरान जारी नहीं किया जाएगा। अमूर्त या अन्य तंत्र द्वारा शाखाओं का उपयोग दीर्घकालिक परिवर्तन और प्रगति में काम करने के लिए किया जा सकता है।

जब आप ऐसा नहीं करते हैं तो आप खुद को मर्ज के मुद्दों, बासी कोड, सुविधाओं से मुक्त करना शुरू कर देते हैं जो कभी जारी नहीं होते हैं, आदि।

विकल्प बी। रिलीज द्वारा शाखा

पेशेवरों:

  • आप अगली पुनरावृत्ति पर काम करना शुरू कर सकते हैं, जबकि वर्तमान पुनरावृत्ति स्वीकृति परीक्षण के अपने दौर को पूरा करता है।
  • अन्य सामान im ज़रूर

विपक्ष:

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

मैं इस समाधान ^ _ ^ का बहुत बड़ा प्रशंसक नहीं हूं।

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

आदर्श रूप से, हालांकि मुझे लगता है कि आप चाहते हैं कि अपवाद प्रक्रिया हो, नियम नहीं।

विकल्प सी। पागल बोनस विकल्प

यदि आप फैंसी प्राप्त करना चाहते हैं, तो आप प्रति उपयोगकर्ता-स्टोरी / प्रति-सुविधा शाखा मॉडल पर भी विचार कर सकते हैं। ( एक भयानक विचार TFS या किसी भी गैर DVCS में जबकि एक ही समय में अविश्वसनीय रूप से लागू करने के लिए यदि कोई DVCS जैसे git या mercurial का उपयोग कर रहा है )।

अतीत में मैंने एक पिछले नियोक्ता रखरखाव टीम के लिए नीचे लागू किया था जो एक विरासत कोड आधार के साथ काम करती थी जिसे आसानी से svn से भाड़े पर चित्रित नहीं किया जा सकता था। अनावश्यक रूप से बहुत सारे काम शामिल थे, जो हमेशा बेहतर रिलीज को समन्वित करने के बजाए हमेशा भरोसेमंद मेनलाइन की व्यावसायिक आवश्यकता को पूरा करते थे। । ।

  1. देवों द्वारा उनकी टीमों देव शाखा में सुविधाएँ विकसित की गईं।
  2. जब एक फीचर तैयार होने के लिए सहकर्मी ने समीक्षा की तो देवों ने इसे एक साथ मिल कर देव शाखा से सीआर शाखा में मिला दिया और फीचर आईडी / यूजर स्टोरी को शीर्षक में शामिल किया। * पूर्व-प्रतिबद्ध हुक द्वारा लागू *
  3. सीआर पास करने के बाद क्यूए शाखा में सुविधा को बढ़ावा देने के लिए एक व्यवस्थापक उपकरण का उपयोग किया जाता है। (मैंने एक छोटा टर्मिनल एप्लिकेशन लिखा है जो विभिन्न स्वीकृति चरणों में मौजूद उपयोगकर्ता कहानियों को सूचीबद्ध करता है और ऑपरेटर को उन स्वीकृति चरणों को बढ़ावा देने या इनबेट करने की अनुमति देता है)
  4. क्यूए स्वचालन और मैनुअल प्रयोज्य परीक्षणों को चलाता है। यदि सुविधा अच्छी है, तो इसे रिलीज़ शाखा (मेनलाइन) में धकेल दिया जाता है। यदि सुविधा को इसके डीओटी / रिजेक्टेड क्यूए शाखा से बाहर कर दिया जाता है, जब तक कि देव परीक्षण के दौरान लाए गए मुद्दों को संबोधित नहीं कर सकते हैं और सीआर शाखा में एक पैच जोड़ सकते हैं।
  5. यदि कोड को QA शाखा से वापस कर दिया गया था और एक फिक्स लागू किया गया है तो टर्मिनल उपकरण सीआर शाखा से QA शाखा पर सुविधा वापस लाने के लिए आवश्यक परिवर्तनों को फिर से लागू करेगा ताकि QA कोड की पुन: समीक्षा कर सके और या तो इसे बढ़ावा दे या इसे फिर से दर्ज करें।
  6. किसी भी समय रिहाई शाखा स्थिर स्थिति में होनी चाहिए।
  7. एक रिलीज के बाद नए देव, क्यूए, और सीआर मेनलाइन से अलग हैं।

@Keith_Brings यह एक बहुत अच्छा सारांश है, धन्यवाद। जैसा कि आपने पहले ही संकेत दिया था कि विकल्प सी वास्तव में एक विकल्प नहीं है क्योंकि मैं टीएफएस का उपयोग कर रहा हूं, लेकिन दिलचस्प कोई भी नहीं।
जोजेकी

मैं यह नहीं देखता कि विकल्प A कैसे काम कर सकता है। मेरी कंपनी में, हमारे पास अलग-अलग ग्राहकों के लिए अलग-अलग रिलीज़ हैं। यदि हम अभी भी संस्करण 1.0 पर सुविधा / हॉटफ़िक्स विकास कर रहे हैं, और सक्रिय रूप से संस्करण 2.0 पर भी काम कर रहे हैं, और शायद 3.0 के रूप में अच्छी तरह से, हम यह सब एक शाखा पर नहीं कर सकते हैं। शायद आपके पास अपने रिलीज़ मॉडल के कारण विकल्प ए का आनंद लेने का आनंद है। लेकिन यह हर किसी की रिहाई का मॉडल नहीं है, और हम में से उन लोगों के लिए जो फीचर रेंगना या कई समानांतर रिलीज के साथ अटक गए हैं, हमें विकल्प बी का उपयोग करना होगा
void.pointer

6

हमारे पास प्रत्येक रिलीज के लिए अलग-अलग शाखाएं हैं जिन्हें हम बाहर रखते हैं (वर्ष 4)। यह बहुत सुविधाजनक है जब आपको एक विशिष्ट रिलीज खींचने की आवश्यकता होती है।

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

जब आप बग या फ़ीचर पेश किए गए थे तब आप इसकी तुलना करना भी आसान बनाते हैं।

शाखाओं की संख्या के बारे में चिंता न करें या बिना बदलाव के समय के बारे में। आपका संस्करण प्रणाली आपको नियंत्रण देने और अपनी परियोजना के विकास का इतिहास प्रदान करने के लिए है। इतिहास बदलने की प्रवृत्ति नहीं है ... और अपने cvs का सामना करने में सक्षम नहीं होने के बारे में चिंता न करें। हम एक डेवलपमेंट ब्रांच में Perforce, 9000+ फाइल्स का उपयोग करते हैं, रिलीज़ (एस) के लिए 50 डेवलपमेंट ब्रांचों पर काम कर रहे हैं और जैसा कि हमने पहले ही कहा था, एक ब्रांच प्रति रिलीज़ जिसे हम पब्लिश करते हैं। Perforce किसी भी कठिन साँस नहीं ले रहा है।

संक्षेप में: एक डेवलपर / अनुचर / बग-फिक्सर / समस्या-शिकारी के रूप में अपने जीवन को आसान बनाएं और शाखाओं की संख्या या फ़ाइलों की संख्या के बारे में चिंता न करें। कोई भी स्वाभिमानी सीवी सामना करेंगे।

संपादित करें:

हमारे पास जितनी भी शाखाएँ हैं, उनके संबंध में हमें कोई भ्रम नहीं है। रिलीज शाखाओं के लिए हमारी नामकरण योजना और विकास (या काम) शाखाओं के लिए हमारी 1 अंक 1 शाखा नीति का इससे कुछ लेना-देना हो सकता है।

रिलीज शाखाओं को उनके द्वारा जारी रिलीज के लिए नामित किया जाता है, अर्थात: रिलीज 2011 सर्विस पैक 1 के लिए R2011SP1। हमारी कार्य शाखाओं में कम बुद्धिमान नाम हैं: सब 01, सब 02, सब03 आदि। "उप" इस तथ्य से आता है कि सभी कार्य शाखाएं उप शाखा हैं। स्वीकृति शाखा की। स्वीकृति शाखा वह है जहां सभी मुद्दे एकत्र किए जाते हैं जो जारी होने के लिए तैयार हैं।

हमारी 1 अंक 1 कार्य शाखा नीति, इस तथ्य के साथ संयुक्त है कि हमारी समस्या ट्रैकिंग प्रणाली को "शाखा" फ़ील्ड के साथ अनुकूलित किया गया है, यह सुनिश्चित करता है कि हम हमेशा जानते हैं कि किस शाखा में क्या समस्या विकसित हुई है। जब किसी समस्या को स्वीकृति शाखा में एकीकृत किया जाता है तो यह फ़ील्ड अपडेट हो जाती है। इसका मतलब है कि हम हमेशा जानते हैं कि कौन से मुद्दे रिलीज़ के लिए तैयार हैं (एक बार स्वीकृति परीक्षण के बाद)। इसी तरह हम इस फील्ड को तब अपडेट करते हैं जब एक रिलीज़ ब्रांच बनाई जाती है और इस तरह हम हमेशा ट्रैक कर सकते हैं जिसमें जारी किया गया अंक जारी करें।


1
मेरा मानना ​​है कि आप TFS में लेबल से शाखा कर सकते हैं। जब तक आप लेबल को नहीं भूल गए, तब तक आपको वर्तमान उत्पाद संस्करणों पर हॉट फ़िक्स के लिए ठीक होना चाहिए।
कीथ

@KeithBrings यह सही है, मैंने अभी परीक्षण किया है और आप वास्तव में एक लेबल से शाखा कर सकते हैं।
जोजेकी

@MarjanVenema मैं सिस्टम पर लोड के बारे में इतना चिंतित नहीं हूं क्योंकि भ्रम के कारण बड़ी संख्या में शाखाएं हो सकती हैं। मैं भी थोड़ा चिंतित हूं कि रिलीज शाखाओं के ढेर में किए गए बदलावों को अन्य रिलीज शाखाओं में विलय नहीं किया जाएगा जो उन्हें प्राप्त करना चाहिए, मेनलाइन पर कभी ध्यान न दें। क्या आप इस प्रकार की समस्याओं में भाग गए हैं?
जोजेकी

@ जोइकी: नहीं, कोई भ्रम नहीं है। मेरे उत्तर के लिए अद्यतन देखें।
मार्जन वेनेमा

2

यह सब संदर्भ के बारे में है: आप कितनी बार रिलीज करते हैं और एक रिलीज में क्या है।

यहां बी केस का उपयोग करके मैंने अपने पुराने काम के साथ केस केस का थोड़ा सा अध्ययन किया है (हमने इसे उद्देश्य से शाखा कहा है )।

कहानी को संदर्भ में रखने के लिए,

  • एक रिलीज में हमारे सॉफ्टवेयर में नई विशेषताएं शामिल थीं: नए गेमिंग मोड, नई कार्यक्षमता, नए कॉन्फ़िगरेशन विकल्प।
  • रिलीज़ चक्र काफी लंबा था: हमारे ग्राहक ऐसे विश्वविद्यालय थे जो आमतौर पर एक वर्ष के लिए एक सुविधा के साथ चिपके रहते थे।

मुख्य विकास तब तक ट्रंक में बनाया गया था जब तक कि हम एक निश्चित रिलीज के लिए एक सुविधा-पूर्ण स्थिति तक नहीं पहुंच गए थे। उस बिंदु पर, हम एक शाखा बनाएंगे, प्रोजेक्टनेम-ज़मीन -2012 कहेंगे और उसी शाखा में हमारे गुणवत्ता परीक्षण और बग को ठीक करेंगे। एक बार जब हम सार्वजनिक रिलीज़ के लिए तैयार होते हैं, तो हम उस शाखा में कोड टैग करेंगे, और रिलीज़ करेंगे।

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

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

तो जो सवाल आपको खुद से पूछना है वो हैं:

  • मैं कितनी बार जारी करता हूं?
  • क्या मेरी रिलीज़ 100% पिछड़ी संगत होगी?
  • क्या मेरे ग्राहक बग्स को ठीक करने के लिए पूरी तरह अपग्रेड करने के साथ ठीक होंगे?

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


मुझे पसंद है कि आप उस विकल्प को कैसे समाप्त करते हैं। इस मामले में, हम अपने स्वयं के ग्राहक हैं ( बोलने के तरीके में ) इसलिए तैनाती काफी हद तक हमारे नियंत्रण में रहेगी। हम एक स्क्रम की दुकान भी हैं और उम्मीद है कि लगातार रिलीज़ साइकिल ( जैसे हर 2-4 सप्ताह )। जबकि हम रोलिंग अपग्रेड को सपोर्ट करने की उम्मीद करते हैं, बैकवर्ड कम्पैटिबिलिटी केवल एक समस्या होगी जब तक कि अपग्रेड को रोल-आउट करने में समय लगता है ... मिनट्स हो सकता है। उस की आवाज़ से; आपके अनुभव में; विकल्प बी मेरे लिए सबसे अच्छा विकल्प नहीं हो सकता है। जानकारी के लिए धन्यवाद, बहुत दिलचस्प।
जोजेकी

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

1

मैं विकल्प पसंद करता हूं। ट्रंक और शाखा रिलीज पर विकसित करें जब वे स्थिर होते हैं। यह उत्पादन रिलीज पर लागू हॉट फ़िक्स को एकीकृत करने में महत्वपूर्ण रूप से काम करता है।

मुझे एक टीम की मदद करने के लिए अनुबंधित किया गया है जिसने विकल्प बी को ट्रैक पर वापस लाने का प्रयास किया।

कुछ बातों पर विचार करें।

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

0

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

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

इस प्रकार मैं कुछ ऐसा सुझाता हूं जो वास्तव में और बी दोनों का मिश्रण है ; दोनों के अच्छे पहलू हैं, लेकिन दोनों ही अपने आप में पूर्ण नहीं हैं। दोनों दुनिया का सबसे अच्छा उपयोग करें।


0

मैंने अतीत में विकल्प (बी) को प्रभावी ढंग से लागू करने के लिए टीएफएस का उपयोग किया है।

जब यह छोटे टुकड़ों में किया जाता है तो ब्रांचिंग / मर्जिंग एक बेहतरीन उपकरण है। कठिनाई एक शाखा बनाने में झूठ नहीं है (यह मूर्खतापूर्ण आसान है), और न ही एक सप्ताह के काम को पेड़ के ऊपर वापस धकेलना (यह आमतौर पर आसान भी है) ... यह आपके सिस्टम नियंत्रण के पीछे सीआई सिस्टम को स्वचालित रूप से काम करने के लिए प्राप्त करने में है आप।

यदि सिस्टम स्वचालित रूप से आपकी शाखा के लिए परीक्षण नहीं बना रहा है और चल रहा है, तो ब्रांचिंग लूट है।

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

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

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