![]() |
1
6
我记得不久前读到的一篇文章,CVS merge实际上使用diff3算法来执行合并。 这篇PDF文章 A Formal Investigation of Diff3, by Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce 宾夕法尼亚大学的diff3算法详细介绍。 If主要关注合并算法本身的属性,而不是它如何与CVS集成。
标签,日期意识从CVS手册页:
2或3路和文本/二进制意识
从diff3手册页:
比较期间的基本版本根据链接的文章,基本版本是最后一个 常见的 文件的两个当前版本(A和B)之间的版本(O)。它首先使用双向diff算法来寻找O和A,以及O和B之间的最长公共子序列。 然后(引自文章)它:
|
![]() |
2
3
您可以使用两种不同形式的“merge”命令,它们做的事情略有不同:
变量之间的区别在于如何选择“基本”版本,但任一变量的基本算法是,对于每个文件,CVS选择的两个版本之间的差异将应用于当前工作副本的顶部。 在第一种形式中,合并基是给定标记和工作副本修订的共同祖先。因此,假设您的本地版本为1.38(正面版本为38),您正在合并1.34.4.2(正面版本为34的分支4的第2版)-共同祖先将为1.34。我相信这个变体使用两个diff 1.34..1.38和1.34..1.34.4.2进行了三向合并,在不匹配的地方产生冲突。
在第二种形式中,您自己指定基础修订,因此最终结果与
|
![]() |
3
0
这个
|
![]() |
Dsujan · 从第二个文件中获取更改行的差异 6 年前 |
![]() |
Damian Nadales · 让vc修订版其他窗口删除它获取的文件 7 年前 |
|
book · bash:如何打印diff命令输出? 7 年前 |
![]() |
lombocska · Liquibase diff-驱动程序问题 7 年前 |
![]() |
bitifet · 如何创建类似VCS的冲突合并文件? 7 年前 |