当基于补丁的工作流失败导致您的回购中出现.rej hunks时,是否存在适用于mercurial的补丁工具?

时间:2011-10-28 17:59:37

标签: python mercurial mercurial-queue patch

我正在寻找比Mercurial内置的更好的补丁工具,或者是一个可视化工具来帮助我编辑补丁,以便它们被Mercurial或Gnu补丁接受。

mercurial wiki有一个主题HandlingRejects,它显示了修补失败是多么简单。我希望实现基于功能分支版本控制的基于mercurial的工作流,该工作流基于功能分支,并且在集成之前依赖于导出和检查补丁。在我对这个想法的初步测试中,我的“补丁”和“审查并接受并修改”补丁中最薄弱的环节是补丁拒绝让我失望的方式。

以下是mercurial补丁导入失败的一些常见情况:

对两个分支上的上游repoA和功能分支repoB进行微不足道的更改,其中在某处添加了一行。由于两个分支都有历史记录,因此合并工具应该可以看到“有人在repoA中添加了一行,而其他人在repoB中添加了一行”。但是,在修补程序导入的情况下,这会导致修补程序导入拒绝和存储库中的.rej文件turd,您需要手动修复(通过编辑.rej文件直到可以应用它)。

上面的维基页面提到了here找到的mpatch工具。我正在寻找其他更好的合并工具,(a)与mercurial一起工作,(b)可以处理上面的处理拒绝维基页面中提到的琐碎案例。请注意,mpatch不能用于我的目的,似乎我需要的东西更多的是一个rebase工具而不是补丁工具,在我的情况下,我可能必须使补丁工具具有语法感知(因此特定于单一编程语言)。

我正在寻找可用于在Windows上工作的工具,无论是本地工作,还是通过像cygwin这样的工作。我没有使用Unix / Linux环境,虽然我对Linux / Unix风格工具感到满意。

我目前没有使用mq扩展,只是使用hg导出导出更改范围,使用hg import导入,其余工作是我自己的发明,但是我已经标记了这个{{1因为mq用户会熟悉这个mq处理问题。

相关问题here显示了在使用TortoiseHg时解决此类问题的方法。

1 个答案:

答案 0 :(得分:2)

Emacs非常有能力处理.rej个文件。

但是,如果可行的话,我尽量使用hg pull --rebase。我经常发现自己想要将一些补丁系列改成我已经拉过的另一个变更集。在这些情况下,我只需删除变更集并再次从.hg/strip-backup中取出,允许我使用--rebase