2012-12-23 60 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文件。