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}'
回答とその回答を要約すると、これが現在のバージョンの一意の(短い形式ではない)識別子を印刷するための最良の方法のようです。
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 .
or (ブランチ名の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を使用している場合は、Workbenchでリビジョン行を右クリックし、[ハッシュのコピー]を選択します(ドキュメントに従って)。