diff -r 8405c1bffacf -r 62e6222cc5b6 mercurial/upgrade.py --- a/mercurial/upgrade.py Mon Dec 06 17:13:26 2021 +0100 +++ b/mercurial/upgrade.py Mon Dec 06 17:54:39 2021 +0100 @@ -99,6 +99,18 @@ MN = upgrade_engine.UPGRADE_MANIFEST CL = upgrade_engine.UPGRADE_CHANGELOG + if optimizations: + if any(specified_revlogs.values()): + # we have some limitation on revlogs to be recloned + for rl, enabled in specified_revlogs.items(): + if enabled: + touched_revlogs.add(rl) + else: + touched_revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) + for rl, enabled in specified_revlogs.items(): + if not enabled: + touched_revlogs.discard(rl) + for action in sorted(up_actions + removed_actions, key=lambda a: a.name): # optimisation does not "requires anything, they just needs it. if action.type != upgrade_actions.FORMAT_VARIANT: @@ -147,22 +159,9 @@ elif msg_issued >= 1: ui.status((b"\n")) - revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) - if specified_revlogs: - # we have some limitation on revlogs to be recloned - if any(specified_revlogs.values()): - revlogs = set() - for upgrade, enabled in specified_revlogs.items(): - if enabled: - revlogs.add(upgrade) - else: - # none are enabled - for upgrade in specified_revlogs.keys(): - revlogs.discard(upgrade) - # check the consistency of the revlog selection with the planned action - if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS: + if touched_revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS: incompatible = upgrade_actions.RECLONES_REQUIREMENTS & ( removedreqs | addedreqs ) @@ -172,7 +171,7 @@ b'change: %s\n' ) ui.warn(msg % b', '.join(sorted(incompatible))) - revlogs = upgrade_engine.UPGRADE_ALL_REVLOGS + touched_revlogs = upgrade_engine.UPGRADE_ALL_REVLOGS upgrade_op = upgrade_actions.UpgradeOperation( ui, @@ -180,7 +179,7 @@ repo.requirements, up_actions, removed_actions, - revlogs, + touched_revlogs, backup, )