This is an archive of the discontinued Mercurial Phabricator instance.

revlog: always process opener options
ClosedPublic

Authored by indygreg on Jan 10 2019, 7:32 PM.

Details

Summary

I'm not sure when `opener.options` would ever be explicitly
set to None. It is definitely not possible to construct a repo
this way because `localrepo.resolvestorevfsoptions()` always
returns a dict and `localrepo.makelocalrepository()` always
sets `opener.options` to this value.

Because we always execute this code now, if options are empty
we defaulted to creating version 0 revlogs. So we had to change
the code slightly to fall back to the default revlog version
and flags.

As astute reader will note that it is not possible to create
version 0 revlogs now. However, I don't think it was possible
before, as this required `opener.options` being unset, which
I don't think was possible. I suspect this means our test
coverage for version 0 revlog repositories is possibly
non-existent! Since I don't see a config option to disable
revlog v1, I'm not even sure if we had a way to create new
repos with version 0 revlogs! Who knows.

Diff Detail

Repository
rHG Mercurial
Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

indygreg created this revision.Jan 10 2019, 7:32 PM
yuja added a subscriber: yuja.Jan 12 2019, 10:25 PM
I'm not sure when ``opener.options`` would ever be explicitly
set to None. It is definitely not possible to construct a repo
this way because ``localrepo.resolvestorevfsoptions()`` always
returns a dict and ``localrepo.makelocalrepository()`` always
sets ``opener.options`` to this value.
Because we always execute this code now, if options are empty
we defaulted to creating version 0 revlogs. So we had to change
the code slightly to fall back to the default revlog version
and flags.
As astute reader will note that it is not possible to create
version 0 revlogs now. However, I don't think it was possible
before, as this required ``opener.options`` being unset, which
I don't think was possible. I suspect this means our test
coverage for version 0 revlog repositories is possibly
non-existent! Since I don't see a config option to disable
revlog v1, I'm not even sure if we had a way to create new
repos with version 0 revlogs! Who knows.

Well, there was a trick to create a v0 repo, which dda11e799529 uses.

$ mkdir .hg

This patch looks good as itself, but we need to resurrect some trick
to create a v0 revlog.

This revision was automatically updated to reflect the committed changes.