我有一个内核补丁,用于稍微不同的内核版本,然后是我正在尝试修补的版本。不用说,补丁部分失败。我当然可以手动修复它,但我想知道可能有一个图形补丁实用程序可用于解决冲突。
答案 0 :(得分:8)
有许多图形修补实用程序,请尝试meld
,diffuse
,kdiff3
或dirdiff
,它们应打包以供您分发。
另一个有用的工具是wiggle
,它“更加努力”来解决冲突,并且会将一个rej文件从补丁变成与>>>的CVS样式的内联冲突。标记。
我倾向于将它与底层修订系统一起使用,所以我很乐意在它们出错的情况下恢复其更改,因此我使用:
wiggle -v --replace <file> <file.rej>
其中说要进行转换,有时它会做正确的事情,有时你最终会使用&gt;&gt;&gt;标记并且可以手动编辑,但它比手动使用rej文件更容易。如果它确实做得不好我使用我的版本控制系统(git)恢复原来的版本。
答案 1 :(得分:1)
我不知道图形补丁实用程序,但我可能会做的是获取旧内核版本中的文件,应用补丁来获取修补的旧文件(保留旧文件( s)),获取新内核版本中的文件,然后使用3向合并工具,例如GNU Meld。
这个过程有点耗时,但我发现它在解决Subversion冲突方面非常有用(非常类似于你想要完成的事情)。并且,它允许您快速确定两个内核版本中的文件的不同是什么,更改了什么,以及您可能需要对补丁行进行的各种更改以便使它们与新文件兼容。
答案 2 :(得分:0)
是的,我尝试将Firefox Light v27补丁应用到Firefox v28 beta 4时遇到了类似情况.Mozilla团队重命名了一些东西,所以它不是直接下降。我希望这样做,所以我可以编译它适用于Linux。我最终在一个文本编辑器中打开补丁,在另一个文本编辑器中打开代码。
它是Mousepad,但它可能是任何简单的文本编辑器,gEdit,Leafpad,Geany ......然后手动,并排,从一个窗口到下一个窗口做所有的mod,但它是这么慢。 “查找”有助于跳转到正确的编辑位置。
我还应该提一下,如果您将正在使用的补丁片段粘贴到一个空窗口中,您可以查找并替换+符号,然后将其替换为空,然后将其剥离为可用代码。 ..对于大块添加代码更容易,而不是将手指放在向上箭头上并删除键。