832220ba4b56 — Oben Sonne 9 years ago
Merge with talklittle's fork
1 files changed, 10 insertions(+), 1 deletions(-)

M compass.py
M compass.py +10 -1
@@ 76,6 76,8 @@ class RepoInfo(object):
         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())

          
@@ 120,6 122,13 @@ class RepoInfo(object):
             revs.remove(ctx.rev())
         return revs
     
+    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."""
     

          
@@ 127,7 136,7 @@ class BranchInfo(object):
         
         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]