diff mercurial/revlogutils/debug.py @ 51069:810446d2d5ef

debug-delta-chaing: add a parameter to select revision to look at This allows for much faster runtime when we are interrested in some revisions only.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 19 Sep 2023 01:24:10 +0200
parents 793a058f64bd
children 752e380c5702
line wrap: on
line diff
--- a/mercurial/revlogutils/debug.py	Mon Sep 18 23:37:06 2023 +0200
+++ b/mercurial/revlogutils/debug.py	Tue Sep 19 01:24:10 2023 +0200
@@ -801,7 +801,7 @@
         return p1, p2, compsize, uncompsize, deltatype, chain, chain_size
 
 
-def debug_delta_chain(revlog):
+def debug_delta_chain(revlog, revs=None):
     auditor = DeltaChainAuditor(revlog)
     r = revlog
     start = r.start
@@ -818,8 +818,14 @@
     header += b'\n'
     yield header
 
+    if revs is None:
+        all_revs = iter(r)
+    else:
+        revlog_size = len(r)
+        all_revs = sorted(rev for rev in revs if rev < revlog_size)
+
     chainbases = {}
-    for rev in r:
+    for rev in all_revs:
         p1, p2, comp, uncomp, deltatype, chain, chainsize = auditor.revinfo(rev)
         chainbase = chain[0]
         chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)