语义差异

2004年12月6日

大多数版本控制系统依赖于使用和理解工件版本之间的变化,通常称为来自 Unix 中可以生成它们的命令的差异。对于文本和二进制文件,存在良好的差异(和合并)算法。这些差异的问题在于它们相当愚蠢。它们所做的只是查看两个工件版本并生成一种从一个版本到另一个版本的方法。

语义差异将理解更改的目的,而不仅仅是效果。

例如,假设我在一个工具中执行了“提取方法”重构,对一个类进行了更改,并且这是两个版本之间唯一的更改。使用当前工具,它们会看到程序文本中的更改,但它们不知道我进行了重构。因此,当我检查两个版本之间的差异时,它可以向我显示更改,但它无法以突出显示重构的方式进行。这也可能使合并比实际了解我正在做什么时更尴尬。

(可能有一个普遍接受的术语,如果有,请告诉我。)