如何只在Mercurial队列中推送一个特定的补丁?

时间:2013-04-19 18:18:01

标签: mercurial patch mercurial-queue

这就是我所做的:

hg init
hg qnew -m "p1" p1.patch
; some changes
hg qrefresh
hg qpop
hg qnew -m "p2" p2.patch
; some changes
hg qrefresh
hg qpop

现在这2个补丁是独立的功能,彼此无关。他们需要彼此独立。

现在我这样做(因为我只想要第一个功能)

hg qpush p1.patch

它说:

applying p2.patch
applying p1.patch

它给了我两者我所做的更改!

我做错了吗?

当我告诉其推送特定补丁时,它也会推送其他补丁。

1 个答案:

答案 0 :(得分:4)

你忘了一件事:MQ-patches集是队列(FIFO队列)。即如果你可以在hg qseries中看到多个补丁,你必须记住 - qpush | qpop将以随机顺序应用| unapply补丁,但是按顺序排列:从下到上推送,以相反的顺序弹出< / p>

随机访问(以及系列中补丁的顺序更改为副作用)是qpush的--move选项。在您的情况下(一次只使用一个补丁)和补丁名称

  • hg qpop -a
  • hg qpush --move p1.patch
  • hg qpop -a
  • hg qpush --move p2.patch

为了避免错误,您可以在别名部分重新定义qpush(对于此存储库),以便始终使用--move选项