version control - आपको कब शाखा बनाना चाहिए?




version-control branch (8)

जब आपको अपनी वर्तमान शाखा के आधार पर परिवर्तन करने की आवश्यकता होती है, तो उस शाखा से अगली रिलीज के लिए नियत नहीं है (और पहले नहीं)।

उदाहरण के लिए, हम आम तौर पर ट्रंक पर काम करते हैं। रिलीज के समय, किसी को बदलाव करने की आवश्यकता होगी जिसे हम वर्तमान रिलीज में नहीं चाहते हैं (यह रिलीज से पहले हो सकता है, फिलहाल यह रिलीज के बाद होता है)। यह तब होता है जब हम शाखा बनाते हैं, अपनी शाखा में रिहाई डालते हैं और ट्रंक पर अगली रिलीज के लिए विकास जारी रखते हैं।

एससीएम सिस्टम के साथ काम करते समय, आपको कब शाखा बनाना चाहिए?


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


ब्रांचिंग के लिए कई उद्देश्य हैं:

  1. फ़ीचर / बग शाखाएं। सुविधा / बगफिक्स पूर्ण होने पर गतिशील और सक्रिय शाखाएं जो ट्रंक में वापस चली जाती हैं।
  2. स्टेटिक शाखाएं (सबवर्सन में टैग, हालांकि संक्षेप में केवल 'सामान्य शाखा')। वे कहते हैं, एक रिलीज का एक स्थिर स्नैपशॉट प्रदान करते हैं। भले ही वे काम कर सकें , वे छूटे रहते हैं।

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

सामान्यतः, आप दो शाखा प्रकार देखेंगे:

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

  • फिक्सेस शाखा: जबकि विकास मुख्य ट्रंक पर जारी है, सॉफ्टवेयर के नवीनतम रिलीज़ संस्करण में फिक्स को पकड़ने के लिए एक फिक्स शाखा बनाई जा सकती है।

आपको निम्न लेख की जांच करने में रुचि हो सकती है, जो शाखाओं के सिद्धांतों को बताता है, और उनका उपयोग कब किया जाता है:


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

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


यह इस बात पर निर्भर करता है कि आप किस प्रकार के एससीएम का उपयोग कर रहे हैं।

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

दस्तावेज (लघु और पठनीय) जिसने मुझे समझने में मदद की कि वितरित सिस्टम में क्या हो रहा है: UnderstandingMercurial

केंद्रीय भंडार वाले पुराने सिस्टम में (जैसे सीवीएस, एसवीएन और क्लीयरकेस), तो यह एक और अधिक गंभीर मुद्दा है जिसे टीम स्तर पर तय करने की आवश्यकता है, और उत्तर 'पुराने रिलीज को बनाए रखने के लिए' मुख्य लाइन 'पर जारी रखने के लिए विकास, या' एक प्रमुख प्रयोग के हिस्से के रूप में '।

वितरित मॉडल बहुत बेहतर है, मुझे लगता है, और प्रमुख प्रतिमान बनने के लिए केवल अच्छे ग्राफिकल उपकरण की कमी है। हालांकि यह व्यापक रूप से समझा नहीं गया है, और अवधारणाएं अलग हैं, इसलिए यह नए उपयोगकर्ताओं के लिए भ्रमित हो सकती है।


सभी 21 वीं शताब्दी एससीएम आपको बता रहे हैं:

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

आपको मिला:

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

उपकरण जो यह कर सकते हैं:

उपकरण जो यह नहीं कर सकते हैं:

  • SVN
  • सीवीएस
  • वीएसएस
  • TFS
  • ख़ामख़ाह

सभी तकनीकीताओं को छोड़कर .....

शाखा जब आप वापस विलय करना आसान जानते हैं!

इस बात को ध्यान में रखते हुए कि विलय हमेशा एक परियोजना में काम करने के तरीके से प्रभावित होगा।

एक बार यह हासिल करने के बाद सभी अन्य तृतीयक मुद्दे खेलेंगे।





branch