比较文档的两个版本



如何为单个文件实现版本控制系统?

这个系统的重点是突出显示同一文件的两个版本之间发生的变化(与git差不多(。

与其存储整个文档,通常最好存储文件的第一个版本;"推";只会存储每一个修改。然而,我们如何才能有效地发现插入、修改、删除,甚至两者的混合?

有一些版本控制系统可以处理单个文件。可以使用许多现代版本控制系统,如Git,只需存储一个文件,但有一种工具可以处理独立文件,那就是RCS。

大多数版本控制系统要么采用一系列快照方法,如Git,要么采用变更集方法,如Arch和RCS。值得注意的是,RCS使用反向增量;也就是说,只有文件的最新版本是完整存储的,每个较旧的修订版都存储为对其后续修订版的更改。

无论哪种情况,检测变化的方法都是diff算法。有标准的迈尔斯方法,加上耐心和直方图算法等修改。它们都是基于找到最长的公共子序列(可能有一些修改(,然后将非公共部分表示为插入、删除,或者在某些情况下,表示为修改。

";修改";在diff中很难量化,因为我们是否认为单行的变化在逻辑上是插入一行并删除另一行,还是对该行进行修改,取决于阅读该行的人是否认为它构成了实质性的变化。由于衡量人类意见对软件来说很困难,一些差异生成方法,如统一差异,总是产生添加和删除,而另一些方法,如上下文差异,总是认为这是一种修改。

最新更新