D5564: revlog: use separate variables to track version flags

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Fri Jan 11 00:33:59 UTC 2019


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  It wasn't obvious to me that "versionflags" is used both to
  define the default version+features value for new revlogs and
  to track the value read from a revlog.
  
  We rename the former use and add explicit assignment of
  "versionflags" later to differentiate between the two.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D5564

AFFECTED FILES
  mercurial/revlog.py

CHANGE DETAILS

diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -391,13 +391,13 @@
         opts = getattr(self.opener, 'options', {}) or {}
 
         if 'revlogv2' in opts:
-            versionflags = REVLOGV2 | FLAG_INLINE_DATA
+            newversionflags = REVLOGV2 | FLAG_INLINE_DATA
         elif 'revlogv1' in opts:
-            versionflags = REVLOGV1 | FLAG_INLINE_DATA
+            newversionflags = REVLOGV1 | FLAG_INLINE_DATA
             if 'generaldelta' in opts:
-                versionflags |= FLAG_GENERALDELTA
+                newversionflags |= FLAG_GENERALDELTA
         else:
-            versionflags = REVLOG_DEFAULT_VERSION
+            newversionflags = REVLOG_DEFAULT_VERSION
 
         if 'chunkcachesize' in opts:
             self._chunkcachesize = opts['chunkcachesize']
@@ -446,10 +446,14 @@
             if len(indexdata) > 0:
                 versionflags = versionformat_unpack(indexdata[:4])[0]
                 self._initempty = False
+            else:
+                versionflags = newversionflags
         except IOError as inst:
             if inst.errno != errno.ENOENT:
                 raise
 
+            versionflags = newversionflags
+
         self.version = versionflags
 
         flags = versionflags & ~0xFFFF



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list