धैर्य एल्गोरिथ्म डिफ़ॉल्ट git diff
एल्गोरिथ्म से कैसे भिन्न होता है, और मैं इसका उपयोग कब करना चाहूंगा?
धैर्य एल्गोरिथ्म डिफ़ॉल्ट git diff
एल्गोरिथ्म से कैसे भिन्न होता है, और मैं इसका उपयोग कब करना चाहूंगा?
जवाबों:
ब्रैम कोहेन के धैर्य के एल्गोरिथ्म के एक पोस्ट को आप पढ़ सकते हैं , लेकिन मुझे यह ब्लॉग पोस्ट बहुत अच्छी तरह से धैर्य के अलग एल्गोरिथ्म को संक्षेप में प्रस्तुत करने के लिए मिली :
इसके बजाय, पेशेंट डिफ, अपनी ऊर्जा को कम-आवृत्ति वाली उच्च-सामग्री लाइनों पर केंद्रित करता है, जो पाठ में महत्वपूर्ण सामग्री के मार्कर या हस्ताक्षर के रूप में कार्य करते हैं। यह अभी भी अपने मूल पर एक LCS- आधारित भिन्नता है, लेकिन एक महत्वपूर्ण अंतर के साथ, क्योंकि यह केवल हस्ताक्षर लाइनों की सबसे लंबी सामान्य परिकल्पना को मानता है:
सभी पंक्तियों को खोजें जो दोनों पक्षों पर एक बार होती हैं, फिर उन पंक्तियों पर सबसे लंबी सामान्य अनुक्रिया करते हैं, उनका मिलान करते हैं।
आपको धैर्य का उपयोग कब करना चाहिए ? ब्रैम के अनुसार, धैर्य की स्थिति इस स्थिति के लिए अच्छी है:
वास्तव में बुरे मामले वे हैं जहां दो संस्करणों ने नाटकीय रूप से विचलन किया है और डेवलपर पैच आकार को नियंत्रण में रखने के लिए सावधान नहीं हो रहा है। उन परिस्थितियों में एक अलग एल्गोरिथ्म कभी-कभी 'गलत' हो सकता है जिसमें यह घुंघराले कोष्ठक के लंबे वर्गों से एक साथ मेल खाता है, लेकिन यह एक संस्करण में कार्यों के घुंघराले कोष्ठक को एक संस्करण में अगले संस्करण के घुंघराले कोष्ठक के साथ परस्पर क्रिया करता है। यह स्थिति बहुत बदसूरत है , और इस स्थिति में पूरी तरह से अनुपयोगी संघर्ष फ़ाइल हो सकती है जहां आपको ऐसी चीजों की आवश्यकता होती है जो सुसंगत रूप से सबसे अधिक प्रस्तुत की जानी चाहिए।
धैर्य अलग एल्गोरिथ्म एक धीमी अंतर एल्गोरिथ्म है जो कुछ मामलों में बेहतर परिणाम दिखाता है।
मान लीजिए कि आपके पास git में निम्नलिखित फ़ाइल है:
.foo1 {
margin: 0;
}
.bar {
margin: 0;
}
अब हम अनुभागों को फिर से व्यवस्थित करते हैं और एक नई पंक्ति जोड़ते हैं:
.bar {
margin: 0;
}
.foo1 {
margin: 0;
color: green;
}
डिफ़ॉल्ट भिन्न एल्गोरिथ्म का दावा है कि अनुभाग शीर्षक बदल गए हैं:
$ 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;
+}
यहाँ व्यक्तिपरक अंतर गुणवत्ता की एक अच्छी चर्चा है , और git 2.11 आगे की उत्तराधिकारियों की खोज कर रहा है ।
ध्यान दें कि धैर्य अलग एल्गोरिथ्म में अभी भी कुछ ज्ञात रोग संबंधी मामले हैं ।