2013-04-29 28 views
0

我讀過Steve Losh的article關於使用MQ的qqueues命令創建多個隊列。這有可能讓我更接近我個人對Nirvana(即Git本地分支機構)的看法,因爲我可以保持與獨立功能相互隔離的更改,我可以將本地更改捲入上游發佈的單個修補程序,當我完成它們之後,我可以刪除這些隊列。真棒。除了我無法使它工作。我使用hg qqueue -c feature1創建第一個隊列,使用qrefresh將補丁應用於它,然後嘗試創建一個新隊列。當我做我得到一個錯誤:MQ/Mercurial中的多個臨時/本地任務分支?

~/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彈出 - 我的當前隊列(並且推送 - 我的目標隊列)?

回答

0

您從feature1中應用了一個修補程序,因此-qqueue在創建後無法切換到第二個隊列。從hg help qqueue

To create a new queue, use -c/--create. The queue is automatically made active, except in the case where there are applied patches from the currently active queue in the repository.

你必須:

  • 不應用補丁創建新的隊列

  • 開關手工創建隊列之前
+0

謝謝,獾。我不得不說在這裏缺乏文檔。爲什麼我必須在當前隊列上運行hg qpop -a才能移動到另一個?對我來說似乎很奇怪。但我是一個容納者,這就是我。 – 2013-05-01 14:59:47

+0

@JonathanBlackburn - 我不確定**強制** qpop -a用於切換到*現有*隊列與'hg qqueue ' – 2013-05-01 17:40:50

+0

_______________ – 2013-05-03 13:48:33

相關問題