Mercurial > public > mercurial-scm > hg
diff mercurial/revlogutils/debug.py @ 49659:7c0a383849a8
debug-revlog: move the --dump code in `revlogutils` module
We have a module dedicated to debug code, let us use it.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 07 Nov 2022 14:13:59 -0500 |
parents | da3e37ecacde |
children | bd3b6f363fb9 |
line wrap: on
line diff
--- a/mercurial/revlogutils/debug.py Wed Nov 23 19:08:27 2022 +0100 +++ b/mercurial/revlogutils/debug.py Mon Nov 07 14:13:59 2022 -0500 @@ -216,3 +216,54 @@ fm.plain(b'\n') fm.end() + + +def dump(ui, revlog): + """perform the work for `hg debugrevlog --dump""" + # XXX seems redundant with debug index ? + r = revlog + numrevs = len(r) + ui.write( + ( + b"# rev p1rev p2rev start end deltastart base p1 p2" + b" rawsize totalsize compression heads chainlen\n" + ) + ) + ts = 0 + heads = set() + + for rev in range(numrevs): + dbase = r.deltaparent(rev) + if dbase == -1: + dbase = rev + cbase = r.chainbase(rev) + clen = r.chainlen(rev) + p1, p2 = r.parentrevs(rev) + rs = r.rawsize(rev) + ts = ts + rs + heads -= set(r.parentrevs(rev)) + heads.add(rev) + try: + compression = ts / r.end(rev) + except ZeroDivisionError: + compression = 0 + ui.write( + b"%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d " + b"%11d %5d %8d\n" + % ( + rev, + p1, + p2, + r.start(rev), + r.end(rev), + r.start(dbase), + r.start(cbase), + r.start(p1), + r.start(p2), + rs, + ts, + compression, + len(heads), + clen, + ) + )