Mercurial > hg
comparison mercurial/revlog.py @ 36744: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 | d031609b3cb7 |
children | 369aadf7a326 |
comparison
equal
deleted
inserted
replaced
36743:d031609b3cb7 | 36744:33275ab5e837 |
---|---|
405 | 405 |
406 deltainfo = None | 406 deltainfo = None |
407 for candidaterevs in self._getcandidaterevs(p1, p2, cachedelta): | 407 for candidaterevs in self._getcandidaterevs(p1, p2, cachedelta): |
408 nominateddeltas = [] | 408 nominateddeltas = [] |
409 for candidaterev in candidaterevs: | 409 for candidaterev in candidaterevs: |
410 # no delta for rawtext-changing revs (see "candelta" for why) | |
411 if revlog.flags(candidaterev) & REVIDX_RAWTEXT_CHANGING_FLAGS: | |
412 continue | |
410 candidatedelta = self._builddeltainfo(revinfo, candidaterev, fh) | 413 candidatedelta = self._builddeltainfo(revinfo, candidaterev, fh) |
411 if revlog._isgooddeltainfo(candidatedelta, revinfo.textlen): | 414 if revlog._isgooddeltainfo(candidatedelta, revinfo.textlen): |
412 nominateddeltas.append(candidatedelta) | 415 nominateddeltas.append(candidatedelta) |
413 if nominateddeltas: | 416 if nominateddeltas: |
414 deltainfo = min(nominateddeltas, key=lambda x: x.deltalen) | 417 deltainfo = min(nominateddeltas, key=lambda x: x.deltalen) |
2088 | 2091 |
2089 if deltacomputer is None: | 2092 if deltacomputer is None: |
2090 deltacomputer = _deltacomputer(self) | 2093 deltacomputer = _deltacomputer(self) |
2091 | 2094 |
2092 revinfo = _revisioninfo(node, p1, p2, btext, textlen, cachedelta, flags) | 2095 revinfo = _revisioninfo(node, p1, p2, btext, textlen, cachedelta, flags) |
2093 deltainfo = deltacomputer.finddeltainfo(revinfo, fh) | 2096 |
2097 # no delta for flag processor revision (see "candelta" for why) | |
2098 # not calling candelta since only one revision needs test, also to | |
2099 # avoid overhead fetching flags again. | |
2100 if flags & REVIDX_RAWTEXT_CHANGING_FLAGS: | |
2101 deltainfo = None | |
2102 else: | |
2103 deltainfo = deltacomputer.finddeltainfo(revinfo, fh) | |
2094 | 2104 |
2095 if deltainfo is not None: | 2105 if deltainfo is not None: |
2096 base = deltainfo.base | 2106 base = deltainfo.base |
2097 chainbase = deltainfo.chainbase | 2107 chainbase = deltainfo.chainbase |
2098 data = deltainfo.data | 2108 data = deltainfo.data |