Mercurial > public > mercurial-scm > hg
comparison mercurial/debugcommands.py @ 49152: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 |
comparison
equal
deleted
inserted
replaced
49151:1b6e381521c5 | 49152:eaaf4f98c9f1 |
---|---|
45 cmdutil, | 45 cmdutil, |
46 color, | 46 color, |
47 context, | 47 context, |
48 copies, | 48 copies, |
49 dagparser, | 49 dagparser, |
50 dirstateutils, | |
50 encoding, | 51 encoding, |
51 error, | 52 error, |
52 exchange, | 53 exchange, |
53 extensions, | 54 extensions, |
54 filemerge, | 55 filemerge, |
938 ), | 939 ), |
939 (b'', b'dates', True, _(b'display the saved mtime')), | 940 (b'', b'dates', True, _(b'display the saved mtime')), |
940 (b'', b'datesort', None, _(b'sort by saved mtime')), | 941 (b'', b'datesort', None, _(b'sort by saved mtime')), |
941 ( | 942 ( |
942 b'', | 943 b'', |
944 b'docket', | |
945 False, | |
946 _(b'display the docket (metadata file) instead'), | |
947 ), | |
948 ( | |
949 b'', | |
943 b'all', | 950 b'all', |
944 False, | 951 False, |
945 _(b'display dirstate-v2 tree nodes that would not exist in v1'), | 952 _(b'display dirstate-v2 tree nodes that would not exist in v1'), |
946 ), | 953 ), |
947 ], | 954 ], |
948 _(b'[OPTION]...'), | 955 _(b'[OPTION]...'), |
949 ) | 956 ) |
950 def debugstate(ui, repo, **opts): | 957 def debugstate(ui, repo, **opts): |
951 """show the contents of the current dirstate""" | 958 """show the contents of the current dirstate""" |
959 | |
960 if opts.get("docket"): | |
961 if not repo.dirstate._use_dirstate_v2: | |
962 raise error.Abort(_(b'dirstate v1 does not have a docket')) | |
963 | |
964 docket = repo.dirstate._map.docket | |
965 ( | |
966 start_offset, | |
967 root_nodes, | |
968 nodes_with_entry, | |
969 nodes_with_copy, | |
970 unused_bytes, | |
971 _unused, | |
972 ignore_pattern, | |
973 ) = dirstateutils.v2.TREE_METADATA.unpack(docket.tree_metadata) | |
974 | |
975 ui.write(_(b"size of dirstate data: %d\n") % docket.data_size) | |
976 ui.write(_(b"data file uuid: %s\n") % docket.uuid) | |
977 ui.write(_(b"start offset of root nodes: %d\n") % start_offset) | |
978 ui.write(_(b"number of root nodes: %d\n") % root_nodes) | |
979 ui.write(_(b"nodes with entries: %d\n") % nodes_with_entry) | |
980 ui.write(_(b"nodes with copies: %d\n") % nodes_with_copy) | |
981 ui.write(_(b"number of unused bytes: %d\n") % unused_bytes) | |
982 ui.write( | |
983 _(b"ignore pattern hash: %s\n") % binascii.hexlify(ignore_pattern) | |
984 ) | |
985 return | |
952 | 986 |
953 nodates = not opts['dates'] | 987 nodates = not opts['dates'] |
954 if opts.get('nodates') is not None: | 988 if opts.get('nodates') is not None: |
955 nodates = True | 989 nodates = True |
956 datesort = opts.get('datesort') | 990 datesort = opts.get('datesort') |