[PATCH 1 of 2] verify: always check rawsize
Augie Fackler
raf at durin42.com
Fri May 12 22:13:47 EDT 2017
On Thu, May 11, 2017 at 04:13:30PM -0700, Jun Wu wrote:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1494539522 25200
> # Thu May 11 14:52:02 2017 -0700
> # Node ID 1008583138d3dca114bc9d4998a27e845fbc13b0
> # Parent 1ada3d18e7fbc9069910f2c036992d2f2b28e058
> # Available At https://bitbucket.org/quark-zju/hg-draft
> # hg pull https://bitbucket.org/quark-zju/hg-draft -r 1008583138d3
> verify: always check rawsize
This one is queued, but I've got some qualms about patch 2.
>
> Previously, verify only checks "rawsize == len(rawtext)", if
> "len(fl.read()) != fl.size()".
>
> With flag processor, "len(fl.read()) != fl.size()" does not necessarily mean
> "rawsize == len(rawtext)". So we may miss a useful check.
>
> This patch removes the "if len(fl.read()) != fl.size()" condition so the
> rawsize check is always performed.
>
> With the condition removed, "fl.read(n)" looks unnecessary so a comment was
> added to explain the side effect is wanted.
>
> diff --git a/mercurial/verify.py b/mercurial/verify.py
> --- a/mercurial/verify.py
> +++ b/mercurial/verify.py
> @@ -428,11 +428,12 @@ class verifier(object):
> # use either "text" (external), or "rawtext" (in revlog).
> try:
> - l = len(fl.read(n))
> + fl.read(n) # side effect: read content and do checkhash
> rp = fl.renamed(n)
> - if l != fl.size(i):
> - # the "L1 == L2" check
> - if len(fl.revision(n, raw=True)) != fl.rawsize(i):
> - self.err(lr, _("unpacked size is %s, %s expected") %
> - (l, fl.size(i)), f)
> + # the "L1 == L2" check
> + l1 = fl.rawsize(i)
> + l2 = len(fl.revision(n, raw=True))
> + if l1 != l2:
> + self.err(lr, _("unpacked size is %s, %s expected") %
> + (l2, l1), f)
> except error.CensoredNodeError:
> # experimental config: censor.policy
> _______________________________________________
> 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