diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -1096,7 +1096,14 @@ class revlog(object): d = self.revdiff(a, b) yield changegroup.chunkheader(len(meta) + len(d)) yield meta - yield d + if len(d) > 2**20: + pos = 0 + while pos < len(d): + pos2 = pos + 2 ** 18 + yield d[pos:pos2] + pos = pos2 + else: + yield d yield changegroup.closechunk()