我正在尝试学习Mercurial Queues,我很困惑,因为有一堆“hg q *”命令以及许多带有“--mq”参数的普通hg命令。我认为--mq参数是为了替换一些q *命令,但我不确定。似乎没有关于(新的?)首选方法的教程或文档。
答案 0 :(得分:4)
--mq
选项会影响将存储库作为参数的所有命令 - 它实际上将目标repo更改为$(hg root)/.hg/patches
,因此它实际上与运行任何mercurial命令相同:< / p>
hg --repository $(hg root)/.hg/patches ....
结果,每个具有-R/--repository
选项的命令都有一个--mq选项,并且不需要修改它以获得一个。您之前在mercurial中使用的任何命令:commit,push,pull,summary,id等都可以--mq
。这是相关的python代码:
def mqcommand(orig, ui, repo, *args, **kwargs):
"""Add --mq option to operate on patch repository instead of main"""
# some commands do not like getting unknown options
mq = kwargs.pop('mq', None)
if not mq:
return orig(ui, repo, *args, **kwargs)
q = repo.mq
r = q.qrepo()
if not r:
raise util.Abort(_('no queue repository'))
return orig(r.ui, r, *args, **kwargs)
答案 1 :(得分:1)
--mq
标记不必要的命令已被标记为已弃用,以便它们从hg help mq
中消失。这就是qcommit
和qinit
不再出现的原因。
如果您感到好奇,仍然可以hg qcommit
查看该命令的帮助。
就个人而言,我不喜欢--mq
标志。相反,我使用shell别名:
mq='hg -R $(hg root)/.hg/patches'
然后我可以执行mq status
,mq commit
,mq push
等。我发现hg
和mq
命令名称之间的区别与我想到了这些行动。请注意,这个简单的别名不会考虑多个队列,所以如果你使用hg qqueue
,那么你将不得不延长它。