2010-06-18 106 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,但是这样很慢。 “查找”有助于跳转到正确的编辑位置。

我还应该提到,如果您将所使用的修补程序粘贴到空白窗口中,您可以查找并替换+符号,然后将其替换为空白,以便将其删除为可用的代码...对于大块添加的代码来说更容易,而不是在向上箭头和删除键上扭动手指。