[PATCH V2] revlog: use raw revision for rawsize

Augie Fackler raf at durin42.com
Mon Apr 3 16:20:38 EDT 2017


On Sun, Apr 02, 2017 at 06:58:39PM -0700, Jun Wu wrote:
> # 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

queued, thanks

> #              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
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list