स्रोत नियंत्रण: भूमिकाएं और जिम्मेदारियां - सर्वश्रेष्ठ अभ्यास


10

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

मुझे बताएं कि मैं क्या सामना कर रहा हूं। मैं एक विशेष एप्लिकेशन का प्रमुख डेवलपर (स्वामी) हूं। हमारी कंपनी हाल ही में वीएसएस (जहां मैं वीएसएस डेटाबेस का प्रशासक था, जिसमें मेरा आवेदन संग्रहीत था) से टीएफएस (जहां मुझे केवल हमारी "संचालन" टीम द्वारा बनाई गई विकास शाखाओं पर अनुमति है) स्थानांतरित किया गया। पिछली नौकरियों में, मैं एक TFS एडमिन था, इसलिए मैं TFS और MSBuild के आसपास अपना रास्ता जानता हूं।

मेरे पास ब्रांचिंग और मर्जिंग स्ट्रैटेजी के साथ कोई समस्या नहीं है (मुख्य शाखा, बग / परियोजना विकास शाखाओं के साथ आवश्यकतानुसार, मुख्य में वापस विलय के बाद एक रिलीज शाखा में पदोन्नत)। मेरे पास जो मुद्दे हैं:

  1. मैं अपनी शाखाएँ नहीं बना सकता। मुझे एक "ऑपरेशन" करने के लिए एक टीएफएस कार्य बनाना होगा टीम सदस्य मेरे लिए शाखा बनाएं।

  2. मैं मुख्य से अपनी विकास शाखा में विलय नहीं कर सकता। मुझे "ऑपरेशन" करने के लिए एक TFS कार्य बनाना होगा टीम के सदस्य को मर्ज करना, और फिर उम्मीद है कि वह "ops guy" के बाद से मेरी टीमों में से किसी पर भी "कदम" नहीं करता है और डेवलपर नहीं हो सकता है और निश्चित रूप से है कोड के विलय के बारे में कोई जानकारी नहीं है।

  3. मैं विकास से मुख्य में विलय नहीं कर सकता। फिर से मुझे "ops guy" मर्ज करने के लिए एक TFS टास्क बनाना होगा, उम्मीद है कि वह इसे सही तरीके से करे। फिर मुझे अपनी शाखा में वापस विलय करने के लिए एक और टीएफएस कार्य बनाना होगा ताकि मैं किसी भी मुद्दे को हल कर सकूं, जो कि एक गैर-डेवलपर विलय से मुख्य हो।

  4. मैं MSBuild स्क्रिप्ट्स बना या संपादित नहीं कर सकता। फिर से मुझे "ऑप्स" टीम के साथ काम करना है जो कि MSBuild के लिए नया है, इसलिए केवल सबसे बुनियादी निर्माण कार्यों का प्रदर्शन किया जा सकता है। (कुछ भी जटिल, या स्वर्ग-एक कस्टम कार्य के बारे में भूल जाओ)।

  5. मैं MSBuild स्क्रिप्ट निष्पादित नहीं कर सकता। फिर से केवल "ऑप्स" टीम ही ऐसा कर सकती है।

  6. इस सब को बंद करने के लिए, आमतौर पर यह एक "ऑफ-शोर" संसाधन है जो अनुरोध किए गए कार्यों को पूरा करता है, इसलिए भले ही मैं सुबह-सुबह कार्य (शाखा / मर्ज / बिल्ड) का निर्माण करता हूं, यह संभवतः पूरा नहीं होगा। उस शाम तक।

अब मेरे पास "ऑपरेशन" टीम के साथ कोई समस्या नहीं है जो रिलीज शाखाओं को बनाए रखती है। जैसा कि वे सभी कर रहे हैं (मूल रूप से) मुख्य से नवीनतम संस्करण ले रहे हैं और इसे रिलीज शाखा को बढ़ावा दे रहे हैं; इसलिए जब तक "मेन" स्थिर और तैयार है, तब तक रिलीज़ ब्रांच अच्छी रहेगी।

मेरी राय है कि ट्रंक ("मुख्य") को बनाए रखने और विकास शाखाओं से / के लिए किसी भी मर्जिंग के लिए तकनीकी लीड (जैसे मैं) जिम्मेदार होना चाहिए। टीम लीड में एकीकरण परीक्षण वातावरण के निर्माण और तैनाती के लिए एमएस बिल्ड स्क्रिप्ट बनाने की क्षमता भी होनी चाहिए।

क्या कोई मुझे सर्वश्रेष्ठ आचरण दस्तावेज़ में निर्देशित कर सकता है जो मुझे अपना मामला साबित करने में मदद करेगा? मेरी सभी खोज ने ब्रांचिंग और मर्जिंग की तकनीकों के संबंध में केवल सर्वश्रेष्ठ अभ्यासों को बदल दिया है, और डब्ल्यूएचओ का कोई उल्लेख नहीं किया जाना चाहिए जिसमें कहा गया है कि ब्रांचिंग / विलय।


WHO should be performing said branching/merging.एक आंतरिक संगठनात्मक निर्णय है। नहीं वास्तव में कुछ हम आप के साथ मदद कर सकता है ...
यानिस

2
इस तरह के बीजान्टिन प्रक्रिया के लिए दिए गए पुष्ट कारणों को बताने के लिए ध्यान रखें? मेरा अनुमान है "सीएमएम लेवल एन अनुपालन" या "सरबेन्स ऑक्सले"।
ब्रूस एडगर

SOX, लेकिन केवल भाग में। जब हम पहली बार TFS गए, तो डेवलपर्स की मेन और देव तक पहुँच थी। लेकिन तब "कुछ" डेवलपर्स (मेरी टीम में से कोई भी) ने देव शाखा के बजाय सिर्फ मेन पर विकास कार्य करने का फैसला किया, इसलिए अब सभी टीमों को दंडित किया जा रहा है।
माइकल चैटफील्ड

जवाबों:


8

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

दुर्भाग्य से यह उनके द्वारा उठाए गए दृष्टिकोण की तरह नहीं है। इसे पराजित करने के लिए मुझे लगता है कि आपको कुछ कोणों को कवर करने की आवश्यकता है:

a) साबित करें कि ये नीतियां विकासशील चीजों के लिए हानिकारक हैं। जब भी आप किसी चीज पर काम करने के लिए ऑप्स पर इंतजार कर रहे हों, हर समय लॉग इन करें। यह अकेले ही उचित प्रबंधन को बेचना चाहिए कि यह एक खराब नीति क्यों है।

बी) ऑप्स में कुछ दोस्त बनाएं - शायद इस नीति का एक कारण है। शायद उस तर्क को अधिक प्रभावी तरीके से संबोधित किया जा सकता है।

उम्मीद है की यह मदद करेगा।


3
+1, मैं कुछ ऐसा ही टाइप कर रहा था: खोए हुए समय और प्रयास को दस्तावेज़ित करें: निर्णय निर्माताओं को एक सूचित विकल्प बनाने दें: क्या वे वर्तमान प्रतिबंधात्मक नीति से लागत से बचने के लिए जो कुछ भी करने की कोशिश कर रहे हैं उसका जोखिम है?
जेमी एफ

मैं इस तरह की बैठक करने की योजना बना रहा हूं, लेकिन यह मदद करेगा कि क्या मैं इस नीति को उद्योग के "सर्वश्रेष्ठ प्रथाओं" के खिलाफ जा सकता हूं।
माइकल चट्टफील्ड

पकड़ लिया। निश्चित नहीं है कि कुछ विशिष्ट है या नहीं, लेकिन द प्रोगैमैटिक प्रोग्रामर में स्रोत नियंत्रण पर बिट्स में कुछ रत्न हो सकते हैं। ऐसा लगता है कि यह कुछ खराब डेवलपर्स के लिए एक विचार नीति निर्णय या कुछ राजनीति के बजाय एक सकल अतिरेक था। मैं एक सौदे के लिए तय करता हूं, जहां ऑप्स का मुख्य में विलय हो। मैं यह भी सुनिश्चित करूंगा कि मर्ज कुछ भी न टूटे इसके लिए ऑप्स को जिम्मेदार बनाने पर जोर दिया जाए, जो संभवत: इससे बाहर हो जाएगा। । ।
व्याट बार्नेट

मैं दूसरी जेमी, हर समय मर्ज करने या मर्ज होने का इंतजार करने के लिए रिकॉर्ड किया जाना चाहिए ताकि आपके पास सबूत हो। कोई "सर्वश्रेष्ठ अभ्यास" नहीं है जो सभी कंपनियों को फिट बैठता है। मैंने बड़ी कंपनी में काम किया है जहां यह कार्य एक समर्पित कॉन्फ़िगरेशन प्रबंधन टीम द्वारा किया गया था। मैं अपनी वर्तमान कंपनी है एक समर्पित रिलीज प्रबंधन टीम है जो मुख्य में विलय करने का शारीरिक काम नहीं करता है लेकिन वे तार्किक स्वामी हैं और इसका ऑडिट करते हैं। लेकिन IMHO ऑप्स आमतौर पर वह नहीं होता जो सोर्स कोड को छूता है।
सॉफ्टवेयड

2

मैंने जो अभ्यास देखे हैं वे हैं:

  1. कोई भी व्यक्ति अपने दिल की सामग्री के लिए कार्य शाखाएं बना सकता है। एक डेवलपर को दूसरे में एक सुविधा शाखा बनाने में सक्षम होना चाहिए जो वे पाते हैं कि उनके वर्तमान कार्य को प्रगति में संग्रहीत करने का एक बिंदु है। क्योंकि वे चाहते हैं / दिन के अंत में इसे वापस करना चाहिए, इसे किसी अन्य टीम के सदस्य के साथ साझा करना चाहिए, मुख्य या जो भी हो, बदलावों से परिरक्षित होना चाहिए।

  2. विकास शाखाओं को कोई भी पूरी तरह से कर सकता है। डेवलपर को मुख्य मिनट से विलय करने में सक्षम होना चाहिए दूसरा डेवलपर उन्हें बताता है कि उन्हें कुछ आवश्यक है जिन्हें मुख्य में एकीकृत किया गया है।

  3. मुख्य (एकीकरण) में विलय के लिए, तीन विकल्प हैं:

    • डेवलपर्स खुद ऐसा करते हैं। वे सिर्फ लीड डेवलपर के साथ जोखिमों पर चर्चा करते हैं और सुविधाओं का उचित परीक्षण करते हैं। इसका मतलब है कि किसी की भी अनुमति है; अगर कोई नियम तोड़ता है, तो उन्हें सिर्फ डांट पड़ती है और गलत बदलाव वापस मिल जाता है।
    • एक और डेवलपर परिवर्तनों की समीक्षा करने के बाद करता है। यह अभी भी हर किसी को यह करने की अनुमति की आवश्यकता है; प्रमुख डेवलपर द्वारा अभी भी नियम लागू किए गए हैं।
    • नामित इंटीग्रेटर है जो मुख्य में समीक्षा और विलय करता है। लेकिन इंटीग्रेटर टीम का हिस्सा है और कोड को समझने की जरूरत है। छोटी टीम पर यह आर्किटेक्ट के रूप में एक ही व्यक्ति होगा, बड़े पर वे अलग होंगे, लेकिन निकट सहयोग करने की आवश्यकता होगी।
  4. जो कोई भी सुविधा तैयार करता है उसे बिल्ड स्क्रिप्ट को अनुकूलित करना चाहिए। लेकिन मुझे यकीन नहीं है कि यह टीएफएस के साथ कैसे काम करता है; सिस्टम में मैंने बिल्ड स्क्रिप्ट का उपयोग किया हमेशा एक संस्करण फ़ाइल थी, इसलिए डेवलपर्स ने इसे किसी भी अन्य की तरह संपादित किया और इसे बाकी सब के साथ एकीकृत किया गया।

  5. यदि कोई निर्दिष्ट इंटीग्रेटर है, तो वे आमतौर पर परिभाषित करने के लिए (कौन सी स्क्रिप्ट को चलाने के लिए) और बिल्ड शुरू करते हैं। अन्यथा या तो टीम लीड यह करती है, नामित टीम सदस्य करता है या किसी के पास अनुमति है और टीम लीड प्रतिनिधियों को सेट-बाय-केस के आधार पर विशेष बिल्ड और शुरू करता है।

  6. किसी भी मामले में ऑपरेशन से ऊपर टीम के बाहर ऑपरेटर की आवश्यकता नहीं होनी चाहिए। ऑपरेटर को केवल अनुमतियाँ स्थापित करने, प्रतिकृतियां बनाने और इस तरह की आवश्यकता होती है।


मैं एक "नामित इंटीग्रेटर" के लिए सभी बनूंगा, जब तक कि यह वास्तव में टीम पर एक डेवलपर हो। वैसे भी मैं यही उम्मीद कर रहा हूँ; यह एक छोटी टीम है (अपने आप में 4 लोग)। उम्मीद है कि मुझे MS Build स्क्रिप्ट बनाने / निष्पादित करने की सुविधा मिल सकती है, मेरे लिए विकास तैनाती के लिए nAnt स्क्रिप्ट बनाना और फिर MSBuild के लिए अनिवार्य रूप से समान स्क्रिप्ट बनाने के लिए "ops" टीम के लिए यह मूर्खतापूर्ण होगा। लेकिन, अगर जरूरत है तो मैं यही करूंगा।
माइकल चैटफील्ड

2

कभी भी "सर्वोत्तम प्रथाओं" (मेरे साथ सहन) को ध्यान में न रखें, यह एक प्रबंधन समस्या है - मूल रूप से आप आप पर लगाए गए बाधाओं के कारण आपको ठीक से काम करने में सक्षम नहीं हैं।

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

मैं देख सकता हूं कि एक सर्वोत्तम अभ्यास दस्तावेज की ब्रांडिंग हो सकती है (लेकिन केवल ) उन्हें मनाने के प्रयास में एक सहायता हो सकती है, लेकिन यह बेहतर धारणा है कि आपके पास देव टीम के सदस्यों को एक अलग समयक्षेत्र में किसी के इंतजार में बैठे अपने हाथों पर बैठना होगा। जब तक प्रक्रियाओं में सुधार / युक्तिकरण नहीं किया जाता है, तब तक उनका अधिनियम एक साथ प्राप्त करना।

और बहुत टकराव मत बनो - जितना कुछ भी आप जानना चाहते हैं कि प्रतिबंध क्यों हैं, औचित्य क्या है ...


1
हां, बहुत कोशिश की जा रही है कि टकराव न हो ... एक ऐसे लड़के से आ रहा है, जिसकी पत्नी ने उसे "मैं आपसे सहमत था, खरीदा था, लेकिन फिर हम दोनों गलत होंगे" टी-शर्ट। :)
माइकल चटफील्ड

जब आप सही हों तो इसका एक नितांत हत्यारा है (-: और इस मामले में यह तर्क देना कठिन है कि आप नहीं हैं ... लेकिन आपको अपने लाइन प्रबंधन की आवश्यकता है यदि कोई भी परिवर्तन करने जा रहा है
मर्फ़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.