【问题标题】:How to push just one specific patch in Mercurial Queues?如何在 Mercurial Queues 中只推送一个特定补丁?
【发布时间】:2013-04-13 05:29:27
【问题描述】:

这就是我所做的:

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

现在这两个补丁是独立的功能,彼此无关。它们需要相互独立。

现在我愿意(因为我只想要第一个功能)

hg qpush p1.patch

上面写着:

applying p2.patch
applying p1.patch

它给了我两个我所做的改变!

我做错了吗?

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

【问题讨论】:

标签: mercurial patch mercurial-queue


【解决方案1】:

你忘了一件事:一组 MQ 补丁是 queue(FIFO 队列)。即,如果您在hg qseries 中看到多个补丁,您必须记住 - qpush|qpop 将应用|取消应用补丁,而不是随机顺序,而是按顺序:从下到上推送,以相反的顺序弹出

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

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

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

【讨论】:

  • 虽然,我不明白为什么 HG 会这样做。如果按顺序应用所有补丁,弹出有什么区别?
  • @learner - 不是全部 在我的命令集中。仅应用单推(在玩具仓库上测试)。我qpop都是因为自己的习惯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多