annotate mercurial/admin_commands.py @ 51528:f85f23f1479b

branchcache: skip entries that are topological heads in the on disk file In the majority of cases, topological heads are also branch heads. We have efficient way to get the topological heads and efficient way to retrieve their branch information. So there is little value in putting them in the branch cache file explicitly. On the contrary, writing them explicitly tend to create very large cache file that are inefficient to read and update. So the branch cache v3 format is no longer including them. This changeset focus on the format aspect and have no focus on the performance aspect. We will cover that later.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 07 Mar 2024 10:55:22 +0100
parents d4095f7b000a
children a93e60ebea09
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50984
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
50986
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
8 from .i18n import _
51500
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50986
diff changeset
9 from .admin import chainsaw, verify
50986
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
10 from . import error, registrar, transaction
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
11
50984
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 = {}
51500
d4095f7b000a admin-commands: move the chainsaw extension to the admin commands module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50986
diff changeset
14 table.update(chainsaw.command._table)
50984
727428c7e1fc commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
diff changeset
15 command = registrar.command(table)
50986
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
16
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
17
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
18 @command(
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
19 b'admin::verify',
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
20 [
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
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: 50984
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: 50984
diff changeset
23 ],
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
24 helpcategory=command.CATEGORY_MAINTENANCE,
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
25 )
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
26 def admin_verify(ui, repo, **opts):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
27 """verify the integrity of the repository
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
28
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
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: 50984
diff changeset
30 verification process and better error reporting.
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
31 """
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
32
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
33 if not repo.url().startswith(b'file:'):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
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: 50984
diff changeset
35
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
36 if transaction.has_abandoned_transaction(repo):
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
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: 50984
diff changeset
38
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
39 checks = opts.get("check", [])
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
40 options = opts.get("option", [])
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
41
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
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: 50984
diff changeset
43
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
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: 50984
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: 50984
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: 50984
diff changeset
47 ui.status(_(b"running %s\n") % name)
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
48 errors = func()
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
49 if errors:
752c5a5b73c6 admin-command: add verify command
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50984
diff changeset
50 ui.warn(_(b"found %d errors\n") % len(errors))