mercurial/admin_commands.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 23 Nov 2023 01:13:40 +0100
changeset 51326 01db705bbe32
parent 50989 752c5a5b73c6
child 51503 d4095f7b000a
permissions -rw-r--r--
delta-find: move tested in the _DeltaSearch.__init__ Now that we have an object we can initialize that attribute at initialization time. This will make it available for more method in the future, allowing to split the code.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50987
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     1
# admin_commands.py - command processing for admin* commands
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     2
#
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     3
# Copyright 2022 Mercurial Developers
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     4
#
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
     7
50989
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
     8
from .i18n import _
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
     9
from .admin import verify
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    10
from . import error, registrar, transaction
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    11
50987
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    12
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    13
table = {}
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
    14
command = registrar.command(table)
50989
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    15
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    16
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    17
@command(
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    18
    b'admin::verify',
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    19
    [
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    20
        (b'c', b'check', [], _(b'add a check'), _(b'CHECK')),
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    21
        (b'o', b'option', [], _(b'pass an option to a check'), _(b'OPTION')),
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    22
    ],
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    23
    helpcategory=command.CATEGORY_MAINTENANCE,
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    24
)
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    25
def admin_verify(ui, repo, **opts):
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    26
    """verify the integrity of the repository
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    27
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    28
    Alternative UI to `hg verify` with a lot more control over the
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    29
    verification process and better error reporting.
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    30
    """
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    31
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    32
    if not repo.url().startswith(b'file:'):
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    33
        raise error.Abort(_(b"cannot verify bundle or remote repos"))
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    34
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    35
    if transaction.has_abandoned_transaction(repo):
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    36
        ui.warn(_(b"abandoned transaction found - run hg recover\n"))
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    37
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    38
    checks = opts.get("check", [])
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    39
    options = opts.get("option", [])
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    40
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    41
    funcs = verify.get_checks(repo, ui, names=checks, options=options)
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    42
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    43
    ui.status(_(b"running %d checks\n") % len(funcs))
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    44
    # Done in two times so the execution is separated from the resolving step
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    45
    for name, func in sorted(funcs.items(), key=lambda x: x[0]):
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    46
        ui.status(_(b"running %s\n") % name)
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    47
        errors = func()
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    48
        if errors:
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
    49
            ui.warn(_(b"found %d errors\n") % len(errors))