来自外部 .diff 文件的交互式修补程序



是否有适用于Linux的命令或程序允许以交互方式修补源代码,在屏幕上打印每个块并等待确认,然后再将其应用于文件?

类似于git add -p,但从另一个 .diff 文件中进行更改?

您始终可以在 shell/ruby/python 中编写脚本,逐行读取该文件并提示在文件签名之间添加差异。

它可以接受差异文件的名称作为参数,或者您可以放置两个哈希并在脚本中制作补丁。

更重要的是,您可以调用该脚本 git-command-name,将其放入您的 user/bin 文件夹中,git 会将命令名称识别为 git 命令。

另一方面(只是一个想法)您可以操纵 .diff 的创建吗?也许您可以使用格式补丁并在每次提交差异后应用停止?

虽然不是交互式的,但另一种选择是手动编辑.diff文件并删除您不需要的任何更改。

如果你在 emacs 中打开一个差异文件并将编辑器放在diff-mode你可以编辑补丁,emacs 会尝试更新 hunk 标记。(Emacs 会自动打开.diffdiff-mode文件。

要在进行更改后手动更新标记,C-c C-w重新生成大块头。

要一一应用大块头,C-c C-a.要反向应用,请C-u C-c C-a.您还可以M-x diff-tell-file-name将它们应用于其他文件。

我发现patch original patch.diffpatch < patch.diff和用diff -u创建的补丁文件更可靠,更容易使用。

此处还记录了信息。

更新 [5.21.21]:
C-c C-s允许您拆分大块头,这对于手动编辑非常有用。有时C-c C-w(diff-ignore-whitespace-hunk)并没有按照您的预期进行操作,因此最安全的选择是拆分大块头并让emacs自动更新标头。这在保持线条不变时特别有用;只需拆分成一大块并删除即可删除更改。

最新更新