annotate mercurial/admin_commands.py @ 51454:d4095f7b000a stable

admin-commands: move the chainsaw extension to the admin commands module Activating an extension is always a little bit of a chore and the long name, options and "chainsaw" bits are deterrent enough. This also allows us to help the discoverability for people looking for repo "administration" tools, with the widest semantic of "administration".
author Rapha?l Gom?s <rgomes@octobus.net>
date Thu, 14 Mar 2024 11:24:52 +0100
parents 752c5a5b73c6
children a93e60ebea09
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50995
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
50997
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
8 from .i18n import _
51454
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50997
diff changeset
9 from .admin import chainsaw, verify
50997
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
10 from . import error, registrar, transaction
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
11
50995
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 = {}
51454
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50997
diff changeset
14 table.update(chainsaw.command._table)
50995
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
15 command = registrar.command(table)
50997
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
16
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
17
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
18 @command(
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
19 b'admin::verify',
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
20 [
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
21 (b'c', b'check', [], _(b'add a check'), _(b'CHECK')),
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
22 (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: 50995
diff changeset
23 ],
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
24 helpcategory=command.CATEGORY_MAINTENANCE,
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
25 )
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
26 def admin_verify(ui, repo, **opts):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
27 """verify the integrity of the repository
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
28
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
29 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: 50995
diff changeset
30 verification process and better error reporting.
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
31 """
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
32
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
33 if not repo.url().startswith(b'file:'):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
34 raise error.Abort(_(b"cannot verify bundle or remote repos"))
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
35
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
36 if transaction.has_abandoned_transaction(repo):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
37 ui.warn(_(b"abandoned transaction found - run hg recover\n"))
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
38
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
39 checks = opts.get("check", [])
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
40 options = opts.get("option", [])
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
41
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
42 funcs = verify.get_checks(repo, ui, names=checks, options=options)
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
43
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
44 ui.status(_(b"running %d checks\n") % len(funcs))
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
45 # 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: 50995
diff changeset
46 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: 50995
diff changeset
47 ui.status(_(b"running %s\n") % name)
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
48 errors = func()
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
49 if errors:
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50995
diff changeset
50 ui.warn(_(b"found %d errors\n") % len(errors))