Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlogutils/debug.py @ 49790:4302db0f54c8
find-delta: move most of the debug-find-delta code in the debug module
Lets us that module more. It will help us to keep revlog implementation details
close to each other.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 28 Nov 2022 18:58:35 +0100 |
parents | 7aea9babac5d |
children | 05db41701ece |
line wrap: on
line diff
--- a/mercurial/revlogutils/debug.py Mon Nov 07 20:02:32 2022 -0500 +++ b/mercurial/revlogutils/debug.py Mon Nov 28 18:58:35 2022 +0100 @@ -10,12 +10,15 @@ import string from .. import ( + mdiff, node as nodemod, + revlogutils, util, ) from . import ( constants, + deltas as deltautil, ) INDEX_ENTRY_DEBUG_COLUMN = [] @@ -619,3 +622,42 @@ b'deltas against other : ' + fmt % pcfmt(numother_nad, numdeltas) ) + + +def debug_delta_find(ui, revlog, rev, base_rev=nodemod.nullrev): + """display the search process for a delta""" + deltacomputer = deltautil.deltacomputer( + revlog, + write_debug=ui.write, + debug_search=not ui.quiet, + ) + + node = revlog.node(rev) + p1r, p2r = revlog.parentrevs(rev) + p1 = revlog.node(p1r) + p2 = revlog.node(p2r) + full_text = revlog.revision(rev) + btext = [full_text] + textlen = len(btext[0]) + cachedelta = None + flags = revlog.flags(rev) + + if base_rev != nodemod.nullrev: + base_text = revlog.revision(base_rev) + delta = mdiff.textdiff(base_text, full_text) + + cachedelta = (base_rev, delta) + btext = [None] + + revinfo = revlogutils.revisioninfo( + node, + p1, + p2, + btext, + textlen, + cachedelta, + flags, + ) + + fh = revlog._datafp() + deltacomputer.finddeltainfo(revinfo, fh, target_rev=rev)