我读过Steve Losh的article关于使用MQ的qqueues命令创建多个队列的问题。这有可能让我更接近我个人对Nirvana(即Git本地分支机构)的看法,因为我可以保持与彼此隔离的单独功能相关的更改,我可以将本地更改滚动到上游发布的单个补丁中,当我完成它们时,我可以删除队列。真棒。除了我不能让它工作。我使用hg qqueue -c feature1创建第一个队列,使用qrefresh对其应用补丁,然后尝试创建新队列。当我这样做时,我收到一个错误:
~/src/mqtest$ hgl
@ 55ae767d5eae Adding feature1file 2013-04-29 15:32 -0500 Jon Blackburn default addFeature1file qbase qtip tip
|
o 58b232e9b36a Initial commit on default. 2013-04-29 15:27 -0500 Jon Blackburn default qparent
~/src/mqtest$ hg qapplied
addFeature1file
~/src/mqtest$ hg qq
feature1 (active)
patches
~/src/mqtest$ hg qq -c feature2
abort: new queue created, but cannot make active as patches are applied
~/src/mqtest$
我做错了什么?
感谢。
P.S。 @Lazy Badger对是否需要弹出-a以改变队列表示怀疑。我首先会说,这是我发现的唯一有效的方法。另外,来自mq.py:
def _setactive(name):
if q.applied:
raise util.Abort(_('new queue created, but cannot make active '
'as patches are applied'))
_setactivenocheck(name)
如果有一个更合适的方式切换到新队列,而我已经将补丁应用到我正在使用的那个,我很乐意听到它。使用此解决方案,工作流程将是1)pop -a; 2)qqueue feature2; 3)可选地,按-a(如果feature2已经有一些补丁)。我不清楚为什么 mq要求没有补丁应用于你要离开的队列。我无法在脑海里想出一个有用的场景。如果我现有的队列必须为空,让我离开它,那么可能会提供一个标志告诉mq pop -a我当前的队列(并推送-a我的目标队列)?
答案 0 :(得分:0)
您应用了feature1中的一个补丁,因此 - qqueue在创建后无法切换到第二个队列。来自hg help qqueue
要创建新队列,请使用-c / - create。队列自动激活,除了存储库中当前活动队列中存在应用补丁的情况外。
你必须:
或