How can I find my working revision in mercurial

Mercurial

Mercurial Problem Overview


In a mercurial repo I can run hg up {revision} to change the revision of my working directory, but what command can I run to discover what revision I'm looking at?

Mercurial Solutions


Solution 1 - Mercurial

This command:

hg parent

Solution 2 - Mercurial

In addition to hg parents, you can use hg summary to get the most important summary information about your current state. It looks like this:

% hg summary
parent: 13051:120eccaaa522 tip
 encoding: fix typo in variable name
branch: default
commit: 2 unknown (clean)
update: (current)
mq:     20 unapplied

and tells me at a glance that I'm at revision 13051, that I'm on the default branch with a clean working copy (though there are 2 untracked files). This is the tip revision in my repository, so an update wont do anything. Finally, I have 20 unapplied MQ patches.

Solution 3 - Mercurial

hg identify (or hg id for short) will print the (shortened 12-character identifier of) the parent hashes, and a + if there are any uncommitted modifications in your working copy.

To get the full hashes, you can use hg identify --debug instead.

Solution 4 - Mercurial

Another option is to enable the graphlog extension, then run hg glog. You'll see output like this (bear in mind I use a template to change the output):

o    changeset:   200:c8c281cf0a6d
|\   branch:      craig-aspinall
| |  tag:         tip
| |  parent:      199:1a692f3b9134
| |  parent:      187:2d0e0ed9d31c
| |  user:        Craig Aspinall
| |  date:        Tue Nov 23 21:36:30 2010 +1000
| |  summary:     Merged latest changes
| |
| o  changeset:   199:1a692f3b9134
| |  branch:      craig-aspinall
| |  parent:      123:1dc90c9b7ede
| |  user:        Craig Aspinall
| |  date:        Tue Nov 23 21:35:22 2010 +1000
| |  summary:     Final solutions to L04
| |
| | @    changeset:   198:78b488c2607d       <==== This is where I am currently.
| | |\   branch:      OJ
| | | |  parent:      119:70ec3d9e4d3a
| | | |  parent:      197:44bac809d37d
| | | |  user:        OJ Reeves
| | | |  date:        Tue Nov 23 20:19:07 2010 +1000
| | | |  summary:     Merged with the mainline
| | | |
| | | o  changeset:   197:44bac809d37d
| | | |  user:        Tony Morris
| | | |  date:        Tue Nov 23 18:40:03 2010 +1000
| | | |  summary:     Started parallel anagrams
| | | |
| | | o  changeset:   196:92241b51970b
| | | |  user:        Tony Morris
| | | |  date:        Tue Nov 23 17:52:32 2010 +1000
| | | |  summary:     Started parallel anagrams
| | | |

The node/revision with the @ symbol is where you are.

Solution 5 - Mercurial

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:

hg log -l 1 -b . -T '{rev}\n'

Or:

hg log -l 1 -r . -T '{rev}\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.

Solution 6 - Mercurial

This will also helpful,

hg log -v -r `hg id -i`

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAsa AyersView Question on Stackoverflow
Solution 1 - MercurialzerkmsView Answer on Stackoverflow
Solution 2 - MercurialMartin GeislerView Answer on Stackoverflow
Solution 3 - MercurialWim CoenenView Answer on Stackoverflow
Solution 4 - MercurialOJ.View Answer on Stackoverflow
Solution 5 - MercurialShelby Moore IIIView Answer on Stackoverflow
Solution 6 - MercurialIshan LiyanageView Answer on Stackoverflow