Mercurial Queues を学習しようとしていますが、多数の "hg q*" コマンドと、"--mq" パラメーターを使用した通常の hg コマンドの両方があることに混乱しています。--mq パラメーターは、一部の q* コマンドを置き換えるためのものだと思いますが、よくわかりません。(新しい?)推奨される方法に関するチュートリアルやドキュメントはないようです。
2 に答える
この--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)
フラグによって不要になったコマンド--mq
は非推奨としてマークされたため、 から削除されましたhg help mq
。これが理由qcommit
でありqinit
、長く表示されません。
hg qcommit
興味がある場合は、コマンドのヘルプを表示することもできます。
--mq
個人的には旗が嫌いです。代わりに、シェル エイリアスを使用します。
mq='hg -R $(hg root)/.hg/patches'
コマンド名とコマンド名の区別はmq status
、操作に対する私の考え方と一致することがわかりましたmq commit
。この単純なエイリアスは複数のキューを考慮していないことに注意してください。したがって、 を使用する場合は、少し拡張する必要があります。mq push
hg
mq
hg qqueue