【问题标题】:Three-way merge of files (outside version control)文件的三向合并(版本控制之外)
【发布时间】:2014-06-19 15:09:15
【问题描述】:

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

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

% diff -u orig my |补丁 -o - 其他

或者反其道而行之,

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

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

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

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

【问题讨论】:

  • man merge... 有很多,但大多数都有用户界面。 mergesdiff 是纯文本想到的......其他一些(例如xxdiffmeldkdiff3 及其 GNOME 对应物、Beyond Compare 等)可能可以选择以纯文本模式运行,不过,我猜...

标签: merge diff patch three-way-merge


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    相关资源
    最近更新 更多