identify: avoid a crash when given '-r wdir()'
authorMatt Harbison <matt_harbison@yahoo.com>
Sun, 28 Jun 2015 18:39:58 -0400
changeset 25683 3b1fc40626d8
parent 25682 125cedeebae8
child 25684 0f894d2203c8
identify: avoid a crash when given '-r wdir()' The crash was 'NoneType is not subscriptable' in hexfunc(ctx.node()), because the node for wdir() is None. This can be avoided simply by detecting 'wdir()' and taking the existing path for no given revision.
mercurial/commands.py
tests/test-tags.t
--- a/mercurial/commands.py	Fri Jun 26 14:33:34 2015 -0700
+++ b/mercurial/commands.py	Sun Jun 28 18:39:58 2015 -0400
@@ -4064,7 +4064,9 @@
             if bm:
                 output.append(bm)
     else:
-        if not rev:
+        ctx = scmutil.revsingle(repo, rev, None)
+
+        if ctx.rev() is None:
             ctx = repo[None]
             parents = ctx.parents()
             changed = ""
@@ -4079,7 +4081,6 @@
                 output.append("%s%s" %
                   ('+'.join([str(p.rev()) for p in parents]), changed))
         else:
-            ctx = scmutil.revsingle(repo, rev)
             if default or id:
                 output = [hexfunc(ctx.node())]
             if num:
--- a/tests/test-tags.t	Fri Jun 26 14:33:34 2015 -0700
+++ b/tests/test-tags.t	Sun Jun 28 18:39:58 2015 -0400
@@ -47,6 +47,8 @@
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg identify
   acb14030fe0a tip
+  $ hg identify -r 'wdir()'
+  acb14030fe0a tip
   $ cacheexists
   tag cache exists
 No fnodes cache because .hgtags file doesn't exist
@@ -174,6 +176,8 @@
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg id
   acb14030fe0a+ first
+  $ hg id -r 'wdir()'
+  acb14030fe0a+ first
   $ hg -v id
   acb14030fe0a+ first
   $ hg status