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