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