equal
deleted
inserted
replaced
381 if self._rbcrevslen == 0: |
381 if self._rbcrevslen == 0: |
382 self._names = [] |
382 self._names = [] |
383 self._rbcnamescount = len(self._names) # number of good names on disk |
383 self._rbcnamescount = len(self._names) # number of good names on disk |
384 self._namesreverse = dict((b, r) for r, b in enumerate(self._names)) |
384 self._namesreverse = dict((b, r) for r, b in enumerate(self._names)) |
385 |
385 |
|
386 def _clear(self): |
|
387 self._rbcsnameslen = 0 |
|
388 del self._names[:] |
|
389 self._rbcnamescount = 0 |
|
390 self._namesreverse.clear() |
|
391 self._rbcrevslen = len(self._repo.changelog) |
|
392 self._rbcrevs = array('c') |
|
393 self._rbcrevs.fromstring('\0' * (self._rbcrevslen * _rbcrecsize)) |
|
394 |
386 def branchinfo(self, rev): |
395 def branchinfo(self, rev): |
387 """Return branch name and close flag for rev, using and updating |
396 """Return branch name and close flag for rev, using and updating |
388 persistent cache.""" |
397 persistent cache.""" |
389 changelog = self._repo.changelog |
398 changelog = self._repo.changelog |
390 rbcrevidx = rev * _rbcrecsize |
399 rbcrevidx = rev * _rbcrecsize |
406 if close: |
415 if close: |
407 branchidx &= _rbcbranchidxmask |
416 branchidx &= _rbcbranchidxmask |
408 if cachenode == '\0\0\0\0': |
417 if cachenode == '\0\0\0\0': |
409 pass |
418 pass |
410 elif cachenode == reponode: |
419 elif cachenode == reponode: |
411 return self._names[branchidx], close |
420 if branchidx < self._rbcnamescount: |
|
421 return self._names[branchidx], close |
|
422 # referenced branch doesn't exist - rebuild is expensive but needed |
|
423 self._repo.ui.debug("rebuilding corrupted revision branch cache\n") |
|
424 self._clear() |
412 else: |
425 else: |
413 # rev/node map has changed, invalidate the cache from here up |
426 # rev/node map has changed, invalidate the cache from here up |
414 truncate = rbcrevidx + _rbcrecsize |
427 truncate = rbcrevidx + _rbcrecsize |
415 del self._rbcrevs[truncate:] |
428 del self._rbcrevs[truncate:] |
416 self._rbcrevslen = min(self._rbcrevslen, truncate) |
429 self._rbcrevslen = min(self._rbcrevslen, truncate) |