changeset 46012:7c539f0febbe

upgrade: add an explicite --filelogs arguments This make it possible to select no revlog for upgrade, which is useful for some upgrade target or in some specific cases (eg: persistent-nodemap or share-safe update). Differential Revision: https://phab.mercurial-scm.org/D9468
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 30 Nov 2020 14:06:45 +0100
parents 904647f7d983
children cb623dedb17c
files mercurial/debugcommands.py mercurial/upgrade.py tests/test-completion.t
diffstat 3 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/debugcommands.py	Mon Nov 30 19:26:54 2020 +0100
+++ b/mercurial/debugcommands.py	Mon Nov 30 14:06:45 2020 +0100
@@ -3838,6 +3838,7 @@
         (b'', b'backup', True, _(b'keep the old repository content around')),
         (b'', b'changelog', None, _(b'select the changelog for upgrade')),
         (b'', b'manifest', None, _(b'select the manifest for upgrade')),
+        (b'', b'filelogs', None, _(b'select all filelogs for upgrade')),
     ],
 )
 def debugupgraderepo(ui, repo, run=False, optimize=None, backup=True, **opts):
@@ -3866,6 +3867,8 @@
       * `--no-manifest`: optimize all revlog but the manifest
       * `--changelog`: optimize the changelog only
       * `--no-changelog --no-manifest`: optimize filelogs only
+      * `--filelogs`: optimize the filelogs only
+      * `--no-changelog --no-manifest --no-filelogs`: skip all filelog optimisation
     """
     return upgrade.upgraderepo(
         ui, repo, run=run, optimize=optimize, backup=backup, **opts
--- a/mercurial/upgrade.py	Mon Nov 30 19:26:54 2020 +0100
+++ b/mercurial/upgrade.py	Mon Nov 30 14:06:45 2020 +0100
@@ -1152,6 +1152,7 @@
     backup=True,
     manifest=None,
     changelog=None,
+    filelogs=None,
 ):
     """Upgrade a repository in place."""
     if optimize is None:
@@ -1162,7 +1163,8 @@
     revlogs = set(UPGRADE_ALL_REVLOGS)
     specentries = (
         (UPGRADE_CHANGELOG, changelog),
-        (UPGRADE_MANIFEST, manifest)
+        (UPGRADE_MANIFEST, manifest),
+        (UPGRADE_FILELOGS, filelogs),
     )
     specified = [(y, x) for (y, x) in specentries if x is not None]
     if specified:
--- a/tests/test-completion.t	Mon Nov 30 19:26:54 2020 +0100
+++ b/tests/test-completion.t	Mon Nov 30 14:06:45 2020 +0100
@@ -328,7 +328,7 @@
   debuguigetpass: prompt
   debuguiprompt: prompt
   debugupdatecaches: 
-  debugupgraderepo: optimize, run, backup, changelog, manifest
+  debugupgraderepo: optimize, run, backup, changelog, manifest, filelogs
   debugwalk: include, exclude
   debugwhyunstable: 
   debugwireargs: three, four, five, ssh, remotecmd, insecure