将两个文件之间的差异应用于另一个文件的工具或库?

时间:2013-11-12 04:28:54

标签: windows merge diff

我有3个文件。

  1. f1.java
  2. f1rev1.java
  3. f1rev2.java
  4. 我想要做的是获取“f1.java”和“f1rev1.java”之间的差异并将该差异应用于“f1rev2.java”而不考虑f1.java和f1rev2.java之间的差异。

    我可以使用任何工具或库来实现这一目标吗? 任何语言都没问题。

    注意 - 我研究了diff3算法。在那里它将f1.java与f1rev1.java和f1.java与f1rev2.java进行比较

    我不想考虑f1和f1rev2之间的差异。

1 个答案:

答案 0 :(得分:2)

您没有指定您的平台(提示:使用适当的标签!)。

在基于UNIX的平台上,您可以使用工具diffpatch来实现您的目标。

  1. 使用diff -u f1.java f1rev1.java > rev1.patch创建补丁
  2. 通过patch f1rev2.java rev1.patch将补丁应用到其他源文件
  3. 正如你所看到的,蛋糕很容易。只有补丁中包含的差异才会在另一个文件上播放。请注意,这仅在补丁与其兼容时才有效。您可以使用less阅读补丁文件,以查看要应用的更改。

    在Windows系统上,您可以执行此处概述的相同步骤:

    How do I apply a diff patch on Windows?

    可悲的是,但正如预期的那样,它更耗时。考虑使用MinGW:Apply a patch file in Windows using Mingw或Cygwin。