diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -333,7 +333,8 @@ len(delta) - hlen): btext[0] = delta[hlen:] else: - basetext = revlog.revision(baserev, _df=fh, raw=True) + # deltabase is flags=0 rawtext, equivalent to non-raw text + basetext = revlog.revision(baserev, _df=fh, raw=False) btext[0] = mdiff.patch(basetext, delta) try: @@ -2076,7 +2077,9 @@ # full versions are inserted when the needed deltas # become comparable to the uncompressed text if rawtext is None: - textlen = mdiff.patchedsize(self.rawsize(cachedelta[0]), + # need flags=0 rawtext size, which is the non-raw size + # use revlog explicitly to avoid filelog's metadata handling + textlen = mdiff.patchedsize(revlog.size(self, cachedelta[0]), cachedelta[1]) else: textlen = len(rawtext) diff --git a/tests/test-lfs-bundle.t b/tests/test-lfs-bundle.t --- a/tests/test-lfs-bundle.t +++ b/tests/test-lfs-bundle.t @@ -90,7 +90,7 @@ ---- Applying src-normal.bundle to dst-normal ---- OK ---- Applying src-normal.bundle to dst-lfs ---- - CRASHED + OK ---- Applying src-lfs.bundle to dst-normal ---- OK ---- Applying src-lfs.bundle to dst-lfs ----