diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -600,6 +600,7 @@ def debugdeltachain(ui, repo, file_=None (sum of the sizes of all the blocks) :``largestblock``: size of the largest block of data read from the disk :``readdensity``: density of useful bytes in the data read from the disk + :``srchunks``: in how many data hunks the whole revision would be read The sparse read can be enabled with experimental.sparse-read = True """ @@ -645,7 +646,7 @@ def debugdeltachain(ui, repo, file_=None 'size rawsize chainsize ratio lindist extradist ' 'extraratio') if withsparseread: - fm.plain(' readsize largestblk rddensity') + fm.plain(' readsize largestblk rddensity srchunks') fm.plain('\n') chainbases = {} @@ -693,11 +694,17 @@ def debugdeltachain(ui, repo, file_=None readdensity = float(chainsize) / float(readsize) - fm.write('readsize largestblock readdensity', - ' %10d %10d %9.5f', - readsize, largestblock, readdensity, + if util.safehasattr(revlog, '_slicechunk'): + revchunks = tuple(revlog._slicechunk(r, chain)) + else: + revchunks = (chain,) + srchunks = len(revchunks) + + fm.write('readsize largestblock readdensity srchunks', + ' %10d %10d %9.5f %8d', + readsize, largestblock, readdensity, srchunks, readsize=readsize, largestblock=largestblock, - readdensity=readdensity) + readdensity=readdensity, srchunks=srchunks) fm.plain('\n') diff --git a/tests/test-debugcommands.t b/tests/test-debugcommands.t --- a/tests/test-debugcommands.t +++ b/tests/test-debugcommands.t @@ -86,8 +86,8 @@ debugdelta chain with sparse read enable > sparse-read = True > EOF $ hg debugdeltachain -m - rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity - 0 1 1 -1 base 44 43 44 1.02326 44 0 0.00000 44 44 1.00000 + rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity srchunks + 0 1 1 -1 base 44 43 44 1.02326 44 0 0.00000 44 44 1.00000 1 $ hg debugdeltachain -m -T '{rev} {chainid} {chainlen} {readsize} {largestblock} {readdensity}\n' 0 1 1 44 44 1.0 @@ -109,10 +109,42 @@ debugdelta chain with sparse read enable "readdensity": 1.0, "readsize": 44, "rev": 0, + "srchunks": 1, "uncompsize": 43 } ] + $ printf "This test checks things.\n" >> a + $ hg ci -m a + $ hg branch other + marked working directory as branch other + (branches are permanent and global, did you want a bookmark?) + $ for i in `$TESTDIR/seq.py 5`; do + > printf "shorter ${i}" >> a + > hg ci -m "a other:$i" + > hg up -q default + > printf "for the branch default we want longer chains: ${i}" >> a + > hg ci -m "a default:$i" + > hg up -q other + > done + $ hg debugdeltachain a -T '{rev} {srchunks}\n' \ + > --config experimental.sparse-read.density-threshold=0.50 \ + > --config experimental.sparse-read.min-gap-size=0 + 0 1 + 1 1 + 2 1 + 3 1 + 4 1 + 5 1 + 6 1 + 7 1 + 8 1 + 9 1 + 10 2 + 11 1 + $ hg --config extensions.strip= strip --no-backup -r 1 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + Test max chain len $ cat >> $HGRCPATH << EOF > [format]