मर्क्यूरियल के साथ कोड समीक्षाओं के लिए अनुशंसित प्रक्रिया


18

हम आमतौर पर Perforce और SmartBear के कोड सहयोगी का उपयोग करते थे Big Corpऔर अब हम कुछ परियोजनाओं के लिए Mercurial का भी उपयोग करने जा रहे हैं।

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

धन्यवाद


आपको शायद दो प्रश्नों को अलग करना चाहिए। (ए) के अंतर्गत आता है, लेकिन (बी) शायद स्टैकओवरफ़्लो या सर्वरफ़ॉल्ट पर होगा
ब्लूबेरी फील्ड्स

धन्यवाद @blueberryfields। मैं वास्तव में इस मुद्दे को तय किया, समस्या बिन / hg.cmd फ़ाइल पथ और कोई exe में होने के साथ था।
cbrulak

जवाबों:


22

हम वास्तव में हाल ही में मेरी कंपनी में लगभग एक ही बात के माध्यम से चला गया। यहाँ हमने क्या किया है:

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

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

कोड की समीक्षा को लागू करने के लिए, हमने एक pretxnchangegroupहुक ( एचजी बुक में प्रलेखित ) लिखा है । हम इस तथ्य का लाभ उठाते हैं कि जब यह हुक चलता है, तो यह रिपॉजिटरी देख सकता है-जैसे कि कोड परिवर्तन स्थायी थे, फिर भी हमें पुश को रोकने की क्षमता प्रदान करता है। मूल रूप से, प्रक्रिया इस प्रकार है:

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

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

नोट: यह एक काफी सरल प्रक्रिया है (और हमारे लिए अपेक्षाकृत नया है), इसलिए यह हर किसी के लिए काम नहीं कर सकता है, और कुछ डिज़ाइन बग हो सकते हैं, जिन्हें हमने अभी तक नहीं चलाया है। लेकिन अब तक, यह काफी अच्छी तरह से काम किया है।


क्या आप कोड समीक्षा से पहले अपने स्थिर वातावरण में जांच करने के अपने निर्णय की व्याख्या करेंगे? मेरे लिए, स्थिर एक मिथ्या नाम है।
जॉर्डन

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

1
वाह। क्या मैं आपके काम आ सकता हूँ?
रिच

@ रेयान - हम प्रीटेन्स्केंजग्रुप हुक कैसे लागू करते हैं, आपके द्वारा प्रदान किया गया लिंक यह कैसे लागू किया जा सकता है, इस पर विस्तार से विवरण नहीं देता है, हमें जिस प्रकार के फ़ंक्शन टेम्पलेट का पालन करना चाहिए, वह हुक नहीं देता है। मुझे अजगर का कोई अनुभव नहीं है। कृपया आप मुझे एक सही स्रोत पर ले जा सकते हैं या pretxnchangegroup हुक के लिए टेम्पलेट। टा
सरल-समाधान

2

यह इस बात पर निर्भर करता है कि आपके पास अपनी रिपॉजिटरी संरचना कैसी है और आप क्या हासिल करना चाहते हैं। हम "प्री-कमिट" समीक्षा करना पसंद करते हैं, जो कि डीवीसीएस की दुनिया में वास्तव में "प्री-पुश" का मतलब है। डीवीसीएस इस माहौल में अच्छे हैं (जब पारंपरिक एससीएम की तुलना में) क्योंकि उनके पास आपके स्थानीय परिवर्तनों को बचाने और अपने कार्यक्षेत्र को वापस पाने के लिए अंतर्निहित कार्यक्षमता है ताकि आप कुछ और काम कर सकें।

यदि आप पोस्ट-पुश समीक्षा करना चाहते हैं, तो आदर्श वर्कफ़्लो आपकी रिपॉजिटरी संरचना पर बहुत अधिक निर्भर करता है। उदाहरण के लिए, मान लीजिए कि एक रिपॉजिटरी संरचना है जो कि इस आलेख में चर्चा की गई Git रिपॉजिटरी लेआउट्स की तरह दिखती है । इस स्थिति में, आप उन परिवर्तनों की समीक्षा कर सकते हैं जिन्हें मर्ज किया जा रहा है develop। फीचर शाखाओं पर अलग-अलग कमिटियों की समीक्षा करने का कोई मतलब नहीं हो सकता है। जाहिर है कि सभी hotfixesका विलय के साथ ही समीक्षा भी की जानी चाहिए master

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

बी के लिए) केवल एक चीज जो मैं सुझाऊंगा, वह है स्मार्टबियर सपोर्ट (support@smartbear.com) को सीधे ईमेल करना। हम (हाँ, मैं स्मार्टबियर के लिए काम करता हूं) आपको अपने रास्ते के मुद्दों को सुलझाने में मदद करने में प्रसन्नता है, लेकिन आपके प्रश्न को ठीक करने के लिए इस प्रश्न में पर्याप्त जानकारी नहीं है। सामान्य प्रक्रिया सिर्फ इंस्टॉलर को चलाना है और सब कुछ बस काम करता है। स्पष्ट रूप से उस प्रक्रिया में कुछ गलत हो गया है।

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