'无法删除上面应用的修补程序的修订版143047'(Mercurial)

时间:2013-09-20 20:41:34

标签: mercurial

当我做hg qnew name.patch> hg qrefresh> hg qfinish name.patch我得到'无法删除修订版143047以上应用的补丁'。我可以看到这里复制的错误消息:

https://www.mercurial-scm.org/pipermail/mercurial-devel/2010-September/024525.html

然而,我正在努力解决如何纠正这个问题,以便我可以提交一份补丁进行审核。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

问题很可能是您的修补程序队列中有多个修补程序。我的猜测是,在你开始之前,存储库看起来像这样:

... [x] --- [y] --- <p>

其中[ ]是正常变更集,< >是应用的MQ补丁。然后,您在使用hg qnew添加到新补丁中的工作副本中进行了一些修改并获得:

... [x] --- [y] --- <p> --- <o>

当你运行hg qfinish时,你要求Mercurial让<o>像这样定期提交:

... [x] --- [y] --- <p> --- [o]

但是,这是一种不可能的情况,因为你不能hg qpop补丁<p> - 这样做也必须删除变更集[o]

基本上:您必须从补丁队列的开头补丁hg qfinish补丁,而不是从顶部补丁。

最后:您通常必须将您的MQ补丁变为常规提交才能提交以供审核。也就是说,您可以在应用的MQ补丁上运行hg export,就像您可以在应用的补丁上运行hg email和所有其他命令一样。事实上,应用的补丁 已经是常规提交,所有正常命令都在它们上面工作。只有hg push行为不同,因为它不会让您推送表示已应用MQ补丁的变更集。