【问题标题】:Applying a patch that modifies multiple files应用修改多个文件的补丁
【发布时间】:2012-12-10 02:36:53
【问题描述】:

我正在尝试在此处应用补丁,我将其保存为 xLoader.patch

http://gitorious.org/x-load-omap3/mainline/commit/ee120c894c3377054bda149748eb0621f2f843c8?format=patch

它修改了多个文件并且不会从基本目录顺利完成,我正在使用下面的命令并收到一堆关于帅哥失败的错误,我该如何正确地做到这一点?有没有办法将文件分解为独立处理每个文件的段?

patch -p1 --dry-run -i xLoader.patch

错误:

x-loader$ patch -p1 --dry-run -i xLoader-512_patch.txt
patching file board/omap3beagle/omap3beagle.c
Hunk #1 succeeded at 310 (offset 45 lines).
Hunk #2 FAILED at 305.
1 out of 2 hunks FAILED -- saving rejects to file board/omap3beagle/omap3beagle.c.rej
patching file drivers/k9f1g08r0a.c
Hunk #1 succeeded at 221 (offset 67 lines).
Hunk #2 FAILED at 185.
1 out of 2 hunks FAILED -- saving rejects to file drivers/k9f1g08r0a.c.rej
patching file include/asm/arch-omap3/mem.h
Hunk #2 FAILED at 72.
Hunk #3 succeeded at 305 (offset 52 lines).
Hunk #4 succeeded at 364 (offset 52 lines).
1 out of 4 hunks FAILED -- saving rejects to file include/asm/arch-omap3/mem.h.rej

【问题讨论】:

  • 您实际上遇到了哪些错误?您确定将其应用于生成它的相同基本代码吗?
  • 由此看来,您似乎确实在尝试将其应用于与生成补丁的代码状态不同的代码状态。我不知道你的情况,但如果你能从你试图应用它的相同代码生成补丁,那肯定会解决你的问题。
  • 这是其中一项功能和正在发生的拒绝。 pastebin.com/s0y8HAyj
  • 从那看来,您最大的问题似乎是由于某种原因您有空格不一致。 Pastebin 将所有内容都转换为空格,因此我无法从中分辨出来,但您可能在您正在处理的各个版本之间以奇怪且不一致的方式混合空格和制表符,这就是补丁不适用。跨度>

标签: c++ diff patch git-diff


【解决方案1】:

如果这就是您所需要的,那么是的,可以将它拆分为一个片段,用于它修补的每个文件。只需在 ---/+++ 标题行上拆分它。这些片段中的每一个都可以作为一个独立的补丁文件完美地工作。

【讨论】:

  • 我相信每个文件的差异实际上是从“---”行之前的“差异”行开始的。
  • 不,diff 行和它后面的行将被忽略。
【解决方案2】:

如果你正在使用 git 并应用到一个 git 工作目录,你可以使用 git-apply 而不是 patch。

听起来您的补丁并没有完全应用。没有必要一次只将其应用于一个文件,它将应用于干净地应用的文件,并为失败的文件保存拒绝。

如果您愿意,可以将其拆分为多个部分,每个单独的文件都以带有“diff”命令的行开头。

如果您使用的是 GNU 补丁,则有一个“-U”选项可以将拒绝文件保存在统一差异而不是普通差异中。如果您习惯于阅读统一差异,那么在手动应用被拒绝的数据时,这将使您的生活变得更加轻松。

另一种选择是创建不同的 git 分支,一个是补丁完全适用的分支,另一个是您所做的任何更改,使其无法完全适用。然后将分支与应用到您自己的补丁上的补丁合并。这可能会给你内联 diff3 样式合并冲突而不是 .rej 文件。

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多