एक विलय शाखा का पुन: उपयोग, अच्छा अभ्यास?


36

वर्तमान में, मैं अपने आवेदन में एक नई सुविधा जोड़ने के लिए हर बार एक नई शाखा बनाता था।

जब मेरी सुविधा समाप्त और कार्यात्मक हो जाती है, तो मैं इसे मास्टर शाखा में विलय कर देता हूं।

लेकिन बाद में, जब मुझे इस सुविधा को अपडेट करने की आवश्यकता होती है (एक सुधार की तरह) तो क्या नई शाखा बनाना बेहतर है या क्या मुझे मास्टर के साथ पिछले को रिबेस करने की आवश्यकता है, क्या अपडेट फिर से मर्ज हो जाता है?

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


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

जवाबों:


34

एक नई शाखा बनाएँ, क्योंकि:

  • एक नई ब्रांच की आपके द्वारा किए जाने के बाद मर्ज टकराव होने की संभावना कम होती है और इसे मास्टर में मर्ज करना चाहते हैं। कुछ चीजें मर्ज संघर्षों को ठीक करने की तुलना में अधिक त्रुटि-प्रवण हैं।

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

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


7

एक नई शाखा का उपयोग करें।

नामकरण के लिए, आप एक आंतरिक स्वरूप का उपयोग कर कि विचार कर सकते हैं this_work एक विस्तार या करने के लिए परिवर्तन है that_work

उदाहरण के लिए आप दूसरी शाखा को नाम दे सकते हैं

modeling-member--attributes

इस संकेत के साथ कि बाईं ओर नाम का नाम मूल शाखा है

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


0

यदि आप केवल स्वामी को मर्ज से बचाने के लिए चाहते हैं और आप गिटब का उपयोग कर रहे हैं, तो आप हर नई सुविधा के लिए "फोर्क" का उपयोग कर सकते हैं और एक पुल अनुरोध कर सकते हैं और प्रत्येक नई सुविधा प्राप्त करने के बाद पुल अनुरोध स्वीकार कर सकते हैं।

मैं पुरानी शाखाओं पर काम करने की सलाह नहीं देता, क्योंकि आप संघर्ष कर सकते हैं जब आप इसे मास्टर के सिर में मिला देते हैं और निश्चित रूप से इसे करने की आवश्यकता नहीं होती है ...


4
"यू" एक अंग्रेजी शब्द नहीं है। इस तरह के टेक्स्ट-स्पीक को टेक्स्ट और ट्विटर के लिए आरक्षित किया जाना चाहिए।
रोबोट

@Steven अब, वहाँ भी, जब (अधिकांश लोगों के लिए) प्रत्येक अक्षर को अब तीन या चार की-प्रेस की आवश्यकता नहीं होती है, तो इसे टाला जाना चाहिए। :)
TZHX
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.