# HG changeset patch # User Boris Feld # Date 1517846636 -3600 # Node ID 61326dd7cb8d5237c7bbc509a81045e97512f2cb # Parent 8140ce44dec4702349121e9011b0c2fa8c885f75 revlog: move datafile opening in a method Having file operation centralized into a single spot help to factor common logic out. It is also the first step to simplify file handling during batch operation (eg: revlog cloning). However, that part does not seems to be a hotspot yet. diff -r 8140ce44dec4 -r 61326dd7cb8d mercurial/revlog.py --- a/mercurial/revlog.py Tue Feb 06 12:25:11 2018 +0100 +++ b/mercurial/revlog.py Mon Feb 05 17:03:56 2018 +0100 @@ -682,6 +682,10 @@ def _compressor(self): return util.compengines[self._compengine].revlogcompressor() + def _datafp(self, mode='r'): + """file object for the revlog's data file""" + return self.opener(self.datafile, mode=mode) + def tip(self): return self.node(len(self.index) - 2) def __contains__(self, rev): @@ -1496,7 +1500,7 @@ if self._inline: df = self.opener(self.indexfile) else: - df = self.opener(self.datafile) + df = self._datafp() closehandle = True # Cache data both forward and backward around the requested @@ -1847,7 +1851,7 @@ fp.flush() fp.close() - df = self.opener(self.datafile, 'w') + df = self._datafp('w') try: for r in self: df.write(self._getsegmentforrevs(r, r)[1]) @@ -1923,7 +1927,7 @@ """ dfh = None if not self._inline: - dfh = self.opener(self.datafile, "a+") + dfh = self._datafp("a+") ifh = self.opener(self.indexfile, "a+", checkambig=self._checkambig) try: return self._addrevision(node, rawtext, transaction, link, p1, p2, @@ -2161,7 +2165,7 @@ else: transaction.add(self.indexfile, isize, r) transaction.add(self.datafile, end) - dfh = self.opener(self.datafile, "a+") + dfh = self._datafp("a+") def flush(): if dfh: dfh.flush() @@ -2224,7 +2228,7 @@ # addrevision switched from inline to conventional # reopen the index ifh.close() - dfh = self.opener(self.datafile, "a+") + dfh = self._datafp("a+") ifh = self.opener(self.indexfile, "a+", checkambig=self._checkambig) finally: @@ -2328,7 +2332,7 @@ expected = max(0, self.end(len(self) - 1)) try: - f = self.opener(self.datafile) + f = self._datafp() f.seek(0, 2) actual = f.tell() f.close()