annotate mercurial/admin_commands.py @ 51498:25055932042a stable

tests: fix test-patchbomb-tls.t instability The flakiness on chg is caused by a client that exit faster than the server output log. So actively wait for the server to issue the expected output (with a small timeout)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 11 Mar 2024 12:03:40 +0100
parents 752c5a5b73c6
children d4095f7b000a
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
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))