2010-12-13 12 views
13

यदि एक शाखा रणनीति में n सुविधा शाखाएं, एक "मास्टर" (मुख्य रेखा) और "एकीकरण" शाखा शामिल है। एकीकरण शाखा का उद्देश्य क्या है? फीचर शाखा पर परीक्षण और एकीकरण क्यों नहीं किया जा सकता है?"एकीकरण शाखा" का उद्देश्य क्या है?

उत्तर

13

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

बेशक, आप इस तरह से अलग करने के लिए नहीं हैं। आप फीचर शाखाओं पर एकीकरण कर सकते हैं, जैसे कि मास्टर पर अपना पूरा काम कर सकता है। लेकिन चिंताओं को अलग करना एक अच्छी बात है।

+1

इस ब्रांचिंग रणनीति का उपयोग कर एक सामान्य वर्कफ़्लो क्या है? फीचर शाखा पर कोड "डेवलपर पूर्ण" प्राप्त करें और क्यूए के लिए रिलीज बनाने के लिए एकीकरण शाखा में जाएं? – Ben

+0

@ बेन: असल में, हाँ। पहला कदम, हालांकि, मास्टर में नवीनतम परिवर्तनों के साथ विलय करना होगा, खासकर यदि सुविधा कुछ समय से चल रही है। दरअसल, अंत में बड़ी बुरी विलय से बचने के लिए सुविधा नियमित रूप से मास्टर से विलय होनी चाहिए। यह भी ध्यान रखें कि एक निश्चित निश्चित एकीकरण शाखा नहीं है। एकीकरण शाखा संस्करण * x * के लिए कुछ विशेषताओं को मर्ज करने के लिए काम कर सकती है, जबकि एक अलग एकीकरण शाखा को संस्करण * x * - 1 के लिए बगफिक्स की श्रृंखला को एकत्रित करने के लिए एक साथ उपयोग किया जाता है। संक्षेप में, शाखाओं को आपके वर्कफ़्लो को दर्पण करना चाहिए - कुछ और नहीं, कुछ नहीं कम से। –

+0

एक बार विकास एकीकरण शाखा में स्थानांतरित हो गया है, तो किस परिस्थिति में फीचर शाखा में और परिस्थितियां की जाएंगी? – Ben

2

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

3

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

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

अब, यदि आप पहले से ही फीचर शाखाओं को एक दूसरे में विलय कर चुके हैं, तो आपको उन्हें अलग-अलग मुख्य लाइन में विलय करने में कठिनाई होगी। यह पूरी तरह असंभव नहीं है, लेकिन यह निश्चित रूप से एक परेशानी है (मैंने कोशिश की है)।

यदि आपकी फीचर शाखाओं में प्रमुख कोड मंथन हैं, या यदि वे काम किए जा रहे कोड के क्षेत्रों के संबंध में महत्वपूर्ण रूप से ओवरलैप करते हैं, तो आप इस विचार को आगे ले जाना भी चाहेंगे, और ऐसी शाखाएं हैं जो विलय से पहले दो सुविधाओं को एकीकृत करती हैं उन्हें वैश्विक एकीकरण शाखा समेत कहीं और, i। ई। एकीकरण के कई स्तर हैं। बेशक, यह आम तौर पर एक वांछनीय स्थिति नहीं है, लेकिन आप इससे बचने में सक्षम नहीं हो सकते हैं, और यदि आप एकीकरण शाखाओं के साथ उदार हैं तो परिणामस्वरूप संघर्ष हल करना बहुत आसान हो सकता है।

संबंधित मुद्दे