कोड समीक्षा वर्कफ़्लो जहां पुल अनुरोध लेखक को मर्ज करना होगा


16

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

  1. कोड लेखक एक पुल अनुरोध प्रस्तुत करता है
  2. समीक्षक कोड की जांच करता है
    • यदि समीक्षक अनुमोदन करता है, तो वे "अच्छा लग रहा है, मर्ज करने के लिए स्वतंत्र महसूस" की तर्ज पर एक टिप्पणी छोड़ते हैं
    • यदि समीक्षक को चिंता है, तो वे एक टिप्पणी छोड़ते हैं जैसे "कृपया मामूली मुद्दों को ठीक करें एक्स और वाई, फिर मर्ज करें" (प्रमुख परिवर्तनों के लिए, चरण 2 पर लौटें)
  3. यदि आवश्यक हो तो कोड लेखक परिवर्तन करता है, और फिर अपने स्वयं के पुल अनुरोध को मर्ज करता है

मेरी निम्नलिखित चिंताएँ हैं:

  • चरण 3 में अनुमोदन के मामले में, यह वर्कफ़्लो पुल अनुरोध लेखक को एक प्रतीत होता है-अनावश्यक राउंडट्रिप बनाता है। समीक्षक, जो पहले से ही कोड को देख रहा है, बस इसे तुरंत मर्ज कर सकता है।

  • चरण 3 में किए जा रहे परिवर्तनों के मामले में, पुल अनुरोध को मर्ज करने के लिए एजेंसी अब पीआर के लेखक के साथ पूरी तरह से आराम करती है। लेखक के अलावा कोई भी विलय से पहले के बदलावों को नहीं देखेगा।

इस वर्कफ़्लो के कुछ अन्य फायदे या नुकसान क्या हैं? क्या यह वर्कफ़्लो अन्य इंजीनियरिंग टीमों पर आम है?


5
क्या आपने अपने संगठन के लोगों से पूछा है कि उन्होंने इस विशिष्ट वर्कफ़्लो को क्यों चुना? वे शायद एक बेहतर स्थिति में हैं जो हम हैं। हम केवल अनुमान लगा रहे होंगे।
रॉबर्ट हार्वे

1
आपके संगठन में क्या होता है जब समीक्षक " प्रमुख मुद्दे को ठीक करें X" लिखता है ?
डॉक ब्राउन

8
मेरे अनुभव में, मूल लेखक के लिए यह सबसे अच्छा है कि मामले को मर्ज करने के लिए एक मर्ज संघर्ष को हल किया जाए। मूल लेखक आमतौर पर वह होता है जो एक मर्ज संघर्ष को हल करने के लिए सबसे अच्छा सुसज्जित है।
17 का 26

मैं तर्क के रूप में यहाँ उत्सुक हूँ। आपको अपने सहयोगियों से पूछना चाहिए और इसे स्व-उत्तर के रूप में लिखना चाहिए - यहां एक बहुत अच्छी विचार प्रक्रिया या तर्क हो सकता है। मैं सिर्फ एक के साथ जल्दी नहीं आ पा रहा हूं।
थॉमस ओवेन्स

जवाबों:


21

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

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

दूसरे बिंदु पर, यह सिर्फ भरोसे की बात है। यदि आप लोगों पर दो-जाँच किए बिना मामूली मुद्दों को ठीक करने के लिए भरोसा नहीं कर सकते हैं, तो उन्हें आपके लिए काम नहीं करना चाहिए। यदि यह मुद्दा इतना बड़ा है कि इसे ठीक करने के बाद एक और समीक्षा की आवश्यकता होगी, तो समीक्षकों को एक के लिए पूछने के लिए विश्वास करें।

यह कहा जा रहा है, मैं कभी-कभी अन्य लेखक के पुल अनुरोधों को मर्ज करता हूं, लेकिन यह आमतौर पर या तो बहुत ही साधारण परिवर्तन होता है, या बाहरी स्रोतों से, जहां मैं व्यक्तिगत रूप से किसी भी परीक्षण स्वचालन विफलताओं के माध्यम से चरवाहा के लिए जिम्मेदारी लेता हूं।


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

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

3

प्रारंभिक लेखक के अपने स्वयं के पुल अनुरोध को मर्ज करना छोटी टीमों में मेरा पसंदीदा वर्कफ़्लो है। पहले से ही उल्लेखित तकनीकी लाभों के अलावा (उदाहरण के लिए, मर्ज संघर्षों को हल करने के संदर्भ में), मुझे लगता है कि यह सांस्कृतिक स्तर पर मूल्य जोड़ता है: यह स्वामित्व की भावना पैदा करता है।

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


2

मेरे संगठन में हम पुल अनुरोधों में काफी नए हैं और आपका प्रश्न यह है कि मैंने स्वयं विचार किया है।

एक अवलोकन मैं जोड़ना चाहूंगा: कुछ टूल (हम टीएफएस का उपयोग करते हैं) में पुल अनुरोध के साथ जुड़ा एक कार्य आइटम हो सकता है।

अगर ऐसा है, तो समीक्षक द्वारा मर्ज किए जाने पर नज़र रखना थोड़ा मुश्किल हो जाता है। उस परिदृश्य में डेवलपर को पीआर को फिर से देखना होगा, बग खोलना होगा या अनुरोध बदलना होगा और इसे 'हल' के रूप में चिह्नित करना होगा। यदि हम इसे बहुत जल्दी 'हल' कर लेते हैं, तो परीक्षकों का मानना ​​है कि फिक्स पहले से ही वर्तमान बिल्ड का हिस्सा है।

TFS 2017 ने पुल अनुरोध के उनके कार्यान्वयन में सुधार किया। अब डेवलपर पुल अनुरोध को स्वचालित रूप से मर्ज करने का अनुरोध कर सकता है यदि सभी शर्तों को पूरा किया जाता है (कोई मर्ज संघर्ष, समीक्षकों से अनुमोदन और कोई टूटी हुई बिल्ड नहीं)। YMMV।


1

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

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