Commits

Andrew Shu  committed 46c042e

branchtags caching for speedup in repos with many branches

  • Participants
  • Parent commits 20252f3

Comments (0)

Files changed (1)

         self.repo = repo
         self.out_closed = not opts["hide_closed"]
         self.out_inactive = not opts["hide_inactive"]
+        self.branchtags_cached = None
+        self.branchtags_repo = None
         
         # all head revisions
         self.head_revs = _csi2rev(repo, repo.heads())
         
         return tags, bm
 
+    def branchtags(self):
+        """Get branch tags of the repo, using cache if available."""
+        if self.repo != self.branchtags_repo:
+            self.branchtags_cached = self.repo.branchtags()
+            self.branchtags_repo = self.repo
+        return self.branchtags_cached
+
 class BranchInfo(object):
     """Various information about a branch."""
     
         
         self.name = name
         
-        self.tip_rev = _csi2rev(ri.repo, ri.repo.branchtags()[name])
+        self.tip_rev = _csi2rev(ri.repo, ri.branchtags()[name])
         self.head_revs = bh_revs
         self.head_revs_bm = [x for x in self.head_revs if x in ri.bm_revs]
         self.head_revs_active = [x for x in self.head_revs if x in ri.head_revs]