Алгоритм определения терпения - это более медленный алгоритм сравнения, который в некоторых случаях показывает лучшие результаты.
Предположим, у вас есть следующий файл, зарегистрированный в 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 дополнительно изучает эвристику .
Обратите внимание, что у алгоритма * терпения есть некоторые известные патологические случаи .