हमारी टीम ने फोगबगज़ और किल / मर्क्यूरियल से जीरा और स्टैश / गिट से स्विच बनाया। हम शाखा शाखाओं के लिए गिट फ्लो मॉडल का उपयोग कर रहे हैं, सुविधा शाखाओं की उपखंड शाखाओं (जीरा सुविधाओं के जीरा उपशीर्षक) से जोड़ रहे हैं। जब हम मूल शाखा में वापस विलय करने के लिए एक पुल अनुरोध बनाते हैं (आमतौर पर विकसित होते हैं, लेकिन सुविधा शाखा में वापस उप-लिंक के लिए), तो हम एक समीक्षक को नियुक्त करने के लिए Stash का उपयोग कर रहे हैं।
हम जो समस्या खोज रहे हैं, वह यह है कि फीचर मामलों के बेहतरीन नियोजन और टूटने के साथ भी, जब कई डेवलपर्स एक ही फीचर पर एक साथ काम कर रहे हैं, तो सामने के छोर और बैक-एंड पर कहें, अगर वे अन्योन्याश्रित कोड पर काम कर रहे हैं अलग-अलग शाखाओं में एक डेवलपर दूसरे को अवरुद्ध करता है।
जैसे ही हम विकसित होते हैं, हमने एक-दूसरे की शाखाओं के बीच खींचने की कोशिश की है। हमने स्थानीय एकीकरण शाखाएँ बनाने का भी प्रयास किया है, प्रत्येक डेवलपर एकीकरण के परीक्षण के लिए कई शाखाओं से खींच सकते हैं जैसे वे विकसित होते हैं। अंत में, और यह संभवतः हमारे लिए अब तक का सबसे अच्छा काम लगता है, हालांकि थोड़ा अधिक ओवरहेड के साथ, हमने बल्ले से सही सुविधा शाखा के एकीकरण इकाई बनाने की कोशिश की है। जब एक सबटैक्स् शाखा (फीचर शाखा से दूर) एक पुल अनुरोध और कोड समीक्षा के लिए तैयार होती है, तो हम उन परिवर्तन सेटों को मैन्युअल रूप से इस सुविधा एकीकरण शाखा में विलय कर देते हैं। तब सभी इच्छुक डेवलपर्स उस एकीकरण शाखा से अन्य आश्रित उपप्रकार शाखाओं में खींचने में सक्षम हैं। यह किसी को भी किसी भी शाखा की प्रतीक्षा करने से रोकता है जो वे कोड समीक्षा पास करने के लिए निर्भर हैं।
मुझे पता है कि यह जरूरी नहीं है कि एक Git मुद्दा है - इसे कई शाखाओं में अन्योन्याश्रित कोड पर काम करने के साथ करना है, हमारी अपनी कार्य प्रक्रिया और संस्कृति के साथ। अगर हमारे पास डेवलपमेंट (ट्रू इंटीग्रेशन ब्रांच) के लिए सख्त कोड-समीक्षा नीति नहीं थी, तो डेवलपर 1 को खींचने के लिए डेवलपर 2 के लिए विकसित करने के लिए मर्ज हो सकता है। एक और जटिलता यह है कि हमें QA.T सुविधा को बंद करने से पहले कोड की समीक्षा प्रक्रिया के हिस्से के रूप में कुछ प्रारंभिक परीक्षण करने की भी आवश्यकता है। इसका मतलब है कि भले ही फ्रंट-एंड डेवलपर 1 बैक-एंड डेवलपर 2 की शाखा से सीधे खींच रहा हो क्योंकि वे जाओ, यदि बैक-एंड डेवलपर 2 खत्म हो गया है और उसका / उसकी पुल अनुरोध एक सप्ताह के लिए कोड समीक्षा में बैठा है, तो फ्रंट-एंड डेवलपर 2 तकनीकी रूप से अपना पुल अनुरोध / कोड समीक्षा नहीं बना सकता है क्योंकि उसका / उसके कोड समीक्षक नहीं कर सकते हैं परीक्षण क्योंकि बैक-एंड डेवलपर 2 '
लब्बोलुआब यह है कि हम इन उदाहरणों में समानांतर दृष्टिकोण के बजाय खुद को बहुत अधिक धारावाहिक में पा रहे हैं, इस पर निर्भर करता है कि हम किस मार्ग पर जाते हैं, और इससे बचने के लिए उपयोग करने के लिए एक प्रक्रिया खोजना चाहते हैं।
अंतिम बात जिसका हम उल्लेख करते हैं, हमें उन शाखाओं के कोड साझा करने का एहसास होता है, जिनकी कोड समीक्षा नहीं की गई है और अंतिम रूप से अभी तक हम दूसरों के बीटा कोड का उपयोग कर रहे हैं। एक निश्चित सीमा तक मुझे नहीं लगता कि हम इससे बच सकते हैं और इसे एक हद तक स्वीकार करने को तैयार हैं।