应用修改多个文件的修补程序

时间:2012-12-23 03:23:19

标签: c++ diff patch git-diff

我试图在这里应用补丁,我将其保存为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

2 个答案:

答案 0 :(得分:3)

如果这就是你所需要的,那么是的,可以将它分成每个补丁文件的一个段。只需将其拆分为--- / +++标题行即可。每个段都可以很好地作为独立的补丁文件。

答案 1 :(得分:1)

如果您正在使用git并应用于git工作目录,则可以使用git-apply而不是patch。

听起来你的补丁不适合干净利落。实际上不需要一次只将它应用于一个文件,它将适用于它干净利用的文件,并为失败的文件保存拒绝。

如果您愿意,可以将其拆分成碎片,每个单独的文件都以带有'diff'命令的行开头。

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

另一种选择是创建不同的git分支,一个是补丁完全适用的分支,另一个是你的更改使得它不能干净地应用。然后将分支与应用到您自己的补丁上的补丁合并。这可能会给你内联diff3风格的合并冲突,而不是.rej文件。

相关问题