Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlog.py @ 13831:d69c9510d648
changegroup: introduce bundler objects
This makes the bundler pluggable at lower levels.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 31 Mar 2011 15:24:06 -0500 |
parents | 470ec600b525 |
children | e4bfb9c337f3 |
line wrap: on
line diff
--- 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): """