web-dev-qa-db-ja.com

現在のMercurialリビジョンハッシュを印刷しますか?

Mercurialで現在のリビジョンハッシュを抽出するより良い方法はありますか

hg log -l1|grep changeset|cut -d: -f3

私のwebappデプロイメントスクリプトの一部は、アップロードされたアプリのtarballに一意のリビジョンハッシュを「タグ付け」します。

119
rentzsch

試してください:

hg id -i

例:

$ hg id -i
adc56745e928
191
Ry4an Brase
hg --debug id -i

これにより、ロングハッシュが出力され、コミットされていない変更がある場合はプラスが付きます。

40
Frank

親コマンドで--templateを使用できます。これを使用して長いハッシュを取得します。

hg parent --template '{node}'
20
shadowspawn

回答とその回答をまとめると、これがcurrentバージョンのnique(短縮形ではない)識別子を出力する最良の方法であると思われます:

hg log -l 1 --template '{node}\n' -r .
14
rog
hg log -l 1 --template '{node|short}\n'

ドキュメント の段落「テンプレートの基本」以降を参照してください。

8
Alex Martelli

_--template_が存在するため、その簡潔さが必要な場合に(質問で暗示されているように)リビジョン情報のみを出力できる、最も具体的な非推奨のコマンド:

_hg log -l 1 -b . -T '{rev}:{node|short}\n'_

または、一意の長い形式のハッシュの場合:

_hg log -l 1 -r . -T '{node}\n'_

_-b ._またはbranch(.)(ブランチ名のドット) 現在の作業ディレクトリブランチを意味する および_-r ._は現在の作業ディレクトリリビジョンを意味します- 文書化 _hg help revsets_および _hg help revisions_ で。

コミットされていないマージ がある場合、_._(ドット)は、ワーキンググループの2つの親の 最初の親 のみを表示することに注意してください。

3

他の人が指摘しているように、log -lを使用しないでください。

出力が制限され、テンプレートをサポートしていないhg log -r .を使用するのではなく、hg idを使用して詳細情報を取得します。 here = log -r .のような小さなエイリアスを作成し、hg hereを使用することもできます。ハッシュのみが必要な場合は、hg log -r . --template '{node}\n'を使用します。

1
Gru

TortoiseHgを使用する場合は、ワークベンチでリビジョン行を右クリックし、「ハッシュのコピー」を選択します( documentation に従って)。

enter image description here

0
texnic