Mercurial > public > mercurial-scm > hg-stable
diff mercurial/debugcommands.py @ 51078:752e380c5702
debug-delta-chain: add options to control what we compute
Currently this mostly controls what we display, but actual computation saving
will come soon.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 19 Sep 2023 01:53:03 +0200 |
parents | 810446d2d5ef |
children | 2d30d1ba0371 |
line wrap: on
line diff
--- a/mercurial/debugcommands.py Tue Sep 19 01:24:10 2023 +0200 +++ b/mercurial/debugcommands.py Tue Sep 19 01:53:03 2023 +0200 @@ -753,6 +753,24 @@ [], _('restrict processing to these revlog revisions'), ), + ( + b'', + b'size-info', + True, + _('compute information related to deltas size'), + ), + ( + b'', + b'dist-info', + True, + _('compute information related to base distance'), + ), + ( + b'', + b'sparse-info', + True, + _('compute information related to sparse read'), + ), ] + cmdutil.debugrevlogopts + cmdutil.formatteropts, @@ -767,8 +785,10 @@ :``rev``: revision number :``p1``: parent 1 revision number (for reference) :``p2``: parent 2 revision number (for reference) + :``chainid``: delta chain identifier (numbered by unique base) :``chainlen``: delta chain length to this revision + :``prevrev``: previous revision in delta chain :``deltatype``: role of delta / how it was computed - base: a full snapshot @@ -781,11 +801,13 @@ (when p2 has empty delta - prev: a delta against the previous revision - other: a delta against an arbitrary revision + :``compsize``: compressed size of revision :``uncompsize``: uncompressed size of revision :``chainsize``: total size of compressed revisions in chain :``chainratio``: total chain size divided by uncompressed revision size (new delta chains typically start at ratio 2.00) + :``lindist``: linear distance from base revision in delta chain to end of this revision :``extradist``: total size of revisions not part of this delta chain from @@ -804,18 +826,64 @@ :``readdensity``: density of useful bytes in the data read from the disk :``srchunks``: in how many data hunks the whole revision would be read + It is possible to select the information to be computed, this can provide a + noticeable speedup to the command in some cases. + + Always computed: + + - ``rev`` + - ``p1`` + - ``p2`` + - ``chainid`` + - ``chainlen`` + - ``prevrev`` + - ``deltatype`` + + Computed with --no-size-info + + - ``compsize`` + - ``uncompsize`` + - ``chainsize`` + - ``chainratio`` + + Computed with --no-dist-info + + - ``lindist`` + - ``extradist`` + - ``extraratio`` + + Skipped with --no-sparse-info + + - ``readsize`` + - ``largestblock`` + - ``readdensity`` + - ``srchunks`` + + -- + The sparse read can be enabled with experimental.sparse-read = True """ revs = None revs_opt = opts.pop('rev', []) if revs_opt: revs = [int(r) for r in revs_opt] + + size_info = opts.pop('size_info', True) + dist_info = opts.pop('dist_info', True) + sparse_info = opts.pop('sparse_info', True) + revlog = cmdutil.openrevlog( repo, b'debugdeltachain', file_, pycompat.byteskwargs(opts) ) fm = ui.formatter(b'debugdeltachain', pycompat.byteskwargs(opts)) - lines = revlog_debug.debug_delta_chain(revlog, revs=revs) + lines = revlog_debug.debug_delta_chain( + revlog, + revs=revs, + size_info=size_info, + dist_info=dist_info, + sparse_info=sparse_info, + ) # first entry is the header header = next(lines) fm.plain(header)