Mercurial > public > mercurial-scm > hg-stable
diff mercurial/debugcommands.py @ 48849:eaaf4f98c9f1 stable
dirstate-v2: add flag to `debugstate` to print docket information
This is useful information that we don't easily have access to currently,
unless you speak fluent xxd.
This replaces `debugdirstateignorepatternshash`, which I'll remove in the next
changeset.
Differential Revision: https://phab.mercurial-scm.org/D12590
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Thu, 28 Apr 2022 15:19:19 +0200 |
parents | 020378f32d57 |
children | 308e45f7b455 |
line wrap: on
line diff
--- a/mercurial/debugcommands.py Mon May 02 22:04:59 2022 -0400 +++ b/mercurial/debugcommands.py Thu Apr 28 15:19:19 2022 +0200 @@ -47,6 +47,7 @@ context, copies, dagparser, + dirstateutils, encoding, error, exchange, @@ -940,6 +941,12 @@ (b'', b'datesort', None, _(b'sort by saved mtime')), ( b'', + b'docket', + False, + _(b'display the docket (metadata file) instead'), + ), + ( + b'', b'all', False, _(b'display dirstate-v2 tree nodes that would not exist in v1'), @@ -950,6 +957,33 @@ def debugstate(ui, repo, **opts): """show the contents of the current dirstate""" + if opts.get("docket"): + if not repo.dirstate._use_dirstate_v2: + raise error.Abort(_(b'dirstate v1 does not have a docket')) + + docket = repo.dirstate._map.docket + ( + start_offset, + root_nodes, + nodes_with_entry, + nodes_with_copy, + unused_bytes, + _unused, + ignore_pattern, + ) = dirstateutils.v2.TREE_METADATA.unpack(docket.tree_metadata) + + ui.write(_(b"size of dirstate data: %d\n") % docket.data_size) + ui.write(_(b"data file uuid: %s\n") % docket.uuid) + ui.write(_(b"start offset of root nodes: %d\n") % start_offset) + ui.write(_(b"number of root nodes: %d\n") % root_nodes) + ui.write(_(b"nodes with entries: %d\n") % nodes_with_entry) + ui.write(_(b"nodes with copies: %d\n") % nodes_with_copy) + ui.write(_(b"number of unused bytes: %d\n") % unused_bytes) + ui.write( + _(b"ignore pattern hash: %s\n") % binascii.hexlify(ignore_pattern) + ) + return + nodates = not opts['dates'] if opts.get('nodates') is not None: nodates = True