changeset 43026:188476e48f51

revlog: explicitly set revlogv0 in vfs options Relying on having an attribute or not for something so fundamental seems too fragile to me. (And indeed I had issue with that later in this series). So we explicitly record the fact the repository use revlog-v0. Differential Revision: https://phab.mercurial-scm.org/D6934
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 27 Sep 2019 06:24:42 +0200
parents 8af909893188
children 3518da504303
files mercurial/localrepo.py mercurial/revlog.py
diffstat 2 files changed, 3 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/localrepo.py	Fri Sep 27 00:11:03 2019 +0200
+++ b/mercurial/localrepo.py	Fri Sep 27 06:24:42 2019 +0200
@@ -748,6 +748,8 @@
     # meaningful on such old repos.
     if b'revlogv1' in requirements or REVLOGV2_REQUIREMENT in requirements:
         options.update(resolverevlogstorevfsoptions(ui, requirements, features))
+    else: # explicitly mark repo as using revlogv0
+        options['revlogv0'] = True
 
     return options
 
--- a/mercurial/revlog.py	Fri Sep 27 00:11:03 2019 +0200
+++ b/mercurial/revlog.py	Fri Sep 27 06:24:42 2019 +0200
@@ -363,10 +363,7 @@
             newversionflags = REVLOGV1 | FLAG_INLINE_DATA
             if 'generaldelta' in opts:
                 newversionflags |= FLAG_GENERALDELTA
-        elif getattr(self.opener, 'options', None) is not None:
-            # If options provided but no 'revlog*' found, the repository
-            # would have no 'requires' file in it, which means we have to
-            # stick to the old format.
+        elif 'revlogv0' in getattr(self.opener, 'options', {}):
             newversionflags = REVLOGV0
         else:
             newversionflags = REVLOG_DEFAULT_VERSION