अच्छा / बेहतर स्रोत कोड नियंत्रण प्रथाओं को कैसे लागू करें?


28

मुझे संदेह है कि मैं गलत समस्या पर ध्यान केंद्रित कर रहा हूं, इसलिए मैं पहले बताऊंगा कि मुझे क्या लगता है कि समस्या संभवतया सबप्टिमल समाधान प्रस्तुत करने से पहले है जो मैं कल्पना करता हूं।

वर्तमान स्थिति:
वर्तमान में मेरे सहकर्मी परियोजना में व्यापक परिवर्तन के साथ केवल कोड में बदलाव के बाद ही अपना कोड परिवर्तन करते हैं। मुझे लगता है कि प्रगति है, क्योंकि कुछ समय पहले उन्होंने सिर्फ कुछ नेटवर्क शेयर पर .zip अभिलेखागार नहीं डाला था। फिर भी, विलय एक दुःस्वप्न है - और स्पष्ट रूप से मेरे पास पर्याप्त है। और मैं बात करने और समझाने और भीख मांगने से भी थक गया हूँ। यह बस रोकना है - मेरे बिना लगातार "बुरा आदमी"।

मेरा समाधान:
चूंकि समस्याओं के बारे में कोई जागरूकता और / या कोई दिलचस्पी नहीं है और मैं कुछ दिनों से अधिक समय तक चलने के लिए किसी भी प्रयास की उम्मीद नहीं कर सकता ... हड़ताल कि घंटे, मुझे करने के लिए तोड़फोड़ सर्वर पसंद आएगा सता।

मेरा प्रश्न:
क्या मैं यहां से ऑफ-बेस हूं या मैं गलत समस्या देख रहा हूं? ऐसा लगता है जैसे मुझे कुछ याद आ रहा है, और मुझे लगता है कि मैं अपनी समस्या को हल करने के लिए उपकरणों को देखकर गलत बात पूछ रहा हूं।

क्या मुझे इस समस्या को हल करने के लिए एक उपकरण की तलाश में होना चाहिए या इसे ठीक करने के लिए मुझे क्या करना चाहिए?


क्या वे मुसीबतें नहीं हैं जो उनके लिए एक प्रोत्साहन का विलय कर रही हैं ताकि वे काम करने के तरीके में सुधार करना चाहते हैं?
फ्लॉसकुलस

1
सिर्फ एक विचार, उन्हें कोड मर्ज करें;) लेकिन एक बात जो मुझे SVN में अक्सर
कमिट करने से रोकती

5
कोई मर्ज करने के बाद संघर्षों को हल करने की जिम्मेदारी कौन लेता है?
फ्लोसकुलस

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

जवाबों:


47

आप एक मानवीय समस्या के तकनीकी समाधान की तलाश कर रहे हैं। वह शायद ही कभी काम करता है।

इसका कारण यह है क्योंकि अगर टीम के सदस्य नियमों का पालन करने के बजाय कुछ स्वीकार नहीं करते हैं (न ही निहितार्थों को समझते हैं), तो वे उन्हें दरकिनार करने का प्रयास करेंगे। इसलिए, उदाहरण के लिए, डेवलपर्स को एक परीक्षक द्वारा पालन करने के लिए मजबूर होने के बजाय शैली नियमों को स्वीकार करना और समझना चाहिए।

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

  1. अपने सहकर्मियों के साथ इस मुद्दे पर चर्चा करें और बड़े कमिट के परिणामों की व्याख्या करें। हो सकता है कि वे बस यह नहीं समझते कि जटिल मर्ज दुर्लभ कमिट का सीधा परिणाम है, और छोटे से, लगातार कम होने से मर्ज (अपेक्षाकृत) आसान हो जाएगा।

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

  2. अन्य कंपनियों में क्या हो रहा है, इसके ठोस उदाहरण दें (विशेष रूप से आपके सहकर्मियों का गहरा सम्मान है)। वे केवल इस बात से अनजान हो सकते हैं कि यह एक मुद्दा है, और आश्वस्त रहें कि प्रति दिन एक अधिकतम एक प्रतिबद्धता है जो हर टीम करती है।

    कुछ लोग इस बात से अनजान हैं कि 5-10 सदस्यों की टीमें हैं, जो उत्पादन तक 50 पुश अप करती हैं, जो प्रति व्यक्ति प्रति दिन 5-10 कम से कम औसतन अनुवाद करता है। वे न तो समझ सकते हैं कि यह कैसे संभव है, न ही कोई ऐसा क्यों करेगा।

  3. मिसाल पेश करके। पर्याप्त छोटे अपने आप करो। यदि संभव हो, तो एक सप्ताह में उनके और आपके मर्ज को एक साथ दिखाते हुए एक छोटी प्रस्तुति दें (मुझे यकीन नहीं है कि इस प्रकार की जानकारी को निकालना एक संस्करण नियंत्रण से आसान है)। अपने विलय के दौरान उनके द्वारा की गई अंतिम गलतियों पर जोर दें और उनकी तुलना की गई त्रुटियों की संख्या से करें (जो शून्य के करीब होनी चाहिए)।

  4. उपयुक्त होने पर "मैंने आपको बताया" तकनीक का उपयोग करें । जब आप देखते हैं कि आपके सहकर्मी एक दर्दनाक मर्ज से अधिक पीड़ित हैं, तो जोर से टिप्पणी करें कि छोटे, लगातार आने वाले मर्ज को (अपेक्षाकृत) पीड़ारहित बना सकते हैं।

  5. बता दें कि कमिट करने के लिए कोई न्यूनतम अवधि नहीं होती है। एक प्रतिबद्धता कुछ सेकंड में किए गए मामूली बदलाव के अनुरूप भी हो सकती है। एक फ़ाइल का नाम बदलना, एक अप्रचलित टिप्पणी को हटाना, एक टाइपो को ठीक करना सभी कार्य हैं जो तुरंत किए जा सकते हैं।

    प्रोग्रामर को एक छोटे से कमिट करने से डरना नहीं चाहिए, बल्कि एक विशाल कमिट में कई बदलावों को एकत्र करना चाहिए।

  6. जब उचित हो, टीम के बजाय व्यक्तियों के साथ काम करें। यदि कोई ऐसा व्यक्ति है जो विशेष रूप से अक्सर करने से इनकार करता है, तो छोटा करता है, इस व्यक्ति के साथ व्यक्तिगत रूप से बात करें कि वह इसे क्यों मना कर रहा है।

    वे पूरी तरह से वैध कारण दे सकते हैं जो आपको संकेत दे सकता है कि टीम के साथ क्या हो रहा है। कुछ कारण जो मैंने खुद सुने हैं:

    • "मेरे शिक्षक / गुरु ने मुझे बताया कि सबसे अच्छा अभ्यास एक प्रति दिन के लिए प्रतिबद्ध करने के लिए है।" यह मेरे आश्चर्य नहीं है, यह देखते हुए क्या मैं कॉलेज में मेरे शिक्षकों से सुनने के लिए किया था

    • "मेरे सहयोगियों ने मुझे बताया कि मुझे कम हंगामा करना चाहिए।" मुझे बताया गया है कि कुछ टीमों में भी, और मैं उनकी बात समझता हूं। हमारे पास एक लॉग था जो व्यावहारिक रूप से मेरे कमिट्स से भरा था (ऐसा करने के लिए मुश्किल नहीं जब चार टीममेट्स प्रति दिन एक भी कमिट नहीं करते हैं), जिसने मेरे सहकर्मियों को निराश किया।

    • "मुझे लगा कि छोटे कमिट्स में संशोधन करना मुश्किल होता है।" किसी भी तरह मान्य बिंदु, यहां तक ​​कि जब टीम वर्णनात्मक लॉग संदेशों को लिखने में प्रयास करती है।

    • "हम अपने संस्करण नियंत्रण सर्वर पर बहुत अधिक स्थान बर्बाद नहीं करना चाहते हैं।" व्यक्ति स्पष्ट रूप से यह नहीं समझता है कि कैसे संग्रहीत किया जाता है (न ही भंडारण स्थान कितना सस्ता है)।

    • "मुझे लगता है कि एक प्रतिबद्ध को एक विशिष्ट कार्य के अनुरूप होना चाहिए।" यह देखते हुए कि अक्सर, एक कार्य एक दिन में किए जाने वाले कुछ कार्यों से मेल खाता है (जैसे कि दृश्य प्रबंधन के कार्य बोर्डों में), यह एक संयोग नहीं है। व्यक्ति को तब एक बैकलॉग (काम के 2 से 8 घंटे) और तार्किक रूप से अलग-थलग बदलाव के बीच अंतर करना सीखना चाहिए जो कि कुछ घंटों (कुछ घंटों के काम के लिए) के लिए प्रतिबद्ध होना चाहिए। यह भी बिंदु 5 से संबंधित है।

  7. जिस कारण से टीम अधिक बार कमिट नहीं कर रही है, उसे खोजें। परिणामों से आप आश्चर्यचकित हो सकते हैं।

    हाल ही में, मैंने एक अलग जवाब में उल्लेख किया है कि एक प्रतिबद्ध मामलों की गति, और यहां तक ​​कि सैकड़ों मिलीसेकेंड डेवलपर्स को कम लगातार आधार पर धक्का दे सकते हैं।

    अन्य कारणों में शामिल हो सकते हैं:

    • एक प्रतिबद्ध संदेश लिखने के लिए अत्यधिक जटिल नियम।

    • वह नियम जो डेवलपर को बग ट्रैकिंग सिस्टम से किसी कार्य के लिए प्रतिबद्ध करने के लिए बाध्य करता है।

    • बिल्ड के टूटने का डर।

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

    • मर्ज करने का डर।

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

    मैं सीआई मंच को यह बताना पसंद करूंगा कि मैंने संशोधन ५०२३ में निर्माण को तोड़ा है जिसमें पंद्रह मिनट पहले किए गए एक फाइल में दो तरीकों में एक बदलाव है, बजाय संशोधन ५०२३ में बदलाव से मिलकर जो चार दर्जन फाइलें और प्रतिनिधित्व करते हैं। 13 घंटे का काम।


"आप एक मानवीय समस्या के तकनीकी समाधान की तलाश कर रहे हैं। यह शायद ही कभी काम करता है।" - मुझे पता है, लेकिन मैं अभी थक गया हूं और पहले से ही अपने सभी बिंदुओं के साथ। यह मेरी समस्या ज्यादा समय के लिए नहीं है, फिर भी ...
VolkerK

@VolkerK: मेरा संपादन (उत्तर के पहले दो पैराग्राफ) देखें। क्या आपके पास CI सर्वर है? जब आप अपने सहकर्मियों के साथ बात करते हैं, तो वे अपनी अनिच्छा को अधिक बार करने के लिए कैसे समझाते हैं?
आर्सेनी मूरज़ेंको

1
@VolkerK यह उत्तर बहुत अच्छी तरह से समझाता है। आपको कोई तकनीकी समस्या नहीं है। समस्या प्रक्रिया का पालन करने से इनकार करने वाले लोगों के साथ है।
B:03овиЈ

1
बिंदु 3 की ओर: TortoiseSVN क्लाइंट विभिन्न आरेख बना सकता है जो विभिन्न मापदंडों (जैसे समय) के आधार पर चेक-इन व्यवहार की कल्पना करता है। उनका मूल्यांकन करना वास्तव में काफी दिलचस्प है। मैंने उन दिनों में अक्सर किया था जब हम एसवीएन का उपयोग कर रहे थे। stackoverflow.com/questions/412129/… :)
एशट्रैट

2
इनपुट के लिए धन्यवाद, लेकिन मैंने दूसरा रास्ता लिया और सिर्फ नोटिस दिया; ;-)
VolkerK

-3

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

इसके बाद प्रबंधन घूमा और घंटों बाद कंप्यूटर पर बदलावों को फिर से बदल दिया ताकि कुछ भी चेक न किया जाए। इन "सिम्युलेटेड कंप्यूटर विफलताओं" को केवल कुछ ही समय पहले होना था, जब देवता बोर्ड पर चढ़ गए।

बेशक, नियमों के "क्यों" के साथ-साथ "क्या" की व्याख्या करना महत्वपूर्ण है। जब तक "क्यों" स्पष्ट नहीं किया जाता है, वे सिर्फ यूएसबी ड्राइव या कुछ पर अपने स्रोत को स्टोर कर सकते हैं।


4
लोगों के इलाज के लिए यह एक भयानक तरीका है। क्या होता है जब आप जाने से पहले कुछ सही सोचते हैं और इसे मशीन पर रखना चाहते हैं, लेकिन यह पूर्ण नहीं है (जैसे निर्माण नहीं करता है) तो आप इसे करना नहीं चाहते हैं?
user1118321

3
और यह संसाधनों की बर्बादी है, क्योंकि आम तौर पर आपके पास एक सेट-अप वातावरण होता है जो आपकी आवश्यकताओं को अच्छी तरह से फिट करता है। मेरे पास एक ही स्थिति बहुत पहले थी, और 4 सप्ताह के बाद मेरा अपना लैपटॉप मिला। मुझे हर दिन एक ही तरह से सेटअप करने से नफरत थी, बस उस काम को करने के लिए जो मुझे करने की उम्मीद थी।
mliebelt

1
वाह, यह कई कारणों से एक भयानक विचार है। जैसा कि ऊपर की टिप्पणियों में पहले ही उल्लेख किया गया है, (1) यह दिन-प्रतिदिन की निरंतरता की किसी भी संभावना को रोकता है और (2) लोगों को कस्टम देव वातावरण स्थापित करने की क्षमता से इनकार करता है जो चारों ओर चिपकते हैं ...
बेन ली

1
... लेकिन यह भी (3) काम के घंटे को नष्ट करने की क्षमता है अगर कोई कोड में जांच करना भूल जाता है, या गलती से किसी कारण से नहीं होता है और (4) देवों को प्रदर्शित करता है कि प्रबंधन नियमों का पालन करने के लिए उन पर भरोसा नहीं करता है इसके बजाय, नियमों को एक कठोर तरीके से लागू करने के बजाय, संभवतः इसे एक us-vs-them पर्यावरण बनाते हैं और (5) यह उन्हें केवल उत्पादक होने के लिए नियमों को दरकिनार करने के लिए प्रोत्साहित करने की क्षमता रखता है।
बेन ली

कृपया, कोई भी इस विचार को लागू नहीं करता है।
बेन ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.