語義差異
2004 年 12 月 6 日
大多數版本控制系統仰賴使用和了解版本之間的變更,這些變更通常稱為 Unix 中可產生這些變更的指令的差異。對於文字和二進位檔案而言,都有良好的差異(和合併)演算法。這些差異的問題在於它們相當愚笨。它們所做的只是查看兩個版本的人工製品,並產生從一個版本到另一個版本的一種簡單方式。
語義差異會了解變更的目的,而不仅仅是效果。
例如,假設我透過在工具中執行 Extract Method 重構對類別進行變更,而這是我在版本之間唯一的變更。使用目前的工具,它們會看到程式文字中的變更,但它們不知道我執行了重構。因此,當我檢查兩個版本之間的差異時,它可以向我顯示變更,但它無法以突顯重構的方式執行此操作。如果它實際上知道我在做什麼,這也會讓合併比實際情況更為尷尬。
(可能有一個普遍接受的術語,如果有,請告訴我。)