2017-12-10 92 views
5

गिटफ्लो सीखना और मुझे कुछ चिंताएं हैं जिन्हें मैंने इसके बारे में पढ़े गए किसी दस्तावेज़/आलेख में संबोधित नहीं किया है।गिटफ्लो: पहले या प्रोड रिलीज के बाद मास्टर में विलय करें?

develop शाखा पर कुछ बिंदु कोड पर एक क्यूए/स्टेजिंग वातावरण में तैनात किया जाना चाहिए और कठोर परीक्षण किया जाना चाहिए। तो गिटफ्लो के साथ आपने release शाखा को develop से बंद कर दिया, और फिर आप स्टेजिंग वातावरण के लिए release तैनात करते हैं।

सबसे पहले, बस असली जल्दी कुछ स्पष्ट करना चाहता था: पहली बार एक विशेष परियोजना/रेपो इस प्रक्रिया के माध्यम से चला जाता है, आप वास्तव में/develop से इस नए release शाखा बनाने forking हो जाएगा, हाँ? और भविष्य में अन्य सभी बार, आप बस developrelease, हाँ में विलय कर रहे हैं?

तो फिर क्यूए स्टेजिंग एनवी पर release शाखा का परीक्षण करता है, सभी अच्छे लगते हैं, और हम प्रोडक्ट पर तैनात करने के लिए तैयार हैं।

  • तैनात ठेस और तो विलय master में release: यदि आप करते हैं? ; या
  • मर्ज releasemaster करने और तो तैनाती ठेस?

मैं पूछता हूँ, क्योंकि यह पूर्व के मामले में की तरह लगता है क्या तुम करोगी जरूरत, prod को release शाखा को तैनात तो prod को तैनात है, और फिर master को मर्ज करने के लिए। जो ठीक लगता है, लेकिन अक्सर प्रोड और गैर-प्रोड वातावरण समान नहीं होते हैं और कोड जो चौकोर स्टेज में पूरी तरह से ठीक चलता है, दूसरा यह प्रोड सर्वर पर आग लग जाता है। मुझे पता है कि गिटफ्लो हॉटफिक्स शाखाओं की अवधारणाओं का समर्थन करता है लेकिन वे मामूली सुधारों के लिए आरक्षित हैं। एक जटिल फिक्स के मामले में जिसके लिए रोलबैक/बैकआउट रिलीज की आवश्यकता होती है, अब हमारे पास "गंदे कोड" (कोड जो किसी कारण से प्रोड को तोड़ता है) master में विलय हो गया है।

और बाद के मामले में, जब आप विलय करते हैं और प्रोड रिलीज अनुरोध में शामिल होते हैं, तो इसमें घंटों या दिन भी लग सकते हैं (विशेष रूप से यदि आपको प्रोड तैनाती करने के लिए आईटी/ओपीएस शामिल करने की आवश्यकता होती है) प्रोड परिनियोजन वास्तव में होता है। और इस समय के दौरान आपके पास master शाखा है जो कहती है "विशेषताएं एक्स, वाई और जेड प्रोड में हैं" लेकिन वे वास्तव में नहीं हैं।

मुझे आश्चर्य है कि क्या गिटफ्लो वास्तव में किसी भी तरह हल करता है या किसी भी मामले में ज्ञात कामकाज क्या है।

उत्तर

1

आपके द्वारा बनाई गई रिलीज शाखा आपके द्वारा बनाई गई फीचर शाखाओं के समान ही एक छोटी सी जीवित है। एक बार रिलीज समाप्त होने के बाद, आप शाखा हटा देते हैं। उदाहरण के लिए, मैं release/0.1.0 शाखा बनाउंगा, काम करें, और फिर विलय करें।

उत्पादन में तैनाती करते समय, मैं हमेशा मास्टर शाखा से कोड लेता हूं, जिसका अर्थ है कि मैं रिलीज शाखा को तैनात करने से पहले मास्टर में पहले मर्ज करता हूं।

गिटफ्लो आगे बढ़ने के बारे में अधिक है, पीछे नहीं। इसलिए पहचान की गई समस्याओं के लिए फ़िक्स बनाने के लिए हॉटफिक्सेस का उपयोग क्यों किया जाता है।

उत्पादन में आने के लिए समय के संदर्भ में, यह वास्तव में गिटफ्लो की चिंता नहीं है, और मुझे नहीं लगता कि यह इस क्षेत्र में बहुत मदद प्रदान करेगा। आप किस शाखाई रणनीति का उपयोग करते हैं, इस पर ध्यान दिए बिना यह आपके लिए एक मुद्दा होगा।

+0

अनिश्चित इस करना चाहिए जवाब है, हम एक औचित्य भूल रहे हो, या पेशेवरों/की तरह नियंत्रित किया जाना चाहिए रिलीज से पहले या बाद में विलय के लिए विपक्ष। – NicolasW

+1

तैनाती से पहले विलय का एक बड़ा फायदा यह है कि हाल ही में किसी भी बग फिक्स (यदि कोई है) को याद करने के लिए असंभव है, तो हाल ही में मास्टर में वापस विलय हो गया है और नतीजतन रिग्रेशन घटनाएं पैदा हुई हैं। इसी कारण से मुझे लगता है कि यह सबसे अच्छा तरीका है। – NicolasW

2

परियोजना मैं में काम बहुत अराजक है, निर्णय मिनट के एक मामले में बदल सकता है इसलिए मेरी रणनीति संभव सॉफ्टवेयर विन्यास प्रबंधन के फैसले के रूप में के रूप में ज्यादा शिथिलता है।

विशेष रूप से, मास्टर में मर्ज किए जाने: हम केवल के बाद हम उत्पादन में तैनात महारत हासिल करने के विलय और हम एक पुष्टिकरण ई-मेल है कि धूम्रपान परीक्षण ठीक काम किया है। इस तरह हम निर्णय परिवर्तनों, तैनाती में रोलबैक, तकनीकी समस्याओं या जो भी समस्या हो सकती है, के जोखिम को प्रबंधित करके अराजकता को गले लगाते हैं।

शुरुआत में हम उत्पादन में जाने से पहले मास्टर में विलय कर चुके थे, लेकिन तकनीकी मुद्दों, रोलबैक, प्रबंधन के फैसलों ने आखिरी मिनट में ... हमें कई समस्याएं आईं, इसलिए हमने रणनीति बदल दी, और यह ठीक काम कर रहा है पिछले 3 वर्षों से।

हैं, तो अंत में, उत्पादन में जाने के बाद कुछ प्रतिगमन पाया जाता है, कि एक हॉटफिक्स है और उस :)

+0

इस दृष्टिकोण के साथ समस्या यह है कि मास्टर और टैगिंग में विलय करने के बाद, पोस्ट-मर्ज टैग अनिवार्य रूप से उस व्यक्ति से अलग प्रतिबद्धता को इंगित करता है जिसे आप तैनात करते थे। यह दोहराने योग्य बनाता है। – RaGe

+0

क्षमा करें, मुझे आपकी बात नहीं मिली। क्या आप विस्तार से बता सकते हैं? "पोस्ट-मर्ज टैग" से आपका क्या मतलब है और इसका उद्देश्य क्या है? – Luis

+0

प्रति गिटफ्लो, एक बार जब आप मास्टर में रिलीज शाखा मर्ज करते हैं, तो आप इसे मास्टर शाखा में टैग करते हैं। [यहां देखें] (https://datasift.github.io/gitflow/GitFlowMasterBranch.png)। आपके मामले में आपका उत्पादन तैनाती पिछले हरे रंग की प्रतिबद्धता (विलय से पहले) से होती है जबकि टैग एक अलग साइयन प्रतिबद्धता को इंगित करता है। यदि आप कुछ समय बाद सटीक उसी परिनियोजन को दोहराना चाहते थे, तो टैग से तैनाती काम नहीं करती क्योंकि आप एक अलग प्रतिबद्धता से तैनात हैं। – RaGe

संबंधित मुद्दे