2009-05-24 16 views
7

किस स्रोत नियंत्रण उत्पादों में "diff" सुविधा है जो चेक-इन संस्करणों के बीच अंतर की गणना करने में सफेद स्थान, ब्रेसिज़ इत्यादि को अनदेखा करती है? मुझे लगता है कि ClearCase के अंतर यह लेकिन Visual SourceSafe (या कम से कम संस्करण मैं प्रयोग किया जाता) किया याद करने के लिए नहीं किया था लगता है।कोड स्वरूपण और स्रोत नियंत्रण diffs

कारण मैं पूछता हूं कि शायद यह काफी विशिष्ट है। एक टीम पर चार पूरी तरह से उचित डेवलपर अपने कोड स्वरूपण के चार पूरी तरह से अलग तरीके हैं। कोड आखिरी किसी और के द्वारा बदल छोड़ने पर, प्रत्येक तुरंत चीज़ें अपेक्षित ढंग से की तरह स्वरूपित करने के लिए प्रोग्राम या संपादक मैक्रो किसी तरह चलेंगे। वे वास्तविक कोड परिवर्तन करते हैं। वे अपने परिवर्तनों की जांच करते हैं। वे छुट्टी पर जाते हैं। दो दिन बाद कि कार्यक्रम है, जो दो साल के लिए ठीक चल रहा था, ऊपर चल रही है। डेवलपर बग करने के लिए सौंपा संस्करणों के बीच एक अंतर है और 204 मतभेद, केवल 3 जिनमें से, किसी भी महत्व के हैं क्योंकि diff एल्गोरिथ्म लंगड़ा है पाता है।

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

=========

संपादित करें: कुछ महान सुझाव के लिए हर किसी के लिए धन्यवाद।

क्या मैं इस से दूर ले रहा है:

(1) एक सूत्र नियंत्रण के साथ प्लग में प्रकार डिफ बेहतर है प्रणाली।

(2) उपयुक्त विकल्पों के साथ एक अंतर खोजें।

(3) एक अच्छा स्रोत स्वरूपण प्रोग्राम का उपयोग करें और चेक-इन मानक पर व्यवस्थित करें।

एक योजना की तरह लगता है। एक बार फिर धन्यवाद।

+0

ClearCase खाली अनदेखी करने के लिए एक विकल्प है मतभेद। –

उत्तर

2

शायद तुम एक प्रारूप का चयन करना चाहिए और, ताकि प्रत्येक व्यक्ति की जांच कर सकते में जाँच से पहले कुछ खरोज उपकरण चलाएँ उसका/उसकी अपनी प्राथमिकताओं के पुनः स्वरूपित, परिवर्तन करते हैं, सरकारी मानक के लिए वापस पुन: फ़ॉर्मेट और उसके बाद में जाँच?

कुछ अतिरिक्त कदम लेकिन वे काम करते समय पहले से ही इंडेंटेशन टूल का उपयोग करते हैं। शायद यह एक ट्रिगर चेक-इन स्क्रिप्ट हो सकता है?

संपादित करें: यह शायद ब्रेस समस्या को भी हल करेगा।

(मैं इस समाधान अपने आप को, इसलिए "perhapes" और "Maybes" की कोशिश की है, लेकिन मैं एक ही समस्याओं के साथ परियोजनाओं में किया गया है, और यह एक दर्द अप्रासंगिक के सैकड़ों के साथ डिफ के माध्यम से जाने की कोशिश करने के लिए है परिवर्तन जो व्हाइटस्पेस तक सीमित नहीं हैं, लेकिन स्वरूपण स्वयं भी शामिल हैं।)

+1

नहीं, बस अपनी टीम को उसी पृष्ठ पर प्राप्त करें। http://stackoverflow.com/questions/903754/do-you-still-limit-line-length-in-code/904008#904008 – bendin

+0

@bendin, आपका क्या मतलब है? – FeatureCreep

0

सबवर्जन स्पष्ट रूप से नवीनतम संस्करणों में या तो जीएनयू डिफ जैसे वैकल्पिक अंतर का उपयोग करके इसका समर्थन करता है।

4

Git इन विकल्पों में है:

  • --ignore-space-at-eol

    EOL पर खाली स्थान के में परिवर्तन पर ध्यान न दें।

  • -b, --ignore-space-change

    खाली स्थान के की मात्रा में परिवर्तन पर ध्यान न दें।यह लाइन अंत में व्हाइटस्पेस को अनदेखा करता है, और एक या अधिक व्हाइटस्पेस वर्णों के समकक्ष समकक्ष सभी अन्य अनुक्रमों को समकक्ष मानता है।

  • -w, --ignore-all-space

    जब लाइनों की तुलना खाली स्थान के ध्यान न दें। यह अंतर को अनदेखा करता है भले ही एक पंक्ति में सफेद जगह है जहां दूसरी पंक्ति में कोई नहीं है।

मुझे यकीन नहीं है कि गिट के अंतर का उपयोग करके ब्रेस परिवर्तनों को अनदेखा किया जा सकता है या नहीं।

यदि यह सी/सी ++ कोड है, तो आप Astyle नियमों को परिभाषित कर सकते हैं और फिर Astyle का उपयोग करके स्रोत कोड की ब्रेस शैली को उस रूप में परिवर्तित कर सकते हैं। एक git diff तब सेन आउटपुट का उत्पादन करेगा।

0

तुलना से परे यह (और बहुत कुछ) करता है और आप इसे सबवर्सन या सोर्सएफ़ में बाहरी diff टूल के रूप में एकीकृत कर सकते हैं।

0

जैसा कि Is it possible for git-merge to ignore line-ending differences? में बताया गया है, सही VCS विकल्प पर भरोसा करने के बजाय, सही विफ टूल को अपने पसंदीदा वीसीएस में जोड़ना अधिक मायने रखता है (भले ही गिट के पास व्हाइटस्पेस के बारे में कुछ विकल्प हों, जैसा कि उल्लेख किया गया है Alan's answer, यह हमेशा जितना चाहें उतना पूरा नहीं होगा)।

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

4

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

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

और अगर किसी को सिर्फ चयनित शैली के साथ काम करने के लिए सहमत नहीं है बस उसे (या उसके) याद दिलाना है कि वह प्रोग्रामिंग एक पेशे के रूप में नहीं एक शौक के रूप में, देखने के है http://www.ericsink.com/entries/No_Great_Hackers.html

+0

+1 - इसे पायथन कोड के साथ आज़माएं और स्पार्क उड़ें! – richq

संबंधित मुद्दे