mercurial/graphmod.py
changeset 16132 41fc1e078d68
parent 16131 6f236c8bdc01
child 16138 6e4de55a41a4
--- a/mercurial/graphmod.py	Fri Feb 17 13:53:19 2012 -0600
+++ b/mercurial/graphmod.py	Fri Feb 17 13:53:41 2012 -0600
@@ -18,6 +18,7 @@
 """
 
 from mercurial.node import nullrev
+import util
 
 CHANGESET = 'C'
 
@@ -94,6 +95,10 @@
             elif setting == "color" and val.isalnum():
                 config.setdefault(branch, {})[setting] = val
 
+    if config:
+        getconf = util.lrucachefunc(lambda rev: config.get(repo[rev].branch()))
+    else:
+        getconf = lambda rev: None
 
     for (cur, type, data, parents) in dag:
 
@@ -125,12 +130,12 @@
             if eid in next:
                 edges.append((
                     ecol, next.index(eid), colors[eid],
-                    config.get(repo[eid].branch(), None)))
+                    getconf(eid)))
             elif eid == cur:
                 for p in parents:
                     edges.append((
                         ecol, next.index(p), color,
-                        config.get(repo[p].branch(), None)))
+                        getconf(p)))
 
         # Yield and move on
         yield (cur, type, data, (col, color), edges)