debug-revlog: move the --dump code in `revlogutils` module
We have a module dedicated to debug code, let us use it.
--- a/mercurial/debugcommands.py Wed Nov 23 19:08:27 2022 +0100
+++ b/mercurial/debugcommands.py Mon Nov 07 14:13:59 2022 -0500
@@ -3240,51 +3240,7 @@
r = cmdutil.openrevlog(repo, b'debugrevlog', file_, opts)
if opts.get(b"dump"):
- 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,
- )
- )
+ revlog_debug.dump(ui, r)
return 0
format = r._format_version
--- 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,
+ )
+ )