435 # We first validate the requirements are known. |
435 # We first validate the requirements are known. |
436 ensurerequirementsrecognized(requirements, supportedrequirements) |
436 ensurerequirementsrecognized(requirements, supportedrequirements) |
437 |
437 |
438 # Then we validate that the known set is reasonable to use together. |
438 # Then we validate that the known set is reasonable to use together. |
439 ensurerequirementscompatible(ui, requirements) |
439 ensurerequirementscompatible(ui, requirements) |
|
440 |
|
441 # TODO there are unhandled edge cases related to opening repositories with |
|
442 # shared storage. If storage is shared, we should also test for requirements |
|
443 # compatibility in the pointed-to repo. This entails loading the .hg/hgrc in |
|
444 # that repo, as that repo may load extensions needed to open it. This is a |
|
445 # bit complicated because we don't want the other hgrc to overwrite settings |
|
446 # in this hgrc. |
|
447 # |
|
448 # This bug is somewhat mitigated by the fact that we copy the .hg/requires |
|
449 # file when sharing repos. But if a requirement is added after the share is |
|
450 # performed, thereby introducing a new requirement for the opener, we may |
|
451 # will not see that and could encounter a run-time error interacting with |
|
452 # that shared store since it has an unknown-to-us requirement. |
440 |
453 |
441 # At this point, we know we should be capable of opening the repository. |
454 # At this point, we know we should be capable of opening the repository. |
442 # Now get on with doing that. |
455 # Now get on with doing that. |
443 |
456 |
444 return localrepository( |
457 return localrepository( |