2010-06-18 150 views
7

我有一個內核修補程序,用於稍微不同的內核版本,然後是我嘗試修補的內核修補程序。不用說,修補程序部分失敗。我當然可以手動修復它,但我想知道是否有可用於解決衝突的圖形修補程序實用程序。圖形修補程序實用程序

回答

1

我不知道圖形修補程序實用程序,但我可能會做的是獲取舊內核版本中的文件,應用修補程序以獲取修補的舊文件(保留舊文件(s)),獲取新內核版本中的文件,然後使用3-way合併工具,如GNU Meld

這個過程有點費時,但我發現它非常有助於解決Subversion衝突(非常類似於您要完成的)。並且,它允許您快速確定如何在兩個內核版本中改變文件的內容,發生了什麼變化以及您可能需要對修補程序行進行各種更改,以使它們與修補程序兼容新文件。

+0

我知道關於融合。你提出的一個明顯的問題是,除了補丁以外,舊版和新版內核版本之間的差別太大了。 看來,我正在尋找的工具不存在,所以我將不得不手動。不管怎麼說,還是要謝謝你。 – Demiurg 2010-06-18 15:12:23

8

有許多圖形修補公用事業,嘗試melddiffusekdiff3dirdiff,他們應該被包裝爲您的分佈。

另一個有用的工具是wiggle,它「盡力地嘗試」來解決衝突,並將一個rej文件從補丁變成一個與>>>標記的CVS風格內聯衝突。

我傾向於與底層修正系統使用它,所以我很高興,如果他們是錯誤的恢復及其變化,例如我用:

wiggle -v --replace <file> <file.rej>

它說做轉型有時候它會做正確的事情,其他時候你最終會得到>>>標記並且可以手工編輯,但是比手動使用rej文件更容易。如果確實做得不好,我使用我的修訂控制系統(git)恢復原始版本。

0

是的,我在嘗試將Firefox Light v27補丁應用到Firefox v28 beta 4時遇到了類似的情況。Mozilla團隊重命名了一些內容,因此它不是直接插入。我希望這樣做,所以我可以爲Linux編譯它。我結束了在一個文本編輯器中打開補丁,並在另一個文本編碼。

這是鼠標墊,但它可以是任何簡單的文本編輯器,gEdit,Leafpad,Geany ...然後手動並排地從一個窗口到另一個窗口執行所有的mod,但是這樣很慢。 「查找」有助於跳轉到正確的編輯位置。

我還應該提到,如果您將所使用的修補程序粘貼到空白窗口中,您可以查找並替換+符號,然後將其替換爲空白,以便將其刪除爲可用的代碼...對於大塊添加的代碼來說更容易,而不是在向上箭頭和刪除鍵上扭動手指。