あまり知られていない?Mercurialのサブコマンドやオプション #mercurialjp

このエントリは Mercuiral Advent Calendar 2012 の14日目です。

開発中によく質問されることを気ままに紹介しようと思います。

リポジトリのクローン時に専用の鍵を利用する

hg clonehg pullhg push には --ssh オプションが存在します。 このオプションを利用して次の用に鍵を指定出来ます。

hg clone --ssh 'ssh -i /path/to/id_rsa' ssh://hg@bitbucket.org/jython/jython

常に指定するのは。。という方は .hg/hgrc に次の記述をしてください

[ui]
ssh = ssh -i /path/to/id_rsa

現在のリビジョンの過去のみをpushする

mercurialhg push を行うと全ての変更を push してしまいます。「このブランチはまだ公開したくないんだけど。。」ということ、よくあると思います。「今いるリビジョン=現在の作業領域のリビジョンだけpushしたいんだけど、、」という場合は、次のコマンドを使ってください。

hg push --rev .

hgtip.com ではNudge — 穏やかな Push ということで、このコマンドのエイリアス hg nudge を定義しています。

指定したリビジョンの変更内容のサマリーを表示する

どんなファイルをどれだけ変更したんだっけ?という時は、次の --stat オプションを利用します。

hg log -r tip --stat
hg diff -c tip --stat

実行例

% hg log -r 8bc8e6d4928f --stat
チェンジセット:   13231:8bc8e6d4928f
ブランチ:         stable
親:               13230:fdde19e206c6
親:               13229:1f7dfd2a0e6d
ユーザ:           Steve Borho <steve@borho.org>
日付:             Mon Nov 05 16:15:48 2012 -0600
要約:             Merge with default (2.6 Code Freeze)

 tests/nosehgenv.py                |   5 -----
 tortoisehg/hgqt/chunks.py         |  20 ++++++++------------
 tortoisehg/hgqt/commit.py         |  50 +++++++++++++++++++++++++++++++++-----------------
 tortoisehg/hgqt/graft.py          |   6 +-----
 tortoisehg/hgqt/manifestdialog.py |  17 +++++++++++++++--
 tortoisehg/hgqt/matching.py       |   8 +-------
 tortoisehg/hgqt/mq.py             |  68 ++++++++------------------------------------------------------------
 tortoisehg/hgqt/mqutil.py         |  66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 tortoisehg/hgqt/qtlib.py          |  71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 tortoisehg/hgqt/repomodel.py      |  32 +++++++++++++++++++++++++++++++-
 tortoisehg/hgqt/repoview.py       |   6 +++++-
 tortoisehg/hgqt/repowidget.py     |  30 +++++++++---------------------
 tortoisehg/hgqt/resolve.py        |  45 +++++++++++++++++++++++++++++++++++++++++++++
 tortoisehg/hgqt/status.py         |   5 +++++
 tortoisehg/hgqt/sync.py           |   8 ++------
 tortoisehg/hgqt/thgrepo.py        |   8 +-------
 tortoisehg/hgqt/thgstrip.py       |   8 +-------
 tortoisehg/util/hgversion.py      |   2 +-
 tortoisehg/util/menuthg.py        |   3 +++
 更新ファイル数 19、 追加 299 行(+)、 削除 159 行(-)

特定のリビジョンのファイルを取り出したい

特定のリビジョンを取り出したい場合は hg cat を利用します。

hg cat -r 'tag("1.0")' setup.py

hgrcを書かずに一時的に設定を有効にする

「一時的に拡張を有効にしたい」という様な場合は --config オプションを利用します。

hg --config "extensions.patchbomb=" help patchbomb

現在の設定内容を表示する

次のコマンドで設定内容が確認出来ます。

hg showconfig

開発中にメンバーから質問されたことをまとめてみました。このほかにもいろいろオプションがあるので「こんなオプション有るかな?」と思ったら mercurial-users.jp のマニュアルで調べてみてください。