[Request] [+++ ] D11869: upgrade: explicitly warn when a `--no-xxx` flag is overwritten
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Tue Dec 7 08:53:26 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
Some format upgrade/downgrades -needs- revlog to be recomputed. So we now
detect that individually and warn when it contradict explicitly passed flag.
This is part of a large server to make `debugupgraderepo` smarter about which
revlog it picks by default.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11869
AFFECTED FILES
mercurial/upgrade.py
tests/test-upgrade-repo.t
CHANGE DETAILS
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
@@ -944,6 +944,22 @@
$ echo "[format]" > .hg/hgrc
$ echo "sparse-revlog=no" >> .hg/hgrc
+ $ hg debugupgrade --optimize re-delta-parent --no-manifest --no-backup --quiet
+ warning: ignoring --no-manifest, as upgrade is changing: sparserevlog
+
+ ignoring revlogs selection flags, format requirements change: sparserevlog
+ requirements
+ preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !)
+ preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !)
+ removed: sparserevlog
+
+ optimisations: re-delta-parent
+
+ processed revlogs:
+ - all-filelogs
+ - changelog
+ - manifest
+
$ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback
ignoring revlogs selection flags, format requirements change: sparserevlog
upgrade will perform the following actions:
diff --git a/mercurial/upgrade.py b/mercurial/upgrade.py
--- a/mercurial/upgrade.py
+++ b/mercurial/upgrade.py
@@ -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
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20211207/0a2a36f2/attachment.html>
More information about the Mercurial-patches
mailing list