# HG changeset patch # User Yuya Nishihara # Date 1548076469 -32400 # Node ID c953c2a94d68b18c2f3c79262826fdfed743a839 # Parent 13c23396c7fe1633a2336b29e3a32b9b76274f28 revlog: fix resolution of revlog version 0 This partially backs out cecf3f8bccd3, "revlog: always process opener options." My understanding is that if there's no "revlog1" nor "revlog2" in .hg/requires, the repository should stick to the v0 format. The reasoning is briefly described in 31a5973fcf96, "revlog: get rid of defversion." Maybe we can drop support for missing opener options, but I didn't do that in this patch. diff -r 13c23396c7fe -r c953c2a94d68 mercurial/revlog.py --- a/mercurial/revlog.py Sun Jan 20 11:57:36 2019 +0900 +++ b/mercurial/revlog.py Mon Jan 21 22:14:29 2019 +0900 @@ -396,6 +396,11 @@ 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. + newversionflags = REVLOGV0 else: newversionflags = REVLOG_DEFAULT_VERSION diff -r 13c23396c7fe -r c953c2a94d68 tests/test-clone.t --- a/tests/test-clone.t Sun Jan 20 11:57:36 2019 +0900 +++ b/tests/test-clone.t Mon Jan 21 22:14:29 2019 +0900 @@ -717,6 +717,9 @@ $ hg -R src commit -m '#0' $ hg -R src log -q 0:e1bab28bca43 + $ hg -R src debugrevlog -c | egrep 'format|flags' + format : 0 + flags : (none) $ hg clone -U -q src dst $ hg -R dst log -q 0:e1bab28bca43