374 partial = {} |
374 partial = {} |
375 try: |
375 try: |
376 f = self.opener("branches.cache") |
376 f = self.opener("branches.cache") |
377 lines = f.read().split('\n') |
377 lines = f.read().split('\n') |
378 f.close() |
378 f.close() |
379 last, lrev = lines.pop(0).rstrip().split(" ", 1) |
379 last, lrev = lines.pop(0).split(" ", 1) |
380 last, lrev = bin(last), int(lrev) |
380 last, lrev = bin(last), int(lrev) |
381 if not (lrev < self.changelog.count() and |
381 if not (lrev < self.changelog.count() and |
382 self.changelog.node(lrev) == last): # sanity check |
382 self.changelog.node(lrev) == last): # sanity check |
383 # invalidate the cache |
383 # invalidate the cache |
384 raise ValueError('Invalid branch cache: unknown tip') |
384 raise ValueError('Invalid branch cache: unknown tip') |
385 for l in lines: |
385 for l in lines: |
386 if not l: continue |
386 if not l: continue |
387 node, label = l.rstrip().split(" ", 1) |
387 node, label = l.split(" ", 1) |
388 partial[label] = bin(node) |
388 partial[label.strip()] = bin(node) |
389 except (KeyboardInterrupt, util.SignalInterrupt): |
389 except (KeyboardInterrupt, util.SignalInterrupt): |
390 raise |
390 raise |
391 except Exception, inst: |
391 except Exception, inst: |
392 if self.ui.debugflag: |
392 if self.ui.debugflag: |
393 self.ui.warn(str(inst), '\n') |
393 self.ui.warn(str(inst), '\n') |
405 |
405 |
406 def _updatebranchcache(self, partial, start, end): |
406 def _updatebranchcache(self, partial, start, end): |
407 for r in xrange(start, end): |
407 for r in xrange(start, end): |
408 c = self.changectx(r) |
408 c = self.changectx(r) |
409 b = c.branch() |
409 b = c.branch() |
410 if b: |
410 partial[b] = c.node() |
411 partial[b] = c.node() |
|
412 |
411 |
413 def lookup(self, key): |
412 def lookup(self, key): |
414 if key == '.': |
413 if key == '.': |
415 key = self.dirstate.parents()[0] |
414 key = self.dirstate.parents()[0] |
416 if key == nullid: |
415 if key == nullid: |