diff --git a/mercurial/upgrade_utils/actions.py b/mercurial/upgrade_utils/actions.py --- a/mercurial/upgrade_utils/actions.py +++ b/mercurial/upgrade_utils/actions.py @@ -235,6 +235,27 @@ b'faster' ) +@registerformatvariant +class internalphases(requirementformatvariant): + name = b'internalphases' + + _requirement = requirements.INTERNAL_PHASE_REQUIREMENT + + default = False + description = _( + b'older repositories do not support ' + b'internal phases, which makes it impossible to ' + b'use features like "soft strip"' + ) + upgrademessage = _( + b'repository will be able to use internal phases, ' + b'making features like "soft strip" possible' + ) + + touches_filelogs = False + touches_manifests = False + touches_changelog = False + touches_requirements = True @registerformatvariant class sharesafe(requirementformatvariant): @@ -979,6 +1000,7 @@ requirements.REVLOGV2_REQUIREMENT, requirements.CHANGELOGV2_REQUIREMENT, requirements.DIRSTATE_V2_REQUIREMENT, + requirements.INTERNAL_PHASE_REQUIREMENT, } for name in compression.compengines: engine = compression.compengines[name] @@ -1011,6 +1033,7 @@ requirements.REVLOGV2_REQUIREMENT, requirements.CHANGELOGV2_REQUIREMENT, requirements.DIRSTATE_V2_REQUIREMENT, + requirements.INTERNAL_PHASE_REQUIREMENT, } for name in compression.compengines: engine = compression.compengines[name] diff --git a/tests/test-copies-chain-merge.t b/tests/test-copies-chain-merge.t --- a/tests/test-copies-chain-merge.t +++ b/tests/test-copies-chain-merge.t @@ -1655,6 +1655,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -1695,6 +1696,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) diff --git a/tests/test-copies-in-changeset.t b/tests/test-copies-in-changeset.t --- a/tests/test-copies-in-changeset.t +++ b/tests/test-copies-in-changeset.t @@ -38,6 +38,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -56,6 +57,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -431,6 +433,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -462,6 +465,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -490,6 +494,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) diff --git a/tests/test-persistent-nodemap.t b/tests/test-persistent-nodemap.t --- a/tests/test-persistent-nodemap.t +++ b/tests/test-persistent-nodemap.t @@ -60,6 +60,7 @@ dirstate-v2: no dotencode: yes generaldelta: yes + internalphases: no share-safe: no sparserevlog: yes persistent-nodemap: yes @@ -581,6 +582,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: yes no no @@ -631,6 +633,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no yes no diff --git a/tests/test-sidedata.t b/tests/test-sidedata.t --- a/tests/test-sidedata.t +++ b/tests/test-sidedata.t @@ -55,6 +55,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -72,6 +73,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -95,6 +97,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -112,6 +115,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) diff --git a/tests/test-upgrade-repo.t b/tests/test-upgrade-repo.t --- a/tests/test-upgrade-repo.t +++ b/tests/test-upgrade-repo.t @@ -60,6 +60,7 @@ dirstate-v2: no dotencode: yes generaldelta: yes + internalphases: no share-safe: no sparserevlog: yes persistent-nodemap: no (no-rust !) @@ -76,6 +77,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -93,6 +95,7 @@ dirstate-v2: no no no dotencode: yes no yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -110,6 +113,7 @@ [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes] [formatvariant.name.uptodate|generaldelta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] + [formatvariant.name.uptodate|internalphases: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] [formatvariant.name.uptodate|share-safe: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] [formatvariant.name.uptodate|sparserevlog: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !) @@ -150,6 +154,12 @@ { "config": false, "default": false, + "name": "internalphases", + "repo": false + }, + { + "config": false, + "default": false, "name": "share-safe", "repo": false }, @@ -340,6 +350,7 @@ dirstate-v2: no dotencode: no generaldelta: no + internalphases: no share-safe: no sparserevlog: no persistent-nodemap: no @@ -355,6 +366,7 @@ dirstate-v2: no no no dotencode: no yes yes generaldelta: no yes yes + internalphases: no no no share-safe: no no no sparserevlog: no yes yes persistent-nodemap: no no no (no-rust !) @@ -372,6 +384,7 @@ dirstate-v2: no no no dotencode: no yes yes generaldelta: no no yes + internalphases: no no no share-safe: no no no sparserevlog: no no yes persistent-nodemap: no no no (no-rust !) @@ -389,6 +402,7 @@ [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes] [formatvariant.name.mismatchdefault|generaldelta: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes] + [formatvariant.name.uptodate|internalphases: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] [formatvariant.name.uptodate|share-safe: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] [formatvariant.name.mismatchdefault|sparserevlog: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes] [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !) @@ -1372,6 +1386,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -1414,6 +1429,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -1459,6 +1475,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -1510,6 +1527,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -1558,6 +1576,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -1607,6 +1626,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: no no no (no-rust !) @@ -1644,6 +1664,7 @@ dirstate-v2: no yes no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: yes yes no @@ -1683,6 +1704,7 @@ dirstate-v2: yes no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: yes yes no @@ -1723,6 +1745,7 @@ dirstate-v2: no no no dotencode: yes yes yes generaldelta: yes yes yes + internalphases: no no no share-safe: no no no sparserevlog: yes yes yes persistent-nodemap: yes yes no