diff -r 523cacdfd324 -r 7c0a383849a8 mercurial/revlogutils/debug.py --- 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, + ) + )