我有一个文件的三个版本:原始版本、我的更改和其他人的更改。我想进行三向合并以生成包含两组更改的版本(如果不可能,则失败)。请注意,我不是在询问任何版本控制系统,例如 svn 或 git。我想编写一个最小的命令行工具,它将三个文件作为输入并将合并写入标准输出。
一种方法如下,使用 Unix diff 和 patch 工具。假设这三个文件分别称为 orig、my、other:
% 差异 -u 原始我的 | 补丁 -o - 其他
或者反过来做,
% diff -u 其他 | 补丁 -o - 我的
但事实上有两种方法可以进行差异和合并,这有点代码味道。当然,将所有三个文件作为输入的合并工具可以做得更好。
显然,我可以初始化一个空的 svn 存储库,签入 orig,签入 my 和 other 在单独的分支中,然后进行合并。或者其他版本控制系统中的等效操作。但这似乎重量级且笨重,创建了一个将立即丢弃的存储库。
是否有一个合理的从命令行独立运行的三向合并工具?