diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -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 diff --git a/mercurial/upgrade.py b/mercurial/upgrade.py --- a/mercurial/upgrade.py +++ b/mercurial/upgrade.py @@ -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: diff --git a/tests/test-completion.t b/tests/test-completion.t --- a/tests/test-completion.t +++ b/tests/test-completion.t @@ -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