##// END OF EJS Templates
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes...
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes This is the same transformation as 3a90a6fd710d did for dirstate, but the CamelCase naming was already cleaned up here. See 4ef6dbc27a99 for the benefits of explicit subclassing. PyCharm is flagging the `wirepeer.getbundle` function with: Type of 'getbundle' is incompatible with 'ipeercommands' I've no idea why- maybe it's because it can infer a `unbundle20 | cg1unpacker` return there, or maybe it's the kwargs. Something to keep an eye on, but pytype doesn't complain. Since we're direct subclassing here and there are only a few methods on these interfaces, also make them abstract like was done in ef119f914fc1.

File last commit:

r52757:1c5810ce default
r53394:61f70a6a default
Show More
admin_commands.py
52 lines | 1.6 KiB | text/x-python | PythonLexer
Franck Bret
commands: add admin namespace...
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
typing: add `from __future__ import annotations` to remaining source files...
r52757 from __future__ import annotations
Raphaël Gomès
admin-command: add verify command...
r51882 from .i18n import _
Raphaël Gomès
admin-commands: move the chainsaw extension to the admin commands module...
r52396 from .admin import chainsaw, verify
Raphaël Gomès
admin-command: add verify command...
r51882 from . import error, registrar, transaction
Franck Bret
commands: add admin namespace...
r51880
table = {}
Raphaël Gomès
admin-commands: move the chainsaw extension to the admin commands module...
r52396 table.update(chainsaw.command._table)
Franck Bret
commands: add admin namespace...
r51880 command = registrar.command(table)
Raphaël Gomès
admin-command: add verify command...
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
admin-verify: expect a number of errors to be returned...
r52508 ui.warn(_(b"found %d errors\n") % errors)