325 f = self.opener("branches.cache") |
325 f = self.opener("branches.cache") |
326 lines = f.read().split('\n') |
326 lines = f.read().split('\n') |
327 f.close() |
327 f.close() |
328 last, lrev = lines.pop(0).rstrip().split(" ", 1) |
328 last, lrev = lines.pop(0).rstrip().split(" ", 1) |
329 last, lrev = bin(last), int(lrev) |
329 last, lrev = bin(last), int(lrev) |
330 if (lrev < self.changelog.count() and |
330 if not (lrev < self.changelog.count() and |
331 self.changelog.node(lrev) == last): # sanity check |
331 self.changelog.node(lrev) == last): # sanity check |
332 for l in lines: |
332 # invalidate the cache |
333 if not l: continue |
333 raise ValueError('Invalid branch cache: unknown tip') |
334 node, label = l.rstrip().split(" ", 1) |
334 for l in lines: |
335 partial[label] = bin(node) |
335 if not l: continue |
336 else: # invalidate the cache |
336 node, label = l.rstrip().split(" ", 1) |
337 last, lrev = nullid, nullrev |
337 partial[label] = bin(node) |
338 except IOError: |
338 except (KeyboardInterrupt, util.SignalInterrupt): |
339 last, lrev = nullid, nullrev |
339 raise |
|
340 except Exception, inst: |
|
341 if self.ui.debugflag: |
|
342 self.ui.warn(str(inst), '\n') |
|
343 partial, last, lrev = {}, nullid, nullrev |
340 return partial, last, lrev |
344 return partial, last, lrev |
341 |
345 |
342 def _writebranchcache(self, branches, tip, tiprev): |
346 def _writebranchcache(self, branches, tip, tiprev): |
343 try: |
347 try: |
344 f = self.opener("branches.cache", "w") |
348 f = self.opener("branches.cache", "w") |