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