debugrevlog: display snapshot details per depth
This help in understanding the final structure of build manifest. All data
about snapshot (full and intermediate) are gathered into a sub-list for
clarity.
Since we do not produce such snapshots yet, the only thing changing in test
output is the way the information is presented.
--- a/mercurial/debugcommands.py Wed Aug 15 12:09:14 2018 +0200
+++ b/mercurial/debugcommands.py Wed Aug 15 12:30:30 2018 +0200
@@ -2097,6 +2097,8 @@
numfull = 0
# intermediate snapshot against a prior snapshot
numsemi = 0
+ # snapshot count per depth
+ numsnapdepth = collections.defaultdict(lambda: 0)
# delta against previous revision
numprev = 0
# delta against first or second parent (not prev)
@@ -2118,6 +2120,8 @@
datasize = [None, 0, 0]
fullsize = [None, 0, 0]
semisize = [None, 0, 0]
+ # snapshot count per depth
+ snapsizedepth = collections.defaultdict(lambda: [None, 0, 0])
deltasize = [None, 0, 0]
chunktypecounts = {}
chunktypesizes = {}
@@ -2147,7 +2151,9 @@
numemptytext += 1
else:
numfull += 1
+ numsnapdepth[0] += 1
addsize(size, fullsize)
+ addsize(size, snapsizedepth[0])
else:
chainlengths.append(chainlengths[delta] + 1)
baseaddr = chainbases[delta]
@@ -2160,6 +2166,9 @@
elif r.issnapshot(rev):
addsize(size, semisize)
numsemi += 1
+ depth = r.snapshotdepth(rev)
+ numsnapdepth[depth] += 1
+ addsize(size, snapsizedepth[depth])
else:
addsize(size, deltasize)
if delta == rev - 1:
@@ -2204,8 +2213,13 @@
fulltotal = fullsize[2]
fullsize[2] /= numfull
semitotal = semisize[2]
+ snaptotal = {}
if 0 < numsemi:
semisize[2] /= numsemi
+ for depth in snapsizedepth:
+ snaptotal[depth] = snapsizedepth[depth][2]
+ snapsizedepth[depth][2] /= numsnapdepth[depth]
+
deltatotal = deltasize[2]
if numdeltas > 0:
deltasize[2] /= numdeltas
@@ -2246,12 +2260,17 @@
+ fmt % pcfmt(numemptytext, numemptytext + numemptydelta))
ui.write((' delta : ')
+ fmt % pcfmt(numemptydelta, numemptytext + numemptydelta))
- ui.write((' full : ') + fmt % pcfmt(numfull, numrevs))
- ui.write((' inter : ') + fmt % pcfmt(numsemi, numrevs))
+ ui.write((' snapshot : ') + fmt % pcfmt(numfull + numsemi, numrevs))
+ for depth in sorted(numsnapdepth):
+ ui.write((' lvl-%-3d : ' % depth)
+ + fmt % pcfmt(numsnapdepth[depth], numrevs))
ui.write((' deltas : ') + fmt % pcfmt(numdeltas, numrevs))
ui.write(('revision size : ') + fmt2 % totalsize)
- ui.write((' full : ') + fmt % pcfmt(fulltotal, totalsize))
- ui.write((' inter : ') + fmt % pcfmt(semitotal, totalsize))
+ ui.write((' snapshot : ')
+ + fmt % pcfmt(fulltotal + semitotal, totalsize))
+ for depth in sorted(numsnapdepth):
+ ui.write((' lvl-%-3d : ' % depth)
+ + fmt % pcfmt(snaptotal[depth], totalsize))
ui.write((' deltas : ') + fmt % pcfmt(deltatotal, totalsize))
def fmtchunktype(chunktype):
@@ -2285,6 +2304,13 @@
% tuple(datasize))
ui.write(('full revision size (min/max/avg) : %d / %d / %d\n')
% tuple(fullsize))
+ ui.write(('inter-snapshot size (min/max/avg) : %d / %d / %d\n')
+ % tuple(semisize))
+ for depth in sorted(snapsizedepth):
+ if depth == 0:
+ continue
+ ui.write((' level-%-3d (min/max/avg) : %d / %d / %d\n')
+ % ((depth,) + tuple(snapsizedepth[depth])))
ui.write(('delta size (min/max/avg) : %d / %d / %d\n')
% tuple(deltasize))
--- a/tests/test-debugcommands.t Wed Aug 15 12:09:14 2018 +0200
+++ b/tests/test-debugcommands.t Wed Aug 15 12:30:30 2018 +0200
@@ -26,12 +26,12 @@
empty : 0 ( 0.00%)
text : 0 (100.00%)
delta : 0 (100.00%)
- full : 3 (100.00%)
- inter : 0 ( 0.00%)
+ snapshot : 3 (100.00%)
+ lvl-0 : 3 (100.00%)
deltas : 0 ( 0.00%)
revision size : 191
- full : 191 (100.00%)
- inter : 0 ( 0.00%)
+ snapshot : 191 (100.00%)
+ lvl-0 : 191 (100.00%)
deltas : 0 ( 0.00%)
chunks : 3
@@ -46,6 +46,7 @@
uncompressed data size (min/max/avg) : 57 / 66 / 62
full revision size (min/max/avg) : 58 / 67 / 63
+ inter-snapshot size (min/max/avg) : 0 / 0 / 0
delta size (min/max/avg) : 0 / 0 / 0
$ hg debugrevlog -m
format : 1
@@ -58,12 +59,12 @@
empty : 1 (33.33%)
text : 1 (100.00%)
delta : 0 ( 0.00%)
- full : 2 (66.67%)
- inter : 0 ( 0.00%)
+ snapshot : 2 (66.67%)
+ lvl-0 : 2 (66.67%)
deltas : 0 ( 0.00%)
revision size : 88
- full : 88 (100.00%)
- inter : 0 ( 0.00%)
+ snapshot : 88 (100.00%)
+ lvl-0 : 88 (100.00%)
deltas : 0 ( 0.00%)
chunks : 3
@@ -80,6 +81,7 @@
uncompressed data size (min/max/avg) : 0 / 43 / 28
full revision size (min/max/avg) : 44 / 44 / 44
+ inter-snapshot size (min/max/avg) : 0 / 0 / 0
delta size (min/max/avg) : 0 / 0 / 0
$ hg debugrevlog a
format : 1
@@ -92,12 +94,12 @@
empty : 0 ( 0.00%)
text : 0 (100.00%)
delta : 0 (100.00%)
- full : 1 (100.00%)
- inter : 0 ( 0.00%)
+ snapshot : 1 (100.00%)
+ lvl-0 : 1 (100.00%)
deltas : 0 ( 0.00%)
revision size : 3
- full : 3 (100.00%)
- inter : 0 ( 0.00%)
+ snapshot : 3 (100.00%)
+ lvl-0 : 3 (100.00%)
deltas : 0 ( 0.00%)
chunks : 1
@@ -112,6 +114,7 @@
uncompressed data size (min/max/avg) : 2 / 2 / 2
full revision size (min/max/avg) : 3 / 3 / 3
+ inter-snapshot size (min/max/avg) : 0 / 0 / 0
delta size (min/max/avg) : 0 / 0 / 0
#endif