文本的三路合并算法

时间:2009-07-29 23:54:06

标签: algorithm merge diff revision

所以我一直在开发一个wiki类型的网站。我想要决定的是合并同时由两个用户编辑的文章的最佳算法。

到目前为止,我正在考虑使用维基百科的方法合并文档,如果编辑了两个不相关的区域,但如果两个提交冲突,则丢弃旧的更改。

我的问题如下:如果我有原始文章,并对其进行了两处更改,那么合并它们然后在出现冲突时处理冲突的最佳算法是什么?

3 个答案:

答案 0 :(得分:31)

Bill Ritcher的优秀论文“A Trustworthy 3-Way Merge”讨论了商业SCM软件包使用的三种合并和巧妙解决方案的常见问题。

3向合并将自动应用每个版本的所有更改(不重叠)。诀窍是自动处理尽可能多的几乎重叠的区域。

答案 1 :(得分:10)

本文对带有伪代码的diff3算法进行了正式分析: http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf

标题为“Diff3的正式调查”,由来自雅虎的Sanjeev Khanna,Keshav Kunal和Benjamin C. Pierce撰写。

答案 2 :(得分:2)

坦率地说,我依赖于diff3。它几乎适用于所有Unix发行版,您可以随时为Windows构建和捆绑.EXE,以确保它适用于您的目的。