0

我已阅读 Steve Losh关于使用 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$ 

我究竟做错了什么?

谢谢。

PS @Lazy Badger 对我是否需要 pop -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)队列特征2;3) 可选地, push -a (如果 feature2 已经有一些补丁)。我不清楚为什么mq 要求不对您要离开的队列应用任何补丁。我想不出一个有用的场景。如果我现有的队列必须为空才能离开它,那么也许提供一个标志来告诉 mq pop -a 我的当前队列(并 push -a 我的目标队列)?

4

1 回答 1

0

您应用了 feature1 的一个补丁,因此 - qqueue 在创建后无法切换到第二个队列。从hg help qqueue

要创建新队列,请使用 -c/--create。队列自动变为活动状态,除非存储库中当前活动队列中应用了补丁。

你必须:

  • 在创建新队列之前取消应用补丁

或者

  • 手动切换到创建的队列
于 2013-04-29T21:40:13.690 回答