【发布时间】:2010-06-18 12:30:55
【问题描述】:
我有一个内核补丁,其内核版本与我尝试打补丁的内核版本略有不同。不用说,补丁部分失败了。我当然可以手动修复它,但我想知道是否有一个图形补丁实用程序可以用来解决冲突。
【问题讨论】:
我有一个内核补丁,其内核版本与我尝试打补丁的内核版本略有不同。不用说,补丁部分失败了。我当然可以手动修复它,但我想知道是否有一个图形补丁实用程序可以用来解决冲突。
【问题讨论】:
有很多图形修补实用程序,尝试meld、diffuse、kdiff3 或dirdiff,它们应该被打包为您的发行版。
另一个有用的工具是wiggle,它“更努力地”解决冲突,并将rej文件从补丁转换为带有>>>标记的CVS风格的内联冲突。
我倾向于将它与底层修订系统一起使用,所以如果它们有误,我很乐意恢复它的更改,因此我使用:
wiggle -v --replace <file> <file.rej>
说要在适当的位置进行转换,有时它会做正确的事情,有时你会得到 >>> 标记并且可以手动编辑,但它比手动使用 rej 文件更容易。如果它确实做得不好,我会使用我的修订控制系统 (git) 恢复到原来的状态。
【讨论】:
我不知道图形补丁实用程序,但我可能会做的是获取旧内核版本中的文件,应用补丁以获得修补的旧文件(保留旧文件( s)),获取新内核版本中的文件,然后使用GNU Meld等3路合并工具。
这个过程有点费时,但我发现它对解决 Subversion 冲突非常有帮助(与您想要完成的非常相似)。而且,它允许您快速确定两个内核版本中的文件有什么不同、发生了什么变化,以及您可能需要对补丁行进行的各种更改,以便使它们与新文件兼容。
【讨论】:
是的,我在尝试将 Firefox Light v27 补丁应用到 Firefox v28 beta 4 时遇到了类似的情况。Mozilla 团队重命名了一些东西,所以它不是直接插入。我希望这样做以便我可以编译它适用于 Linux。我最终在一个文本编辑器中打开补丁,在另一个文本编辑器中打开代码。
它是 Mousepad,但它也可以是任何简单的文本编辑器,gEdit、Leafpad、Geany...那样慢。 “查找”有助于跳转到正确的编辑位置。
我还应该提到,如果您将正在使用的补丁程序粘贴到一个空窗口中,您可以查找并替换 + 符号,然后将其替换为任何内容,从而将其剥离为可用代码。 .. 对于大块添加的代码来说,这更容易,而不是在向上箭头和删除键上摆弄手指。
【讨论】: