mercurial/localrepo.py
changeset 3432 028fff46a4ac
parent 3375 9fe62e2db71d
child 3433 5436c8fe0ff5
equal deleted inserted replaced
3431:145a8fde69e6 3432:028fff46a4ac
    77         if v == self.revlogversion:
    77         if v == self.revlogversion:
    78             v |= flags
    78             v |= flags
    79         self.revlogversion = v
    79         self.revlogversion = v
    80 
    80 
    81         self.tagscache = None
    81         self.tagscache = None
       
    82         self.branchcache = None
    82         self.nodetagscache = None
    83         self.nodetagscache = None
    83         self.encodepats = None
    84         self.encodepats = None
    84         self.decodepats = None
    85         self.decodepats = None
    85         self.transhandle = None
    86         self.transhandle = None
    86 
    87 
   285         if not self.nodetagscache:
   286         if not self.nodetagscache:
   286             self.nodetagscache = {}
   287             self.nodetagscache = {}
   287             for t, n in self.tags().items():
   288             for t, n in self.tags().items():
   288                 self.nodetagscache.setdefault(n, []).append(t)
   289                 self.nodetagscache.setdefault(n, []).append(t)
   289         return self.nodetagscache.get(node, [])
   290         return self.nodetagscache.get(node, [])
       
   291 
       
   292     def branchtags(self):
       
   293         if self.branchcache != None:
       
   294             return self.branchcache
       
   295 
       
   296         self.branchcache = {}
       
   297 
       
   298         try:
       
   299             f = self.opener("branches.cache")
       
   300             last, lrev = f.readline().rstrip().split(" ", 1)
       
   301             last, lrev = bin(last), int(lrev)
       
   302             if self.changelog.node(lrev) == last: # sanity check
       
   303                 for l in f:
       
   304                     node, label = l.rstrip().split(" ", 1)
       
   305                     self.branchcache[label] = bin(node)
       
   306             f.close()
       
   307         except IOError:
       
   308             last, lrev = nullid, -1
       
   309             lrev = self.changelog.rev(last)
       
   310 
       
   311         tip = self.changelog.count() - 1
       
   312         if lrev != tip:
       
   313             for r in range(lrev + 1, tip + 1):
       
   314                 n = self.changelog.node(r)
       
   315                 c = self.changelog.read(n)
       
   316                 b = c[5].get("branch")
       
   317                 if b:
       
   318                     self.branchcache[b] = n
       
   319             self._writebranchcache()
       
   320 
       
   321         return self.branchcache
       
   322 
       
   323     def _writebranchcache(self):
       
   324         f = self.opener("branches.cache", "w")
       
   325         t = self.changelog.tip()
       
   326         f.write("%s %s\n" % (hex(t), self.changelog.count() - 1))
       
   327         for label, node in self.branchcache.iteritems():
       
   328             f.write("%s %s\n" % (hex(node), label))
   290 
   329 
   291     def lookup(self, key):
   330     def lookup(self, key):
   292         try:
   331         try:
   293             return self.tags()[key]
   332             return self.tags()[key]
   294         except KeyError:
   333         except KeyError: