diff -r aab70f05d6ec -r 705c37f22859 mercurial/upgrade.py --- a/mercurial/upgrade.py Mon Nov 30 14:11:03 2020 +0530 +++ b/mercurial/upgrade.py Thu Jun 25 13:13:21 2020 +0530 @@ -137,6 +137,7 @@ requirements.SIDEDATA_REQUIREMENT, requirements.COPIESSDC_REQUIREMENT, requirements.NODEMAP_REQUIREMENT, + requirements.SHARESAFE_REQUIREMENT, } for name in compression.compengines: engine = compression.compengines[name] @@ -337,6 +338,26 @@ @registerformatvariant +class sharedsafe(requirementformatvariant): + name = b'exp-sharesafe' + _requirement = requirements.SHARESAFE_REQUIREMENT + + default = False + + description = _( + b'old shared repositories do not share source repository ' + b'requirements and config. This leads to various problems ' + b'when the source repository format is upgraded or some new ' + b'extensions are enabled.' + ) + + upgrademessage = _( + b'Upgrades a repository to share-safe format so that future ' + b'shares of this repository share its requirements and configs.' + ) + + +@registerformatvariant class sparserevlog(requirementformatvariant): name = b'sparserevlog' @@ -1439,3 +1460,13 @@ b'repository is verified\n' ) ) + + if sharedsafe.name in addedreqs: + ui.warn( + _( + b'repository upgraded to share safe mode, existing' + b' shares will still work in old non-safe mode. ' + b'Re-share existing shares to use them in safe mode' + b' New shares will be created in safe mode.\n' + ) + )