当前位置:  开发笔记 > 编程语言 > 正文

如何在Windows上应用diff补丁?

如何解决《如何在Windows上应用diff补丁?》经验,为你挑选了7个好方法。

有很多程序可以创建一个差异补丁,但我有一点时间试图应用一个.我正在尝试分发补丁,我从用户那里得到了一个关于如何应用补丁的问题.所以我试着自己搞清楚,发现我没有线索,我能找到的大多数工具都是命令行.(我可以处理一个命令行,但是很多人在没有友好的GUI的情况下会丢失.所以这些都不利于此目的.)

我尝试过使用TortoiseSVN.我有我想申请的补丁.我右键单击补丁,TortoiseSVN子菜单下有一个选项,上面写着"Apply patch".它只是拉出一个空窗口.

所以我试着点击Open.它有两个选项:合并和应用统一差异.(幸运的是,补丁采用统一的差异格式.)但是普通的apply选项不起作用:它要求补丁和文件夹.不知怎的,它忘了要求文件应用补丁!所以TortoiseSVN只是简单的不起作用.是否有基于Windows GUI的实用程序,它将获取补丁和文件并正确应用它?

编辑:看看到目前为止的回复,似乎Tortoise只会在它已经版本化的文件中正确执行.情况并非如此.我需要能够将补丁应用于不是来自SVN存储库的文件.我只是尝试使用Tortoise,因为我碰巧知道SVN使用差异并且必须知道如何创建它们并应用它们.



1> Sheriff Md..:

应用补丁

使用TortoiseMerge:

    查找并打开现有的SVN repo目录

    创建一个名为"merges"的新目录(如果它尚不存在)

    复制要应用.patch文件的文件

    在继续下一步之前,添加并COMMIT到svn存储库

    右键单击合并,然后选择Apply patch ...

    双击列表中的文件

    带有diff的修补文件显示在右侧窗格中

    单击该窗格并点击保存或导出文件 - >另存为...

如果您从TortoiseMerge打开,则替代屏幕.在下面的屏幕中,目录指的是上面步骤2中提到的"合并"目录: Screeny

WinMerge GUI的屏幕截图: Screeny


@SheriffMd你没有收到错误"D:\ Folder is not a working copy"?
我的评论在编辑之前有意义,在编辑后不再有意义.你有困惑吗?上面的编辑时间戳(3月24日,'11)似乎不正确,因为OP自2011年10月以来再次编辑了他的答案.我认为我评论的时间戳也是错误的.

2> anatoly tech..:

我为此制作了纯Python工具.它具有可预测的跨平台行为.虽然它不会创建新文件(在编写本文时)并且缺少GUI,但它可以用作库来创建图形工具.

更新:如果你安装了Python,它应该更方便使用它.

pip install patch
python -m patch



3> 小智..:

TortoiseMerge是一个与TortoiseSVN捆绑在一起的独立实用程序.

它也可以在TortoiseDiff.zip存档中单独下载.这将允许您将统一差异应用于非版本化文件.


AFAIK这不能在非版本化文件上应用补丁.

4> Sardaukar..:

我知道你说你更喜欢GUI,但命令行工具可以很好地完成工作.有关Windows的unix工具端口,请参阅GnuWin.你需要补丁命令,显然;-)

但是,您可能会遇到线路终端问题.GnuWin端口将假定补丁文件具有DOS样式行终止(CR/LF).尝试在一个相当聪明的编辑器中打开补丁文件,它将为您转换它.


这就是让我走上正轨的原因.但是,运行Windows 7或更高版本需要更新patch.exe的清单,以避免每次都弹出UAC.有关操作方法,请参阅此页面:http://math.nist.gov/oommf/software-patchsets/patch_on_Windows7.html

5> Dan..:

在TortoiseSVN中,补丁应用确实有效.您需要将修补程序应用于创建它的同一目录.牢记这一点始终是非常重要的.所以这就是你在TortoiseSVN中的表现:

右键单击要应用修补程序的文件夹.它将显示一个对话框,询问补丁文件的位置.选择文件,这应该打开一个列出已更改文件的小文件列表窗口,单击每个项目应打开一个diff窗口,显示该修补程序将对该文件执行的操作.

祝好运.


这没有用.目标文件不是来自SVN存档.(请参阅原始帖子的编辑.)

6> 小智..:

您可以使用修补程序实用程序的此 Win32本机端口.

它附带了更多的其他实用工具,与Cygwin相比,它不需要任何DLL或类似工具.只需选择您选择的小型可执行文件并将其存储在任何您想要的位置.

用法简单:

patch.exe -i 

获得更多帮助:

patch.exe --help


如果您遇到运行patch.exe的问题,可以将其重命名为不包含`patch`的任何内容.Windows认为所有带有"patch"字样的exes都是可疑的.
我在Windows 7上遇到此问题:当我尝试运行`patch.exe`时,它会打开一个新的CMD窗口并提示管理权限.
补丁程序可执行文件也可以在Git for Windows软件包中找到.

7> Evgeniy Gene..:

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开关添加到命令行中。

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有