Mercurial > public > mercurial-scm > hg-stable
diff tests/test-revlog-raw.py @ 35840:33275ab5e837 stable
revlog: do not use delta for lfs revisions
This is similar to what we have done for changegroups. It is needed to make
sure the delta application code path can assume deltas are always against
vanilla (ex. non-LFS) rawtext so the next fix becomes possible.
Differential Revision: https://phab.mercurial-scm.org/D2068
author | Jun Wu <quark@fb.com> |
---|---|
date | Tue, 13 Feb 2018 11:35:32 -0800 |
parents | edc9330acac1 |
children | 03a09579c854 |
line wrap: on
line diff
--- a/tests/test-revlog-raw.py Tue Feb 06 19:08:25 2018 -0800 +++ b/tests/test-revlog-raw.py Tue Feb 13 11:35:32 2018 -0800 @@ -114,6 +114,8 @@ else: # suboptimal deltaparent deltaparent = min(0, parentrev) + if not rlog.candelta(deltaparent, r): + deltaparent = -1 return {'node': rlog.node(r), 'p1': pnode, 'p2': node.nullid, 'cs': rlog.node(rlog.linkrev(r)), 'flags': rlog.flags(r), 'deltabase': rlog.node(deltaparent), @@ -151,12 +153,14 @@ for r in rlog: p1 = rlog.node(r - 1) p2 = node.nullid - if r == 0: + if r == 0 or (rlog.flags(r) & revlog.REVIDX_EXTSTORED): text = rlog.revision(r, raw=True) cachedelta = None else: - # deltaparent is more interesting if it has the EXTSTORED flag. - deltaparent = max([0] + [p for p in range(r - 2) if rlog.flags(p)]) + # deltaparent cannot have EXTSTORED flag. + deltaparent = max([-1] + + [p for p in range(r) + if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0]) text = None cachedelta = (deltaparent, rlog.revdiff(deltaparent, r)) flags = rlog.flags(r) @@ -262,8 +266,9 @@ result.append((text, rawtext)) # Verify flags like isdelta, isext work as expected - if bool(rlog.deltaparent(rev) > -1) != isdelta: - abort('rev %d: isdelta is ineffective' % rev) + # isdelta can be overridden to False if this or p1 has isext set + if bool(rlog.deltaparent(rev) > -1) and not isdelta: + abort('rev %d: isdelta is unexpected' % rev) if bool(rlog.flags(rev)) != isext: abort('rev %d: isext is ineffective' % rev) return result