diff -r c390b40fe1d7 -r eaa5607132a2 mercurial/debugcommands.py --- a/mercurial/debugcommands.py Wed Jan 11 21:47:19 2017 -0500 +++ b/mercurial/debugcommands.py Thu Nov 24 16:24:09 2016 -0800 @@ -849,3 +849,28 @@ if pp[1] != nullid: ui.write("\t%d -> %d\n" % (r.rev(pp[1]), i)) ui.write("}\n") + +@command('debugupgraderepo', [ + ('o', 'optimize', [], _('extra optimization to perform'), _('NAME')), + ('', 'run', False, _('performs an upgrade')), +]) +def debugupgraderepo(ui, repo, run=False, optimize=None): + """upgrade a repository to use different features + + If no arguments are specified, the repository is evaluated for upgrade + and a list of problems and potential optimizations is printed. + + With ``--run``, a repository upgrade is performed. Behavior of the upgrade + can be influenced via additional arguments. More details will be provided + by the command output when run without ``--run``. + + During the upgrade, the repository will be locked and no writes will be + allowed. + + At the end of the upgrade, the repository may not be readable while new + repository data is swapped in. This window will be as long as it takes to + rename some directories inside the ``.hg`` directory. On most machines, this + should complete almost instantaneously and the chances of a consumer being + unable to access the repository should be low. + """ + raise error.Abort(_('not yet implemented'))