Mercurialで現在のリビジョンハッシュを抽出するより良い方法はありますか
hg log -l1|grep changeset|cut -d: -f3
?
私のwebappデプロイメントスクリプトの一部は、アップロードされたアプリのtarballに一意のリビジョンハッシュを「タグ付け」します。
試してください:
hg id -i
例:
$ hg id -i
adc56745e928
hg --debug id -i
これにより、ロングハッシュが出力され、コミットされていない変更がある場合はプラスが付きます。
親コマンドで--templateを使用できます。これを使用して長いハッシュを取得します。
hg parent --template '{node}'
回答とその回答をまとめると、これがcurrentバージョンのnique(短縮形ではない)識別子を出力する最良の方法であると思われます:
hg log -l 1 --template '{node}\n' -r .
hg log -l 1 --template '{node|short}\n'
ドキュメント の段落「テンプレートの基本」以降を参照してください。
_--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つの親の 最初の親 のみを表示することに注意してください。
他の人が指摘しているように、log -l
を使用しないでください。
出力が制限され、テンプレートをサポートしていないhg log -r .
を使用するのではなく、hg id
を使用して詳細情報を取得します。 here = log -r .
のような小さなエイリアスを作成し、hg here
を使用することもできます。ハッシュのみが必要な場合は、hg log -r . --template '{node}\n'
を使用します。
TortoiseHgを使用する場合は、ワークベンチでリビジョン行を右クリックし、「ハッシュのコピー」を選択します( documentation に従って)。