Mercurial > hg
changeset 48444:6e045497b20b
upgrade: move the revlog selection code lower down the chain
We about about to make revlog section smarter. Moving the code around will make
the next changesets clearer.
Differential Revision: https://phab.mercurial-scm.org/D11867
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 06 Dec 2021 11:59:48 +0100 |
parents | 112184713852 |
children | e7420f75d90d |
files | mercurial/upgrade.py |
diffstat | 1 files changed, 18 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/upgrade.py Thu Dec 09 10:55:17 2021 +0100 +++ b/mercurial/upgrade.py Mon Dec 06 11:59:48 2021 +0100 @@ -45,24 +45,11 @@ optimize = {} repo = repo.unfiltered() - revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) specentries = ( (upgrade_engine.UPGRADE_CHANGELOG, changelog), (upgrade_engine.UPGRADE_MANIFEST, manifest), (upgrade_engine.UPGRADE_FILELOGS, filelogs), ) - specified = [(y, x) for (y, x) in specentries if x is not None] - if specified: - # we have some limitation on revlogs to be recloned - if any(x for y, x in specified): - revlogs = set() - for upgrade, enabled in specified: - if enabled: - revlogs.add(upgrade) - else: - # none are enabled - for upgrade, __ in specified: - revlogs.discard(upgrade) # Ensure the repository can be upgraded. upgrade_actions.check_source_requirements(repo) @@ -99,6 +86,24 @@ removedreqs = repo.requirements - newreqs addedreqs = newreqs - repo.requirements + # check if we need to touch revlog and if so, which ones + + revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) + specified = [(y, x) for (y, x) in specentries if x is not None] + if specified: + # we have some limitation on revlogs to be recloned + if any(x for y, x in specified): + revlogs = set() + for upgrade, enabled in specified: + if enabled: + revlogs.add(upgrade) + else: + # none are enabled + for upgrade, __ in specified: + revlogs.discard(upgrade) + + # check the consistency of the revlog selection with the planned action + if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS: incompatible = upgrade_actions.RECLONES_REQUIREMENTS & ( removedreqs | addedreqs