mercurial/revlogutils/debug.py
changeset 49250 61cf3d39fd9e
child 49251 ccd76e292be5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/revlogutils/debug.py	Mon May 30 23:24:14 2022 +0200
@@ -0,0 +1,51 @@
+# revlogutils/debug.py - utility used for revlog debuging
+#
+# Copyright 2005-2007 Olivia Mackall <olivia@selenic.com>
+# Copyright 2022 Octobus <contact@octobus.net>
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+
+from .. import (
+    node as nodemod,
+)
+
+
+def debug_index(
+    ui,
+    repo,
+    formatter,
+    revlog,
+    full_node,
+):
+    """display index data for a revlog"""
+    if full_node:
+        hexfn = nodemod.hex
+    else:
+        hexfn = nodemod.short
+
+    idlen = 12
+    for i in revlog:
+        idlen = len(hexfn(revlog.node(i)))
+        break
+
+    fm = formatter
+
+    fm.plain(
+        b'   rev linkrev %s %s p2\n'
+        % (b'nodeid'.ljust(idlen), b'p1'.ljust(idlen))
+    )
+
+    for rev in revlog:
+        node = revlog.node(rev)
+        parents = revlog.parents(node)
+
+        fm.startitem()
+        fm.write(b'rev', b'%6d ', rev)
+        fm.write(b'linkrev', b'%7d ', revlog.linkrev(rev))
+        fm.write(b'node', b'%s ', hexfn(node))
+        fm.write(b'p1', b'%s ', hexfn(parents[0]))
+        fm.write(b'p2', b'%s', hexfn(parents[1]))
+        fm.plain(b'\n')
+
+    fm.end()