有很多程序可以创建一个差异补丁,但我有一点时间试图应用一个.我正在尝试分发补丁,我从用户那里得到了一个关于如何应用补丁的问题.所以我试着自己搞清楚,发现我没有线索,我能找到的大多数工具都是命令行.(我可以处理一个命令行,但是很多人在没有友好的GUI的情况下会丢失.所以这些都不利于此目的.)
我尝试过使用TortoiseSVN.我有我想申请的补丁.我右键单击补丁,TortoiseSVN子菜单下有一个选项,上面写着"Apply patch".它只是拉出一个空窗口.
所以我试着点击Open.它有两个选项:合并和应用统一差异.(幸运的是,补丁采用统一的差异格式.)但是普通的apply选项不起作用:它要求补丁和文件夹.不知怎的,它忘了要求文件应用补丁!所以TortoiseSVN只是简单的不起作用.是否有基于Windows GUI的实用程序,它将获取补丁和文件并正确应用它?
编辑:看看到目前为止的回复,似乎Tortoise只会在它已经版本化的文件中正确执行.情况并非如此.我需要能够将补丁应用于不是来自SVN存储库的文件.我只是尝试使用Tortoise,因为我碰巧知道SVN使用差异并且必须知道如何创建它们并应用它们.
应用补丁
使用TortoiseMerge:查找并打开现有的SVN repo目录
创建一个名为"merges"的新目录(如果它尚不存在)
复制要应用.patch文件的文件
在继续下一步之前,添加并COMMIT到svn存储库
右键单击合并,然后选择Apply patch ...
双击列表中的文件
带有diff的修补文件显示在右侧窗格中
单击该窗格并点击保存或导出文件 - >另存为...
如果您从TortoiseMerge打开,则替代屏幕.在下面的屏幕中,目录指的是上面步骤2中提到的"合并"目录:
WinMerge GUI的屏幕截图:
我为此制作了纯Python工具.它具有可预测的跨平台行为.虽然它不会创建新文件(在编写本文时)并且缺少GUI,但它可以用作库来创建图形工具.
更新:如果你安装了Python,它应该更方便使用它.
pip install patch python -m patch
TortoiseMerge是一个与TortoiseSVN捆绑在一起的独立实用程序.
它也可以在TortoiseDiff.zip存档中单独下载.这将允许您将统一差异应用于非版本化文件.
我知道你说你更喜欢GUI,但命令行工具可以很好地完成工作.有关Windows的unix工具端口,请参阅GnuWin.你需要补丁命令,显然;-)
但是,您可能会遇到线路终端问题.GnuWin端口将假定补丁文件具有DOS样式行终止(CR/LF).尝试在一个相当聪明的编辑器中打开补丁文件,它将为您转换它.
在TortoiseSVN中,补丁应用确实有效.您需要将修补程序应用于创建它的同一目录.牢记这一点始终是非常重要的.所以这就是你在TortoiseSVN中的表现:
右键单击要应用修补程序的文件夹.它将显示一个对话框,询问补丁文件的位置.选择文件,这应该打开一个列出已更改文件的小文件列表窗口,单击每个项目应打开一个diff窗口,显示该修补程序将对该文件执行的操作.
祝好运.
您可以使用修补程序实用程序的此 Win32本机端口.
它附带了更多的其他实用工具,与Cygwin相比,它不需要任何DLL或类似工具.只需选择您选择的小型可执行文件并将其存储在任何您想要的位置.
用法简单:
patch.exe -i
获得更多帮助:
patch.exe --help
Git安装中的patch.exe实用程序可在Windows 10上运行。
安装Windows版Git,然后使用"C:\Program Files\Git\usr\bin\patch.exe"
命令来应用补丁。
如果Hunk #1 FAILED at 1 (different line endings).
在应用补丁程序时在输出中出现诸如a之类的错误消息,请尝试将-l
(这是的快捷方式--ignore-whitespace
)或--binary
开关添加到命令行中。