changeset 20939:388af5d4e90c

repoview: improve performance for computehidden (issue4206) 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 readlocaltags so as to avoid the tag cache.
author Sean Farley <sean.michael.farley@gmail.com>
date Thu, 27 Mar 2014 20:14:55 -0500
parents 70f9a5d8c06f
children b0822c23e80a
files mercurial/repoview.py
diffstat 1 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/repoview.py	Sat Mar 15 18:27:51 2014 +0100
+++ b/mercurial/repoview.py	Thu Mar 27 20:14:55 2014 -0500
@@ -10,6 +10,7 @@
 import phases
 import util
 import obsolete
+import tags as tagsmod
 
 
 def hideablerevs(repo):
@@ -35,9 +36,10 @@
             blockers.append(par.rev())
         for bm in repo._bookmarks.values():
             blockers.append(repo[bm].rev())
-        tags = [n for t, n in repo.tags().iteritems()
-                if (repo.tagtype(t) and repo.tagtype(t) != 'global')]
-        blockers.extend(repo[t].rev() for t in tags)
+        tags = {}
+        tagsmod.readlocaltags(repo.ui, repo, tags, {})
+        if tags:
+            blockers.extend(repo[t[0]].rev() for t in tags.values())
         blocked = cl.ancestors(blockers, inclusive=True)
         return frozenset(r for r in hideable if r not in blocked)
     return frozenset()