--- 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'
+ )
+ )