धैर्य एल्गोरिदम डिफ़ॉल्ट git diff
एल्गोरिदम से भिन्न कैसे होता है, और मैं इसका उपयोग कब करना चाहूंगा?'गिट diff --patience` के लिए क्या है?
उत्तर
आप a post from Bram Cohen, धैर्य diff एल्गोरिथ्म के लेखक पढ़ सकते हैं, लेकिन मैं this blog post पाया बहुत अच्छी तरह से धैर्य diff एल्गोरिथ्म संक्षेप में प्रस्तुत करने:
धैर्य Diff, बजाय, अपनी ऊर्जा कम आवृत्ति उच्च पर केंद्रित -केंट लाइन जो टेक्स्ट में महत्वपूर्ण सामग्री के मार्कर या हस्ताक्षर के रूप में कार्य करती हैं। यह अभी भी अपने मूल में एक LCS आधारित diff है, लेकिन एक महत्वपूर्ण अंतर के साथ, के रूप में यह केवल हस्ताक्षर लाइनों के सबसे लंबे समय तक आम subsequence मानता है:
सभी लाइनों जो दोनों पक्षों पर ठीक एक बार होते हैं, तो पता लगाएं उन पंक्तियों पर सबसे लंबा आम अनुवर्ती, उन्हें मिलान।
आप धैर्य diff जब का उपयोग चाहिए? ब्रैम के अनुसार, धैर्य diff इस स्थिति के लिए अच्छा है:
वास्तव में बुरा मामलों हैं जहां दो संस्करणों नाटकीय रूप से भिन्न हो गए हैं कर रहे हैं और डेवलपर नियंत्रण में पैच आकार रखने के लिए सावधान नहीं किया जा रहा है। उन परिस्थितियों में एक diff एल्गोरिदम कभी-कभी 'misaligned' बन सकता है जिसमें यह घुंघराले ब्रैकेट के लंबे खंडों से मेल खाता है, लेकिन यह में फ़ंक्शंस के घुंघराले ब्रैकेट को सहसंबंधित करता है जिसमें अगले बाद के फ़ंक्शन के घुंघराले ब्रैकेट्स के साथ एक संस्करण होता है। अन्य संस्करण। यह स्थिति बहुत बदसूरत है, और परिणामस्वरूप ऐसी स्थिति में अनुपयोगी संघर्ष फ़ाइल हो सकती है जहां आपको ऐसी चीजों की आवश्यकता होती है को सबसे अधिक प्रस्तुत किया गया है।
मेरे अनुभव में एक्सएमएल के साथ, यह सामान्य रूप से वही "खराब" परिणाम देता है जो सामान्य अंतर के रूप में देता है। – stivlo
एक्सएमएल के साथ धैर्य के साथ मुझे बहुत अच्छी किस्मत मिली है, निश्चित रूप से जिस अंतर को मैं देख रहा हूं वह वास्तव में गलत तरीके से गलत समस्या है नियमित diff एल्गोरिदम, लेकिन धैर्य diff के साथ बिल्कुल भव्य दिखता है। –
इस ब्लॉग की प्रक्रिया के एनिमेटेड gif सहित एक महान व्याख्या है: http://alfedenzo.livejournal.com/170301.html – Quantum7
धैर्य diff एल्गोरिथ्म एक धीमी diff एल्गोरिथ्म कि कुछ मामलों में बेहतर परिणाम से पता चलता है।
मान लीजिए आप निम्न फ़ाइल Git करने के लिए जाँच की है:
.foo1 {
margin: 0;
}
.bar {
margin: 0;
}
अब हम अनुभागों का क्रम बदलने और एक नया पंक्ति जोड़ें:
.bar {
margin: 0;
}
.foo1 {
margin: 0;
color: green;
}
डिफ़ॉल्ट diff एल्गोरिथ्म का दावा है कि अनुभाग शीर्षकों है बदला गया:
$ git diff --diff-algorithm=myers
diff --git a/example.css b/example.css
index 7f1bd1e..6a64c6f 100755
--- a/example.css
+++ b/example.css
@@ -1,7 +1,8 @@
-.foo1 {
+.bar {
margin: 0;
}
-.bar {
+.foo1 {
margin: 0;
+ color: green;
}
जबकि धैर्य भिन्नता एक परिणाम दिखाती है जो तर्कसंगत रूप से अधिक है सहज ज्ञान युक्त:
$ git diff --diff-algorithm=patience
diff --git a/example.css b/example.css
index 7f1bd1e..6a64c6f 100755
--- a/example.css
+++ b/example.css
@@ -1,7 +1,8 @@
-.foo1 {
- margin: 0;
-}
-
.bar {
margin: 0;
}
+
+.foo1 {
+ margin: 0;
+ color: green;
+}
वहाँ a good discussion of subjective diff quality here, और git 2.11 is exploring diff heuristics further है।
ध्यान दें कि patience diff algorithm still has some known pathological cases।
- 1. 'गिट diff HEAD ^' के विपरीत क्या है?
- 2. गिट-diff
- 3. गिट diff:
- 4. इंटरैक्टिव जोड़ने के लिए गिट के धैर्य diff एल्गोरिदम का उपयोग करें
- 5. गिट diff - diff सूची को कैसे छोड़ें
- 6. गिट diff - केवल
- 7. क्या मैं "गिट गुई" पास कर सकता हूं, कह सकता हूं, "- धैर्य" से "गिट diff"?
- 8. हमेशा गिट diff
- 9. गिट पूरे विलय diff
- 10. तारीख पर गिट diff?
- 11. गिट diff - online फ़ाइलों के साथ शब्द-diff
- 12. मैं गिट diff उपयोग opendiff
- 13. गिट diff grep कैसे करें?
- 14. क्या गिट बाइनरी diff एल्गोरिदम (डेल्टा स्टोरेज) मानकीकृत है?
- 15. लेखक फ़िल्टर के साथ गिट diff
- 16. 'गिट प्रारूप-पैच और' गिट diff 'के बीच क्या अंतर है?
- 17. गिट के लिए एसवीएन diff कैसे लागू करें?
- 18. diff
- 19. गिट diff लागू करने के लिए कैसे - गिट के बिना बाइनरी पैच स्थापित?
- 20. क्या सभी गिट परियोजनाओं में सभी "गिट diff" कमांड "पायथन डिफ" का उपयोग करना संभव है?
- 21. diff कमांड के विंडोज समतुल्य क्या है?
- 22. "गिट diff" कुछ भी नहीं करता
- 23. छवियों के लिए diff/पैच
- 24. emacs diff
- 25. प्रतिबद्ध वस्तुओं में गिट स्टोर diff जानकारी करता है?
- 26. गिट diff कमांड को दिखाता है कि संपूर्ण फ़ाइल को
- 27. मैं गिट diff का उपयोग कर दो स्प्रेडशीट्स के एक पठनीय diff कैसे बना सकता हूँ?
- 28. विंडोज़ में गिट बैश का उपयोग करने के लिए क्या आदेश हैं उदा। जब गिट diff मोड में?
- 29. Git diff
- 30. गिट-डिफ बनाने के लिए कैसे एक "संदर्भ" प्रारूप diff बनाने के लिए?
शायद यह कोड और संशोधित लाइनों से मेल खाता है जो बहुत धीमा हो सकता है – codymanix
मैंने बाजार से धैर्य के लिए एक स्टैंडअलोन स्क्रिप्ट निकाली है, आप इसे [अन्य SO थ्रेड] में ढूंढ सकते हैं (http://stackoverflow.com/questions/4599456/टेक्स्ट रूप-diffing-json/4599500 # 4599500)। – TryPyPy
एक फॉलोअप प्रश्न। मुझे धैर्य का उपयोग क्यों नहीं करना चाहिए? – balki