2012-12-23 27 views
0

我试着在这里应用补丁,我社将其保存为xLoader.patch补丁应用该修改多个文件

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

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

补丁-p1 --dry运行-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 
+0

你实际得到的一些错误是什么?你确定你将它应用到它生成的相同基本代码吗? – Dolda2000

+0

由此看来,你确实试图将它应用于与生成补丁的代码不同的状态。我不知道你的情况,但是如果你可以用你想要应用它的相同代码生成补丁,那肯定会解决你的问题。 – Dolda2000

+0

这是正在发生的功能和拒绝之一。 http://pastebin.com/s0y8HAyj –

回答

3

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

+0

我相信每个文件的差异实际上是在“---”行之前的“diff”行开始的。 – Tim

+2

那么,'diff'行和它后面的行会被忽略。 – Dolda2000

1

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

这听起来像你的补丁不适用于干净。没有必要一次只将其应用于一个文件,它将适用于它所适用的文件,并为失败的文件保存拒绝。

如果你愿意的话,你可以将它分成几部分,每个单独的文件以'diff'命令开始。

如果您使用的是GNU补丁程序,那么会有一个“-U”选项,使它可以将统一比较而不是正常差异保存在拒绝文件中。如果您习惯于阅读统一差异,那么当您手动应用被拒绝的人群时,这会让您的生活更轻松。

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