当我做hg qnew name.patch> hg qrefresh> hg qfinish name.patch我得到'无法删除修订版143047以上应用的补丁'。我可以看到这里复制的错误消息:
https://www.mercurial-scm.org/pipermail/mercurial-devel/2010-September/024525.html
然而,我正在努力解决如何纠正这个问题,以便我可以提交一份补丁进行审核。任何人都可以帮我这个吗?
答案 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补丁的变更集。