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


124

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

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

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


2
hg log -l 1最新のチェンジセットを提供することに注意してください。現在更新されているものとは限りません。-fフラグは、hgログの出力を現在の作業ディレクトリの祖先に制限するため、hg log -f -l1希望するものに近くなります。
2015年

回答:


196

試してください:

hg id -i

例:

$ hg id -i
adc56745e928

22
完全なハッシュの使用が必要な場合に人々が以下の解決策を見逃す場合:hg --debug id -iテンプレートサポートの使用が必要な場合使用hg parent --template '{node}' しないはhg log -l 1、最新のリポジトリチェンジセットであり、現在の作業コピーチェンジセットではありません。
Joseph Lisee

7
スクリプトで--debugを使用することはお勧めしません。その出力は、r / tの下位互換性のために慎重に制御されていません。テンプレートを使用します。ログでそれをしたい場合は.、リビジョンとしてドットを使用します。
Ry4an Brase

ありがとう、Ry4an「-r」について私は知りませんでした。現在の作業コピーのリビジョンを参照します。それは「ログ」から「親」に切り替えるより良い動きのようです。
Joseph Lisee

問題ありません。 そのようなクレイジーでパワフルなショートカットがいくつかhg help revisionsありhg help revsetsます。
Ry4an Brase

しかし、それは私の知る限りであるため、質問への最も具体的な答えではありませんhg id -iグローバルハッシュIDのプリントだけ短い(12文字)形式とするのでhg identify欠け--templateafaicsをするのでちょうどリビジョンと他には何を抽出する方法はありませんmanページが言うには、概要を印刷します。
シェルビームーアIII


20

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

hg parent --template '{node}'

hgのmanページにhg parentsは「廃止予定」とありますが、この回答を書いたときにはそうではなかったかもしれません。コミットされていないマージがある場合、2つの親リビジョンがあります。
シェルビームーアIII

2
誰かがhg parentsが非推奨である理由を教えてもらえますか?
Vincent


9
hg log -l 1 --template '{node|short}\n'

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


2
ほぼこれが欲しかったが、ハッシュが長い。これを正確lidlog -l 1 --template '{node}\n'達成するためのエイリアス-完全なリビジョンIDを出力します。
Michael Ekstrand

6
最新のプルされたチェンジセットを出力します。作業ディレクトリを古いチェンジセットに更新できます。更新された変更セットを印刷するには、「hg id」を使用します。唯一の問題は、 "hg id"はテンプレートをサポートしておらず、長いハッシュを出力するオプションがないことです(誰かがその方法を知らない限り)。
2011年

1
Eiverが言ったように、これは作業コピーの実際のリビジョンを印刷するのではなく、リポジトリの最新のものだけを印刷します。このソリューションを使用すると、トラッキングエラーが発生する可能性があるため、このソリューションには反対票を投じました。
Joseph Lisee

1
同上ジョーの反対投票。また、@ Eiver hg --debug id -iは他で述べられているように使用します。
AJP 2014年

3

--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'


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.