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

标签 windows merge diff

我有 3 个文件。

  1. f1.java
  2. f1rev1.java
  3. f1rev2.java

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

是否有任何工具或库可用于实现此目的? 任何语言都可以。

注意 - 我研究了 diff3 算法。在那里它比较了 f1.java 和 f1rev1.java 以及 f1.java 和 f1rev2.java

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

最佳答案

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

在基于 UNIX 的平台上,您可以使用工具 diffpatch 来实现您想要做的事情。

  1. 使用 diff -u f1.java f1rev1.java > rev1.patch 创建补丁
  2. 通过 patch f1rev2.java rev1.patch 将补丁应用到其他源文件

如您所见,这很容易。只有补丁中包含的差异才会在另一个文件上播放。请注意,这仅在补丁与其兼容时才有效。您可以使用 less 读取补丁文件以查看要应用的更改。

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

How do I apply a diff patch on Windows?

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

关于windows - 将两个文件之间的差异应用到另一个文件的工具或库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19920881/

相关文章:

windows - 在代理后面使用 git

python - 如何在 Windows 上连接到 WiFi 网络?

Git 工作流程 : merging branches while avoiding repetitive commit messages

svn - 有什么好的、非分布式的、具有出色的分支和合并支持的 Subversion 替代方案?

mercurial - mercurial 中的标签差异

diff - Linux 控制台中有任何视觉差异吗?

TFS 提交未更改的文件

c# - DevExpress DataBinding,添加新记录

windows - 使用命令提示符获取操作系统的主版本号

mercurial - 了解 Mercurial merge 变更集