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