D4572: localrepo: document and test bug around opening shared repos
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Tue Sep 18 18:00:56 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG9de1a1c83cd7: localrepo: document and test bug around opening shared repos (authored by indygreg, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4572?vs=11010&id=11170
REVISION DETAIL
https://phab.mercurial-scm.org/D4572
AFFECTED FILES
mercurial/localrepo.py
tests/test-share.t
CHANGE DETAILS
diff --git a/tests/test-share.t b/tests/test-share.t
--- a/tests/test-share.t
+++ b/tests/test-share.t
@@ -439,6 +439,29 @@
$ rm -r thatdir
+Demonstrate buggy behavior around requirements validation
+See comment in localrepo.py:makelocalrepository() for more.
+
+ $ hg init sharenewrequires
+ $ hg share sharenewrequires shareoldrequires
+ updating working directory
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+ $ cat >> sharenewrequires/.hg/requires << EOF
+ > missing-requirement
+ > EOF
+
+We cannot open the repo with the unknown requirement
+
+ $ hg -R sharenewrequires status
+ abort: repository requires features unknown to this Mercurial: missing-requirement!
+ (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
+ [255]
+
+BUG: we don't get the same error when opening the shared repo pointing to it
+
+ $ hg -R shareoldrequires status
+
Explicitly kill daemons to let the test exit on Windows
$ killdaemons.py
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -438,6 +438,19 @@
# Then we validate that the known set is reasonable to use together.
ensurerequirementscompatible(ui, requirements)
+ # TODO there are unhandled edge cases related to opening repositories with
+ # shared storage. If storage is shared, we should also test for requirements
+ # compatibility in the pointed-to repo. This entails loading the .hg/hgrc in
+ # that repo, as that repo may load extensions needed to open it. This is a
+ # bit complicated because we don't want the other hgrc to overwrite settings
+ # in this hgrc.
+ #
+ # This bug is somewhat mitigated by the fact that we copy the .hg/requires
+ # file when sharing repos. But if a requirement is added after the share is
+ # performed, thereby introducing a new requirement for the opener, we may
+ # will not see that and could encounter a run-time error interacting with
+ # that shared store since it has an unknown-to-us requirement.
+
# At this point, we know we should be capable of opening the repository.
# Now get on with doing that.
To: indygreg, #hg-reviewers
Cc: martinvonz, mercurial-devel
More information about the Mercurial-devel
mailing list