annotate mercurial/admin_commands.py @ 52094:87faafd6ea83

tests: stabilize `test-eol-update.t` on Windows Perhaps it's better if this doesn't happen, but there are a bunch of tests that spew this, and we already have a conditional match for this in the block prior to the comment right above this section. So accept it as a possibility, and reduce the noise in the Windows tests.
author Matt Harbison <matt_harbison@yahoo.com>
date Tue, 15 Oct 2024 18:58:47 -0400
parents 1c5810ce737e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
51864
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51615
diff changeset
8 from __future__ import annotations
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51615
diff changeset
9
50989
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
10 from .i18n import _
51503
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Raphaël Gomès <rgomes@octobus.net>
parents: 50989
diff changeset
11 from .admin import chainsaw, verify
50989
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
12 from . import error, registrar, transaction
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
13
50987
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
14
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
15 table = {}
51503
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Raphaël Gomès <rgomes@octobus.net>
parents: 50989
diff changeset
16 table.update(chainsaw.command._table)
50987
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
17 command = registrar.command(table)
50989
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
18
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 @command(
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
21 b'admin::verify',
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 (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
24 (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
25 ],
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
26 helpcategory=command.CATEGORY_MAINTENANCE,
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 def admin_verify(ui, repo, **opts):
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
29 """verify the integrity of the repository
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 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
32 verification process and better error reporting.
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
33 """
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 not repo.url().startswith(b'file:'):
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
36 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
37
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
38 if transaction.has_abandoned_transaction(repo):
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
39 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
40
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
41 checks = opts.get("check", [])
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
42 options = opts.get("option", [])
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
43
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
44 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
45
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
46 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
47 # 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
48 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
49 ui.status(_(b"running %s\n") % name)
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
50 errors = func()
752c5a5b73c6 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net>
parents: 50987
diff changeset
51 if errors:
51615
a93e60ebea09 admin-verify: expect a number of errors to be returned
Raphaël Gomès <rgomes@octobus.net>
parents: 51503
diff changeset
52 ui.warn(_(b"found %d errors\n") % errors)