3 回答

TA貢獻1829條經驗 獲得超7個贊
相反,Patience Diff將精力集中在低頻高含量行上,這些行用作文本中重要內容的標記或簽名。它的核心仍然是基于LCS的差異,但有一個重要區別,因為它僅考慮簽名行的最長公共子序列:
找到在兩側恰好發生一次的所有行,然后在這些行上執行最長的公共子序列,使其匹配。
什么時候應該使用耐心差異?根據Bram的說法,耐心差異對這種情況有好處:
真正糟糕的情況是,兩個版本的差異很大,開發人員并不小心控制補丁大小。在這種情況下,diff算法有時會變得“錯位”,因為它會將大括號的花括號匹配在一起,但最終會使一個版本中的函數的花括號與另一版本中的下一個后面的函數的花括號相關聯。這種情況非常丑陋,并且在您最需要最連貫呈現這種情況的情況下,可能導致完全無法使用的沖突文件。

TA貢獻1804條經驗 獲得超8個贊
耐心差異算法是一種較慢的差異算法,在某些情況下顯示出更好的結果。
假設您已將以下文件簽入到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;
+}
- 3 回答
- 0 關注
- 572 瀏覽
添加回答
舉報