我正在尝试学习 Mercurial 队列,但我对既有一堆“hg q*”命令以及许多带有“--mq”参数的普通 hg 命令感到困惑。我认为 --mq 参数是为了替换一些 q* 命令,但我不确定。似乎没有关于(新的?)首选方法的教程或文档。
问问题
396 次
2 回答
4
该--mq
选项会影响所有将存储库作为参数的命令——它实际上将目标存储库更改为$(hg root)/.hg/patches
,因此它实际上与运行任何像这样的 mercurial 命令相同:
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)
于 2011-02-11T16:12:29.640 回答
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
,那么您将不得不对其进行一些扩展。
于 2011-02-21T13:19:33.603 回答