समस्या
मैं एक सॉफ्टवेयर प्रोजेक्ट पर हूं जिसमें लगभग 10 डेवलपर्स हैं, हम Mercurial के माध्यम से स्रोत कोड साझा करते हैं। हमारे पास प्रति रिलीज एक विकास और उत्पादन शाखा है। परियोजना के दौरान बार-बार हमारे पास एक शाखा से स्रोत कोड होता है यानी v1 सॉफ्टवेयर और 2 के पहले रिलीज के लिए पैच और रखरखाव शाखाओं में हो रहा है।
इसका परिणाम या तो गलत कमिट, या गलत (संभवतः गैर-QAd) कोड तक पहुँचने और गलत शाखा में तैनात होने पर खर्च होता है, अगर हम यह नहीं देखते कि कोड गलत शाखा में चला गया है।
हमारी शाखा और मर्ज डिज़ाइन / विधि
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
इसलिए हम एक रिलीज डेवलपमेंट ब्रांच पर काम करेंगे, जब तक कि इसे तैयार न समझा जाए , इसे सिंगल टेस्टिंग / यूएटी / प्रोडक्शन ब्रांच के लिए ब्रांच कर दिया जाए, जहां सभी रिलीज और मेंटेनेंस किया जाता है। इस शाखा के रिलीज के निर्माण के लिए टैग का उपयोग किया जाता है। जबकि v1 का परीक्षण किया जा रहा है, v2 के लिए एक शाखा बनाई गई है और डेवलपर्स नई सुविधाओं पर काम करना शुरू कर देंगे।
क्या होता है कि एक डेवलपर v2-dev शाखा के लिए v1-dev या v1-prod में काम के कारण काम करता है, या इससे भी बदतर, वे v2-dev को v1-prod (या इसी तरह की गलतियों) में विलय कर देते हैं।
हम ज्यादातर डेवलपर्स को -प्रोड ब्रांच तक नहीं पहुंचने के बारे में बताते हैं, हालांकि कोड अभी भी बोलते हैं। अधिक वरिष्ठ डेवलपर्स का एक समूह -प्रोड ब्रांच की देखरेख करता है।
यह ध्यान दिया जाना चाहिए कि जबकि v2 ने अभी विकास शुरू किया है, अभी भी कुछ काफी भारी पैच हो सकते हैं जो मुद्दों को ठीक करने के लिए v1 में जा रहे हैं। Ie v1 केवल अजीब छोटे पैच नहीं हो सकता है।
हमने अब तक क्या प्रयास किया है
- द्वारपालों के साथ एक अलग -प्रोड शाखा है। एप्रोड शाखा को अपने नाम के माध्यम से चेतावनी देनी चाहिए और अधिकांश डेवलपर्स को कभी भी उस शाखा में रहने की आवश्यकता नहीं है। इससे वास्तव में समस्या कम नहीं हुई है।
- डेवलपर्स के बीच इस समस्या के बारे में जागरूकता बढ़ाने की कोशिश करने और उन्हें अधिक सतर्क बनाने के लिए। फिर से यह बहुत सफल नहीं रहा है।
डेवलपर्स द्वारा गलत शाखा के लिए संभावित कारण
- बहुत जटिल एक शाखा डिजाइन
- समानांतर में कई शाखाओं में सक्रिय विकास। (यह परियोजना हिमस्खलन-मॉडल के उपयोग के लक्षणों को प्रदर्शित करती है ।)
- डेवलपर्स DVCS को अच्छी तरह से समझ नहीं पाते हैं
प्रश्न मैंने पढ़ा है जो कुछ हद तक प्रासंगिक थे
मैंने इस प्रश्न को गलत शाखा के लिए नहीं करने पर पढ़ा है और मुझे लगता है कि दृश्य संकेतों के बारे में उत्तर मददगार हो सकते हैं। हालाँकि, मैं पूरी तरह से आश्वस्त नहीं हूं कि जिन समस्याओं का हम सामना कर रहे हैं वे अधिक मूलभूत समस्या के लक्षण नहीं हैं।
दृश्य सुराग के साथ, हम उन्हें आसानी से कमांड लाइन में शामिल कर सकते हैं, हालांकि लगभग आधी टीम ग्रहण का उपयोग करती है जो कि मैं अनिश्चित हूं कि दृश्य संकेतों को कैसे शामिल किया जाए।
सवाल
सॉफ्टवेयर, प्रोजेक्ट मैनेजमेंट या गवर्नेंस के रूप में क्या तरीके, जिनका उपयोग हम कम (आदर्श रूप से बंद) करने के लिए करते हैं, वे गलत तरीके से अपना समय ले रहे हैं या हमारे तैनात कोड को गंदा कर रहे हैं?
मेरे द्वारा बताए गए कारणों पर विशिष्ट टिप्पणी की जा सकती है क्योंकि ऊपर उल्लिखित की सराहना की जाएगी, लेकिन इससे आपका उत्तर सीमित नहीं होना चाहिए।