templatekw: avoid slow creation of changectx objects in showgraphnode()
authorYuya Nishihara <yuya@tcha.org>
Sat, 14 Nov 2015 17:02:57 +0900
changeset 27215 5b8da5643a8a
parent 27214 60af96494a76
child 27216 8117e2cd959e
templatekw: avoid slow creation of changectx objects in showgraphnode() This mitigates the minor perf regression introduced by the previous patch. % hg log -G -R mozilla-central -l10000 --time > /dev/null (original) real 2.200 secs (previous) real 2.590 secs (this) real 2.280 secs
mercurial/templatekw.py
--- a/mercurial/templatekw.py	Sat Nov 14 16:58:18 2015 +0900
+++ b/mercurial/templatekw.py	Sat Nov 14 17:02:57 2015 +0900
@@ -7,7 +7,7 @@
 
 from __future__ import absolute_import
 
-from .node import hex
+from .node import hex, nullid
 from . import (
     error,
     hbisect,
@@ -343,7 +343,9 @@
 def showgraphnode(repo, ctx, **args):
     """:graphnode: String. The character representing the changeset node in
     an ASCII revision graph"""
-    wpnodes = [pctx.node() for pctx in repo[None].parents()]
+    wpnodes = repo.dirstate.parents()
+    if wpnodes[1] == nullid:
+        wpnodes = wpnodes[:1]
     if ctx.node() in wpnodes:
         return '@'
     elif ctx.obsolete():