1

When I do hg qnew name.patch > hg qrefresh > hg qfinish name.patch I get 'cannot delete revision 143047 above applied patches'. I can see the error message replicated here:

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

However I'm struggling to work out how to rectify this so I can submit a patch to be reviewed. Can anyone help me with this?

4

1 回答 1

2

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

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

其中[ ]是一个普通的变更集,< >是一个应用的 MQ 补丁。然后,您对放入新补丁的工作副本进行一些修改hg qnew并获得:

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

当您运行时,hg qfinish您要求 Mercurial 进行<o>定期提交,如下所示:

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

但是,这是不可能的情况,因为那时您不能打hg qpop补丁<p>- 这样做还必须删除 changeset [o]

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

最后:您通常不必将 MQ 补丁转换为常规提交即可提交以供审核。也就是说,您可以hg export很好地在应用的 MQ 补丁上运行,就像您可以hg email在应用的补丁上运行所有其他命令一样。事实上,应用的补丁已经是常规的提交,所有正常的命令都可以在它们上面运行。只是hg push它的行为不同,因为它不允许您推送代表已应用 MQ 补丁的变更集。

于 2013-09-20T22:52:00.133 回答