文件的三向合并(外部版本控制)

时间:2014-06-19 15:09:16

标签: merge diff patch three-way-merge

我有三个版本的文件:原始版本,我的更改以及其他人的更改。我想进行三向合并以生成包含两组更改的版本(如果不可能则会失败)。请注意,我询问任何修订控制系统,例如svn或git。我想编写一个最小的命令行工具,它将三个文件作为输入,并将合并写入标准输出。

使用Unix diff和patch工具,一种方法如下。假设这三个文件名为orig,my,other:

%diff -u来自我的|补丁-o - 其他

或反过来做,

%diff -u orig其他|补丁-o - 我的

但事实上有两种方法来进行差异和合并是一种代码味道。当然,将所有三个文件作为输入的合并工具可以做得更好。

显然我可以初始化一个空的svn存储库,检入orig,检查我和其他在不同的分支中,然后进行合并。或者在另一个版本控制系统中的等效操作。但这似乎是重量级和笨重的,创建一个将立即丢弃的存储库。

是否有一个合理的三向合并工具,它可以从命令行独立运行?

1 个答案:

答案 0 :(得分:0)

正如twalberg在评论中所说,merge是我正在寻找的工具。