revbranchcache: use context manager in _writerevs() to write to file
The other _writenames() is a bit complicated to use context manager.
Differential Revision: https://phab.mercurial-scm.org/D6292
--- a/mercurial/branchmap.py Sat Apr 20 00:44:18 2019 +0300
+++ b/mercurial/branchmap.py Sat Apr 20 00:48:16 2019 +0300
@@ -652,18 +652,15 @@
def _writerevs(self, repo, start):
""" write the new revs to revbranchcache """
- revs = min(len(repo.changelog),
- len(self._rbcrevs) // _rbcrecsize)
- f = repo.cachevfs.open(_rbcrevs, 'ab')
- if f.tell() != start:
- repo.ui.debug("truncating cache/%s to %d\n"
- % (_rbcrevs, start))
- f.seek(start)
+ revs = min(len(repo.changelog), len(self._rbcrevs) // _rbcrecsize)
+ with repo.cachevfs.open(_rbcrevs, 'ab') as f:
if f.tell() != start:
- start = 0
+ repo.ui.debug("truncating cache/%s to %d\n" % (_rbcrevs, start))
f.seek(start)
- f.truncate()
- end = revs * _rbcrecsize
- f.write(self._rbcrevs[start:end])
- f.close()
+ if f.tell() != start:
+ start = 0
+ f.seek(start)
+ f.truncate()
+ end = revs * _rbcrecsize
+ f.write(self._rbcrevs[start:end])
self._rbcrevslen = revs