annotate: pass around full hex node until formatting plain output
authorYuya Nishihara <yuya@tcha.org>
Sat, 15 Sep 2018 17:26:22 +0900
changeset 39797 a677261e7422
parent 39796 94ca3579e84e
child 39798 ddca38941b2b
annotate: pass around full hex node until formatting plain output In short, this patch moves h[:12] from hexfn() to formathex() so that formathex() can test if h is the wdirhex or not. This helps switching the wdir value to wdirrev/wdirhex. See the next patch.
mercurial/commands.py
--- a/mercurial/commands.py	Sat Sep 15 17:26:21 2018 +0900
+++ b/mercurial/commands.py	Sat Sep 15 17:26:22 2018 +0900
@@ -303,6 +303,11 @@
     ctx = scmutil.revsingle(repo, rev)
 
     rootfm = ui.formatter('annotate', opts)
+    if ui.debugflag:
+        shorthex = pycompat.identity
+    else:
+        def shorthex(h):
+            return h[:12]
     if ui.quiet:
         datefunc = dateutil.shortdate
     else:
@@ -312,7 +317,7 @@
             if node is None:
                 return None
             else:
-                return rootfm.hexfunc(node)
+                return hex(node)
         if opts.get('changeset'):
             # omit "+" suffix which is appended to node hex
             def formatrev(rev):
@@ -326,14 +331,15 @@
                     return '%d+' % ctx.p1().rev()
                 else:
                     return '%d ' % rev
-        def formathex(hex):
-            if hex is None:
-                return '%s+' % rootfm.hexfunc(ctx.p1().node())
+        def formathex(h):
+            if h is None:
+                return '%s+' % shorthex(hex(ctx.p1().node()))
             else:
-                return '%s ' % hex
+                return '%s ' % shorthex(h)
     else:
-        hexfn = rootfm.hexfunc
-        formatrev = formathex = pycompat.bytestr
+        hexfn = hex
+        formatrev = b'%d'.__mod__
+        formathex = shorthex
 
     opmap = [('user', ' ', lambda x: x.fctx.user(), ui.shortuser),
              ('rev', ' ', lambda x: x.fctx.rev(), formatrev),