[PATCH 4 of 5] revlog: always open revlogs for reading and appending

Gregory Szorc gregory.szorc at gmail.com
Sun Sep 27 22:32:13 CDT 2015


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1443394759 25200
#      Sun Sep 27 15:59:19 2015 -0700
# Node ID d96325c529d1b114ded988b22114d28f219d6fdd
# Parent  bfcc837cb4817e3e94d95f936e3631acded55c6c
revlog: always open revlogs for reading and appending

An upcoming patch will teach revlogs to use the existing file
handle to read revision data instead of opening a new file handle
just for quick reads. For this to work, files must be opened for
reading as well.

This patch is merely cosmetic: there are no behavior changes.

diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -1217,9 +1217,9 @@ class revlog(object):
             return node
 
         dfh = None
         if not self._inline:
-            dfh = self.opener(self.datafile, "a")
+            dfh = self.opener(self.datafile, "a+")
         ifh = self.opener(self.indexfile, "a+")
         try:
             return self._addrevision(node, text, transaction, link, p1, p2,
                                      REVIDX_DEFAULT_FLAGS, cachedelta, ifh, dfh)
@@ -1465,9 +1465,9 @@ class revlog(object):
             dfh = None
         else:
             transaction.add(self.indexfile, isize, r)
             transaction.add(self.datafile, end)
-            dfh = self.opener(self.datafile, "a")
+            dfh = self.opener(self.datafile, "a+")
         def flush():
             if dfh:
                 dfh.flush()
             ifh.flush()
@@ -1533,10 +1533,10 @@ class revlog(object):
                 if not dfh and not self._inline:
                     # addrevision switched from inline to conventional
                     # reopen the index
                     ifh.close()
-                    dfh = self.opener(self.datafile, "a")
-                    ifh = self.opener(self.indexfile, "a")
+                    dfh = self.opener(self.datafile, "a+")
+                    ifh = self.opener(self.indexfile, "a+")
         finally:
             if dfh:
                 dfh.close()
             ifh.close()


More information about the Mercurial-devel mailing list