क्या चेक-इन कोड में संघर्ष मार्करों को छोड़ने का औचित्य है?


14

संघर्ष मार्करों पर विचार करें। अर्थात:

<<<<<<< branch
blah blah this
=======
blah blah that
>>>>>>> HEAD

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

सहज रूप से, हालांकि, मुझे वास्तव में इस पर आपत्ति थी, हालांकि खुद के लिए वकील होने के नाते मैं देख सकता हूं कि उसने ऐसा क्यों किया होगा:

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

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

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


1
यह किस संस्करण पर नियंत्रण प्रणाली है?
c69

क्या आप सुनिश्चित हैं कि ये गलती से छूट गए थे? हो सकता है कि किसी ने भिन्नता को देखा और संघर्षों को विलीन करते हुए w / o को बचाया। मैंने देखा है कि SmartSVN के साथ ऐसा पहले हुआ है
CamelBlues

1
Git। क्षमा करें, मैंने टैग नहीं किया क्योंकि मुझे नहीं लगा कि वास्तविक VCS प्रासंगिक था। उन्हें जानबूझकर, कई, कई फाइलों में चेक किया गया था। मैं सहमत हूँ कि आकस्मिक एक या दो बार क्षमा करने योग्य है।
बेनेडिक्ट

"अगर मैं संबंधित फाइलों में से किसी एक को संपादित कर रहा था, तो परिवर्तनों को खींच लिया, वास्तविक टकराव हो गया, लेकिन टिप्पणी में भी खींच लिया गया। तब मेरे पास वास्तव में एक बहुत गड़बड़ फाइल थी।" टिप्पणियों की तरह बहुत अधिक लगता है // MatrixFrog 10/25/2011: Updated this function to fix bug #1234। अगर मुझे इस तरह से सामान दिखाई देता है, तो मुझे लगता है, "क्या? यही तो git blameहै!"
MatrixFrog

जवाबों:


27

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


5

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


4

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

  1. मूल कोड शायद कुछ ऐसा था blah blah null, और बग रिपोर्ट में कहा गया था कि "वहाँ अशक्त का उपयोग नहीं कर सकते, इस या उस का उपयोग करें, या जो भी हो।" इसलिए दो लोगों ने स्वतंत्र रूप से बग को ठीक कर दिया और जब फिक्सेस को मर्ज किया गया, तो टकराव उत्पन्न हुआ। अब टिप्पणी के दस्तावेज यह नहीं बता रहे हैं कि समस्या क्या थी और न ही यह तय की गई थी, लेकिन केवल यह कि अतीत में कुछ बिंदु पर दो अलग-अलग फिक्स थे। यह बहुत मददगार नहीं है। कमेंट जैसे //blah blah needs a non-null argumentकम से कम एक संकेत देता है कि क्या बदल गया (और यह भी कि जानकारी संस्करण नियंत्रण प्रणाली की प्रतिबद्ध टिप्पणी से अधिक आसानी से उपलब्ध है)।
  2. मर्ज किए गए संस्करण भी मूल लाइनों में से एक की तरह नहीं दिख सकते हैं। हो सकता है कि अगर आप ब्ला ब्ला को यह और वह लेना चाहते हैं, तो सही रूप blah blah (this,that)कुछ और भी जटिल है। उस स्थिति में, एक टिप्पणी के रूप में संघर्ष संदेश छोड़ना निश्चित रूप से किसी को बाद में कोड को पढ़ने की कोशिश कर भ्रमित करेगा।
  3. अधिकांश संस्करण नियंत्रण प्रणाली आपको प्रोजेक्ट इतिहास तक पहुंच प्रदान करती हैं। उदाहरण के लिए, मैं ग्रहण (svn के साथ) में एक फ़ाइल पर राइट क्लिक कर सकता हूं, "शो हिस्ट्री ..." कह सकता हूं और फिर "वर्तमान के साथ तुलना ... 'कह सकता हूं और एक अलग विंडो प्राप्त कर सकता हूं जो मतभेदों को उजागर करता है। यह जानकारी तरीका है। अगर ग्रॉस हाइलाइट में वास्तविक अंतर होता है, तो ग्रॉक करना आसान होता है, न कि उनके आस-पास की टिप्पणियां। कोड में गैर-कार्यात्मक परिवर्तन का हर बिट पढ़ने के लिए कठिन होता है।

-1

चेक-इन कोड में विरोधाभासी मार्कर कितने परेशान हैं?

इतना गुस्सा।


1
मुझे क्षमा करें, लेकिन यह उत्तर वास्तव में कुछ भी नहीं जोड़ता है। यह एक टिप्पणी पर सबसे अच्छा होना चाहिए था।
एडम लेअर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.