Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/branchmap.py @ 29755:9f3c49ee4486
branchmap: preparatory indent of indent the branch rev writing code
The rev branch cache is written without a lock, we are going to fix this but we
indent the code beforehand to make the next changeset clearer.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Fri, 05 Aug 2016 14:54:46 +0200 |
parents | a2a380e2750f |
children | 0d588332ad2c |
comparison
equal
deleted
inserted
replaced
29754:b410e26692a4 | 29755:9f3c49ee4486 |
---|---|
468 tr.addfinalize('write-revbranchcache', self.write) | 468 tr.addfinalize('write-revbranchcache', self.write) |
469 | 469 |
470 def write(self, tr=None): | 470 def write(self, tr=None): |
471 """Save branch cache if it is dirty.""" | 471 """Save branch cache if it is dirty.""" |
472 repo = self._repo | 472 repo = self._repo |
473 if self._rbcnamescount < len(self._names): | 473 if True: |
474 try: | 474 if self._rbcnamescount < len(self._names): |
475 if self._rbcnamescount != 0: | 475 try: |
476 f = repo.vfs.open(_rbcnames, 'ab') | 476 if self._rbcnamescount != 0: |
477 if f.tell() == self._rbcsnameslen: | 477 f = repo.vfs.open(_rbcnames, 'ab') |
478 f.write('\0') | 478 if f.tell() == self._rbcsnameslen: |
479 else: | 479 f.write('\0') |
480 f.close() | 480 else: |
481 repo.ui.debug("%s changed - rewriting it\n" % _rbcnames) | 481 f.close() |
482 self._rbcnamescount = 0 | 482 repo.ui.debug("%s changed - rewriting it\n" |
483 self._rbcrevslen = 0 | 483 % _rbcnames) |
484 if self._rbcnamescount == 0: | 484 self._rbcnamescount = 0 |
485 # before rewriting names, make sure references are removed | 485 self._rbcrevslen = 0 |
486 repo.vfs.unlinkpath(_rbcrevs, ignoremissing=True) | 486 if self._rbcnamescount == 0: |
487 f = repo.vfs.open(_rbcnames, 'wb') | 487 # before rewriting names, make sure references are |
488 f.write('\0'.join(encoding.fromlocal(b) | 488 # removed |
489 for b in self._names[self._rbcnamescount:])) | 489 repo.vfs.unlinkpath(_rbcrevs, ignoremissing=True) |
490 self._rbcsnameslen = f.tell() | 490 f = repo.vfs.open(_rbcnames, 'wb') |
491 f.close() | 491 f.write('\0'.join(encoding.fromlocal(b) |
492 except (IOError, OSError, error.Abort) as inst: | 492 for b in self._names[self._rbcnamescount:] |
493 repo.ui.debug("couldn't write revision branch cache names: " | 493 )) |
494 "%s\n" % inst) | 494 self._rbcsnameslen = f.tell() |
495 return | 495 f.close() |
496 self._rbcnamescount = len(self._names) | 496 except (IOError, OSError, error.Abort) as inst: |
497 | 497 repo.ui.debug("couldn't write revision branch cache names: " |
498 start = self._rbcrevslen * _rbcrecsize | 498 "%s\n" % inst) |
499 if start != len(self._rbcrevs): | 499 return |
500 revs = min(len(repo.changelog), len(self._rbcrevs) // _rbcrecsize) | 500 self._rbcnamescount = len(self._names) |
501 try: | 501 |
502 f = repo.vfs.open(_rbcrevs, 'ab') | 502 start = self._rbcrevslen * _rbcrecsize |
503 if f.tell() != start: | 503 if start != len(self._rbcrevs): |
504 repo.ui.debug("truncating %s to %s\n" % (_rbcrevs, start)) | 504 revs = min(len(repo.changelog), |
505 f.seek(start) | 505 len(self._rbcrevs) // _rbcrecsize) |
506 try: | |
507 f = repo.vfs.open(_rbcrevs, 'ab') | |
506 if f.tell() != start: | 508 if f.tell() != start: |
507 start = 0 | 509 repo.ui.debug("truncating %s to %s\n" |
510 % (_rbcrevs, start)) | |
508 f.seek(start) | 511 f.seek(start) |
509 f.truncate() | 512 if f.tell() != start: |
510 end = revs * _rbcrecsize | 513 start = 0 |
511 f.write(self._rbcrevs[start:end]) | 514 f.seek(start) |
512 f.close() | 515 f.truncate() |
513 except (IOError, OSError, error.Abort) as inst: | 516 end = revs * _rbcrecsize |
514 repo.ui.debug("couldn't write revision branch cache: %s\n" % | 517 f.write(self._rbcrevs[start:end]) |
515 inst) | 518 f.close() |
516 return | 519 except (IOError, OSError, error.Abort) as inst: |
517 self._rbcrevslen = revs | 520 repo.ui.debug("couldn't write revision branch cache: %s\n" % |
521 inst) | |
522 return | |
523 self._rbcrevslen = revs |