Print Current Mercurial Revision Hash?
Is there a better way extract the current revision hash in Mercurial than
hg log -l1|grep changeset|cut -d: -f3
?
Part of my webapp deployment script "tags" the uploaded a开发者_开发知识库pp tarball with its unique revision hash.
Try:
hg id -i
Example:
$ hg id -i
adc56745e928
hg --debug id -i
This will output the long hash, with a plus if there are uncommitted changes.
You can use --template with the parent command, I use this to get the long hash:
hg parent --template '{node}'
Summarising the answers and their responses, it seems that this is the best way to print the unique (not short form) identifier of the current version:
hg log -l 1 --template '{node}\n' -r .
hg log -l 1 --template '{node|short}\n'
See the docs, paragraphs "The basics of templating" and following.
The most specific non-DEPRECATED command which due to the presence of --template
can print only revision information if that conciseness is required (as implied by the question):
hg log -l 1 -b . -T '{rev}:{node|short}\n'
Or for unique long form of hash:
hg log -l 1 -r . -T '{node}\n'
The -b .
or branch(.)
(dot for branch name) means the current working directory branch and -r .
means the current working directory revision, which is documented in hg help revsets
and hg help revisions
.
Note if there is an uncommitted merge, the .
(dot) only displays the first parent of two parents of the working group.
In case TortoiseHg is used, right-click the revision row in the Workbench and select "Copy hash" (as per documentation).
As others have pointed out, don't use log -l
.
Use hg log -r .
to get detailed information, as opposed to using hg id
whose output is limited and it does not support templates. You could also create a little alias like here = log -r .
and use hg here
. If you only want the hash use hg log -r . --template '{node}\n'
.
精彩评论