--- a/mercurial/upgrade.py Tue Jul 30 17:25:16 2019 +0200
+++ b/mercurial/upgrade.py Mon Aug 05 17:25:24 2019 +0200
@@ -28,6 +28,12 @@
compression,
)
+# list of requirements that request a clone of all revlog if added/removed
+RECLONES_REQUIREMENTS = {
+ 'generaldelta',
+ localrepo.SPARSEREVLOG_REQUIREMENT,
+}
+
def requiredsourcerequirements(repo):
"""Obtain requirements required to be present to upgrade a repo.
@@ -952,6 +958,17 @@
# determineactions could have added optimisation
if o not in actions)
+ removedreqs = repo.requirements - newreqs
+ addedreqs = newreqs - repo.requirements
+
+ if revlogs != UPGRADE_ALL_REVLOGS:
+ incompatible = RECLONES_REQUIREMENTS & (removedreqs | addedreqs)
+ if incompatible:
+ msg = _('ignoring revlogs selection flags, format requirements '
+ 'change: %s\n')
+ ui.warn(msg % ', '.join(sorted(incompatible)))
+ revlogs = UPGRADE_ALL_REVLOGS
+
def printrequirements():
ui.write(_('requirements\n'))
ui.write(_(' preserved: %s\n') %