如何在Windows上创建补丁文件?

30

在Windows系统中,我有两个源文件,想要创建一个类似于这个的差异补丁。 但是我不确定这个补丁是什么格式,以及使用什么应用程序来创建它?GNU diff输出的补丁与我在上面链接中看到的补丁非常不同。


1
UnixUtils包在Windows上无法处理二进制文件。运行“diff -u oldfile newfile > patchfile”会生成一个只有一行文本的补丁文件:“Binary files file1.mp3 and file2.mp3 differ”。(由于没有任何声望点而被阻止添加评论,因此无法添加评论。这不够用户友好!) - Stan Duncan
8个回答

27

试试WinMerge。您将在“工具”菜单中找到补丁生成器。


2
尽管OP谈论的是源代码,这意味着他在谈论文本文件,但我想补充一下信息,即WinMerge无法为二进制文件生成补丁文件。 - Marged

24

感谢 PhiLhoLukáš!在 Windows 7 上,来自UnxUtils 的 diff 程序非常好用,可以生成补丁文件:

diff -u oldfile newfile >patchfile
同样地,UnxUtils中的patch程序非常适合应用此补丁:
patch -u oldfile patchfile

17

输出格式称为“统一差异”("unified diff"),可以使用diff -u生成。


10

WinMerge是Windows上最好的工具。 要创建补丁文件,您需要执行以下操作:

文件>打开

-- 在这里,您打开要生成补丁文件的文件。

工具>生成补丁

-- 在这里,您指定要保存补丁文件的路径。WinMerge会为您保存补丁文件。


注意: “正常”补丁样式使用尖括号< >作为行动指示符。 “统一”样式使用+和-(类似于drupal.org上的补丁)。 - As If
您还可以将两个文件(同时)拖放到WinMerge中。WinMerge在补丁文件中包含文件的完整路径。 - PeterCo

7

你需要的是 WinMerge (http://winmerge.org/)。此工具还可以比较整个文件树,对某些人来说绝对必备。


4

UnxUtils软件包为Windows提供了许多有用的Unix工具,对Windows安装影响最小(解压缩,将位置添加到路径中,使用它)。
它包含一个diff.exe


1
Beyond Compare 4 中,您可以通过选择“会话”>“文本比较报告...”菜单项,然后选择“布局”为“补丁”,“补丁样式”为“统一差异”,来生成统一差异。然后将输出保存到文件或剪贴板中。

0
我还制作了一个工具,用于在两个变更集/文件夹/提交之间生成补丁文件(如WinMerge HTML格式),可以从GitHub或Azure下载的zip文件或只是存储在您驱动器中的文件夹。因为当前WinMerge不支持从命令行生成路径文件以支持自动化。

使用方法:

python diff_generator.py --c1 "path_to_file1.zip" --c2 "path_to_file2.zip" [--git]

或者

python diff_generator.py --c1 "path_to_folder1" --ddc1 --c2 "path_to_folder2" --ddc2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接