admin_commands.py
52 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
/ mercurial / admin_commands.py
Franck Bret
|
r51880 | # admin_commands.py - command processing for admin* commands | ||
# | ||||
# Copyright 2022 Mercurial Developers | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
Matt Harbison
|
r52757 | from __future__ import annotations | ||
Raphaël Gomès
|
r51882 | from .i18n import _ | ||
Raphaël Gomès
|
r52396 | from .admin import chainsaw, verify | ||
Raphaël Gomès
|
r51882 | from . import error, registrar, transaction | ||
Franck Bret
|
r51880 | |||
table = {} | ||||
Raphaël Gomès
|
r52396 | table.update(chainsaw.command._table) | ||
Franck Bret
|
r51880 | command = registrar.command(table) | ||
Raphaël Gomès
|
r51882 | |||
@command( | ||||
b'admin::verify', | ||||
[ | ||||
(b'c', b'check', [], _(b'add a check'), _(b'CHECK')), | ||||
(b'o', b'option', [], _(b'pass an option to a check'), _(b'OPTION')), | ||||
], | ||||
helpcategory=command.CATEGORY_MAINTENANCE, | ||||
) | ||||
def admin_verify(ui, repo, **opts): | ||||
"""verify the integrity of the repository | ||||
Alternative UI to `hg verify` with a lot more control over the | ||||
verification process and better error reporting. | ||||
""" | ||||
if not repo.url().startswith(b'file:'): | ||||
raise error.Abort(_(b"cannot verify bundle or remote repos")) | ||||
if transaction.has_abandoned_transaction(repo): | ||||
ui.warn(_(b"abandoned transaction found - run hg recover\n")) | ||||
checks = opts.get("check", []) | ||||
options = opts.get("option", []) | ||||
funcs = verify.get_checks(repo, ui, names=checks, options=options) | ||||
ui.status(_(b"running %d checks\n") % len(funcs)) | ||||
# Done in two times so the execution is separated from the resolving step | ||||
for name, func in sorted(funcs.items(), key=lambda x: x[0]): | ||||
ui.status(_(b"running %s\n") % name) | ||||
errors = func() | ||||
if errors: | ||||
Raphaël Gomès
|
r52508 | ui.warn(_(b"found %d errors\n") % errors) | ||