[PATCH V2] revlog: use raw revision for rawsize
Jun Wu
quark at fb.com
Mon Apr 3 01:58:39 UTC 2017
# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1491184623 25200
# Sun Apr 02 18:57:03 2017 -0700
# Node ID 8482a52e811195186399f21b87a1a6a2760593fa
# Parent 04ec317b81280c189fcea33a05c8cbbac3c186b1
# Available At https://bitbucket.org/quark-zju/hg-draft
# hg pull https://bitbucket.org/quark-zju/hg-draft -r 8482a52e8111
revlog: use raw revision for rawsize
When writing the revlog-ng index, the third field is len(rawtext). See
revlog._addrevision:
textlen = len(rawtext)
....
e = (offset_type(offset, flags), l, textlen,
base, link, p1r, p2r, node)
self.index.insert(-1, e)
Therefore, revlog.index[rev][2] returned by revlog.rawsize should be
len(rawtext), where "rawtext" is revlog.revision(raw=True).
Unfortunately it's hard to add a test for this code path because "if l >= 0"
catches most cases.
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -445,5 +445,5 @@ class revlog(object):
return l
- t = self.revision(rev)
+ t = self.revision(rev, raw=True)
return len(t)
size = rawsize
More information about the Mercurial-devel
mailing list