关于python:当基于补丁的工作流程失败导致回购中的.rej大块时,是否有任何补丁工具可以很好地与mercurial一起使用

Is there any patch tools that work well with mercurial, when patch-based workflows fail causing .rej hunks in your repo

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

Mercurial Wiki的主题为HandlingRejects,该主题显示了Patching失败的简单程度。我希望为基于功能分支的功能分支版本控制实现基于汞的工作流,并依赖于在集成补丁之前导出和查看补丁。在我对该想法进行的初步测试中,"修补程序"和"查看并接受并修改"修补程序中最薄弱的链接是拒绝修补程序的方式。

以下是一些常见的案例,这些问题导致我无法导入汞修补程序:

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

上面的Wiki页面提到了在此处找到的mpatch工具。我正在寻找其他更好的合并工具,这些工具(a)可以处理,并且(b)可以处理上面的"处理拒绝"维基页面中提到的琐碎情况。请注意,mpatch不适用于我的目的,似乎我需要的东西更多的是基础工具,而不是补丁工具,就我而言,我可能必须使补丁工具具有语法意识(因此特定于单一编程语言)。

我正在寻找本机甚至通过cygwin之类的可在Windows上使用的工具。尽管我对Linux / Unix样式的工具很满意,但我没有使用Unix / Linux环境。

我目前未使用mq扩展名,只是使用hg导出导出更改范围,并使用hg import导入,其余工作是我自己的发明,但是我已将此mq标记为mq用户将熟悉此.rej处理问题。

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


Emacs具有处理.rej文件的能力。

但是,如果真的可行,我会尽可能尝试使用hg pull --rebase。我常常发现自己想将一些补丁程序重新部署到我已经提取的另一个变更集上。在这些情况下,我只是剥离变更集,然后将其从.hg/strip-backup中再次拉出,允许我使用--rebase