comparison mercurial/localrepo.py @ 3439:a7ef6b6cc311

branchtags: use changectx setting self.branchcache on entry avoids recursions in lookup
author Matt Mackall <mpm@selenic.com>
date Tue, 17 Oct 2006 22:09:56 -0500
parents d0459ec1455d
children 0f1fd9854cdc
comparison
equal deleted inserted replaced
3438:b17f9d3eda74 3439:a7ef6b6cc311
291 291
292 def branchtags(self): 292 def branchtags(self):
293 if self.branchcache != None: 293 if self.branchcache != None:
294 return self.branchcache 294 return self.branchcache
295 295
296 self.branchcache = {} 296 self.branchcache = {} # avoid recursion in changectx
297 297
298 try: 298 try:
299 f = self.opener("branches.cache") 299 f = self.opener("branches.cache")
300 last, lrev = f.readline().rstrip().split(" ", 1) 300 last, lrev = f.readline().rstrip().split(" ", 1)
301 last, lrev = bin(last), int(lrev) 301 last, lrev = bin(last), int(lrev)
308 last, lrev = nullid, -1 308 last, lrev = nullid, -1
309 lrev = self.changelog.rev(last) 309 lrev = self.changelog.rev(last)
310 310
311 tip = self.changelog.count() - 1 311 tip = self.changelog.count() - 1
312 if lrev != tip: 312 if lrev != tip:
313 for r in range(lrev + 1, tip + 1): 313 for r in xrange(lrev + 1, tip + 1):
314 n = self.changelog.node(r) 314 c = self.changectx(r)
315 c = self.changelog.read(n) 315 b = c.branch()
316 b = c[5].get("branch")
317 if b: 316 if b:
318 self.branchcache[b] = n 317 self.branchcache[b] = c.node()
319 self._writebranchcache() 318 self._writebranchcache()
320 319
321 return self.branchcache 320 return self.branchcache
322 321
323 def _writebranchcache(self): 322 def _writebranchcache(self):