diff -r e7420f75d90d -r 1d0978cfe968 mercurial/upgrade.py --- a/mercurial/upgrade.py Mon Dec 06 14:40:13 2021 +0100 +++ b/mercurial/upgrade.py Mon Dec 06 17:12:21 2021 +0100 @@ -90,6 +90,43 @@ # check if we need to touch revlog and if so, which ones + touched_revlogs = set() + overwrite_msg = _(b'warning: ignoring %14s, as upgrade is changing: %s\n') + msg_issued = False + + FL = upgrade_engine.UPGRADE_FILELOGS + MN = upgrade_engine.UPGRADE_MANIFEST + CL = upgrade_engine.UPGRADE_CHANGELOG + + 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: + continue + + if action.touches_filelogs and FL not in touched_revlogs: + if FL in specified_revlogs: + if not specified_revlogs[FL]: + msg = overwrite_msg % (b'--no-filelogs', action.name) + ui.warn(msg) + msg_issued = True + touched_revlogs.add(FL) + if action.touches_manifests and MN not in touched_revlogs: + if MN in specified_revlogs: + if not specified_revlogs[MN]: + msg = overwrite_msg % (b'--no-manifest', action.name) + ui.warn(msg) + msg_issued = True + touched_revlogs.add(MN) + if action.touches_changelog and CL not in touched_revlogs: + if CL in specified_revlogs: + if not specified_revlogs[CL]: + msg = overwrite_msg % (b'--no-changelog', action.name) + ui.warn(msg) + msg_issued = True + touched_revlogs.add(CL) + if msg_issued: + ui.warn((b"\n")) + revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) if specified_revlogs: # we have some limitation on revlogs to be recloned