diff -r 2dc6e09f2a7d -r d69c9510d648 mercurial/revlog.py --- a/mercurial/revlog.py Thu Mar 31 14:25:26 2011 -0500 +++ b/mercurial/revlog.py Thu Mar 31 15:24:06 2011 -0500 @@ -1058,7 +1058,7 @@ self._cache = (node, curr, text) return node - def group(self, nodelist, lookup): + def group(self, nodelist, bundler): """Calculate a delta group, yielding a sequence of changegroup chunks (strings). @@ -1074,7 +1074,7 @@ # if we don't have any revisions touched by these changesets, bail if not revs: - yield changegroup.closechunk() + yield bundler.close() return # add the parent of the first rev @@ -1085,19 +1085,18 @@ for r in xrange(len(revs) - 1): a, b = revs[r], revs[r + 1] nb = self.node(b) + p1, p2 = self.parents(nb) + prefix = '' - p = self.parents(nb) - meta = nb + p[0] + p[1] + lookup(self, nb) if a == nullrev: d = self.revision(nb) - meta += mdiff.trivialdiffheader(len(d)) + prefix = mdiff.trivialdiffheader(len(d)) else: d = self.revdiff(a, b) - yield changegroup.chunkheader(len(meta) + len(d)) - yield meta - yield d + for c in bundler.revchunk(self, nb, p1, p2, prefix, d): + yield c - yield changegroup.closechunk() + yield bundler.close() def addgroup(self, bundle, linkmapper, transaction): """