Patchwork [4,of,7,V2] repoview: improve performance for computehidden

mail settings
Submitter Sean Farley
Date March 28, 2014, 5:53 p.m.
Message ID <2b99277c3954019bc2af.1396029198@laptop.local>
Download mbox | patch
Permalink /patch/4104/
State Superseded
Headers show


Sean Farley - March 28, 2014, 5:53 p.m.
# HG changeset patch
# User Sean Farley <>
# Date 1395969295 18000
#      Thu Mar 27 20:14:55 2014 -0500
# Node ID 2b99277c3954019bc2afdb2940834b968e8137e5
# Parent  7ec54f5a811e6858baf78025cb654434eedd5347
repoview: improve performance for computehidden

For repos with a large number of heads (including hidden heads), a stale tag
cache would cause computehidden to be drastically slower because of a the call
to repo.tags() (which would build the tag cache).

We actually don't need the tag cache for computehidden because we filter out
global tags. This patch replaces the call to repo.tags with repo.localtags so
as to avoid the tag cache.


diff --git a/mercurial/ b/mercurial/
--- a/mercurial/
+++ b/mercurial/
@@ -33,12 +33,11 @@  def computehidden(repo):
         blockers = [r for r in tofilter if r not in hideable]
         for par in repo[None].parents():
         for bm in repo._bookmarks.values():
-        tags = [n for t, n in repo.tags().iteritems()
-                if (repo.tagtype(t) and repo.tagtype(t) != 'global')]
+        tags = [n for t, n in repo.localtags().iteritems()]
         blockers.extend(repo[t].rev() for t in tags)
         blocked = cl.ancestors(blockers, inclusive=True)
         return frozenset(r for r in hideable if r not in blocked)
     return frozenset()