equal
deleted
inserted
replaced
345 prev, curr = revs[r], revs[r + 1] |
345 prev, curr = revs[r], revs[r + 1] |
346 linknode = lookup(revlog.node(curr)) |
346 linknode = lookup(revlog.node(curr)) |
347 for c in self.revchunk(revlog, curr, prev, linknode): |
347 for c in self.revchunk(revlog, curr, prev, linknode): |
348 yield c |
348 yield c |
349 |
349 |
|
350 if units is not None: |
|
351 self._progress(msgbundling, None) |
350 yield self.close() |
352 yield self.close() |
351 |
353 |
352 # filter any nodes that claim to be part of the known set |
354 # filter any nodes that claim to be part of the known set |
353 def prune(self, revlog, missing, commonrevs): |
355 def prune(self, revlog, missing, commonrevs): |
354 rr, rl = revlog.rev, revlog.linkrev |
356 rr, rl = revlog.rev, revlog.linkrev |
358 '''yield a sequence of changegroup chunks (strings)''' |
360 '''yield a sequence of changegroup chunks (strings)''' |
359 repo = self._repo |
361 repo = self._repo |
360 cl = self._changelog |
362 cl = self._changelog |
361 ml = self._manifest |
363 ml = self._manifest |
362 reorder = self._reorder |
364 reorder = self._reorder |
363 progress = self._progress |
|
364 |
|
365 # for progress output |
|
366 msgbundling = _('bundling') |
|
367 |
365 |
368 clrevorder = {} |
366 clrevorder = {} |
369 mfs = {} # needed manifests |
367 mfs = {} # needed manifests |
370 fnodes = {} # needed file nodes |
368 fnodes = {} # needed file nodes |
371 changedfiles = set() |
369 changedfiles = set() |
386 for chunk in self.group(clnodes, cl, lookupcl, units=_('changesets'), |
384 for chunk in self.group(clnodes, cl, lookupcl, units=_('changesets'), |
387 reorder=reorder): |
385 reorder=reorder): |
388 size += len(chunk) |
386 size += len(chunk) |
389 yield chunk |
387 yield chunk |
390 self._verbosenote(_('%8.i (changelog)\n') % size) |
388 self._verbosenote(_('%8.i (changelog)\n') % size) |
391 progress(msgbundling, None) |
|
392 |
389 |
393 # Callback for the manifest, used to collect linkrevs for filelog |
390 # Callback for the manifest, used to collect linkrevs for filelog |
394 # revisions. |
391 # revisions. |
395 # Returns the linkrev node (collected in lookupcl). |
392 # Returns the linkrev node (collected in lookupcl). |
396 def lookupmf(x): |
393 def lookupmf(x): |
412 for chunk in self.group(mfnodes, ml, lookupmf, units=_('manifests'), |
409 for chunk in self.group(mfnodes, ml, lookupmf, units=_('manifests'), |
413 reorder=reorder): |
410 reorder=reorder): |
414 size += len(chunk) |
411 size += len(chunk) |
415 yield chunk |
412 yield chunk |
416 self._verbosenote(_('%8.i (manifests)\n') % size) |
413 self._verbosenote(_('%8.i (manifests)\n') % size) |
417 progress(msgbundling, None) |
|
418 |
414 |
419 mfs.clear() |
415 mfs.clear() |
420 clrevs = set(cl.rev(x) for x in clnodes) |
416 clrevs = set(cl.rev(x) for x in clnodes) |
421 |
417 |
422 def linknodes(filerevlog, fname): |
418 def linknodes(filerevlog, fname): |
433 for chunk in self.generatefiles(changedfiles, linknodes, commonrevs, |
429 for chunk in self.generatefiles(changedfiles, linknodes, commonrevs, |
434 source): |
430 source): |
435 yield chunk |
431 yield chunk |
436 |
432 |
437 yield self.close() |
433 yield self.close() |
438 progress(msgbundling, None) |
|
439 |
434 |
440 if clnodes: |
435 if clnodes: |
441 repo.hook('outgoing', node=hex(clnodes[0]), source=source) |
436 repo.hook('outgoing', node=hex(clnodes[0]), source=source) |
442 |
437 |
443 # The 'source' parameter is useful for extensions |
438 # The 'source' parameter is useful for extensions |
471 for chunk in self.group(filenodes, filerevlog, lookupfilelog, |
466 for chunk in self.group(filenodes, filerevlog, lookupfilelog, |
472 reorder=reorder): |
467 reorder=reorder): |
473 size += len(chunk) |
468 size += len(chunk) |
474 yield chunk |
469 yield chunk |
475 self._verbosenote(_('%8.i %s\n') % (size, fname)) |
470 self._verbosenote(_('%8.i %s\n') % (size, fname)) |
|
471 progress(msgbundling, None) |
476 |
472 |
477 def deltaparent(self, revlog, rev, p1, p2, prev): |
473 def deltaparent(self, revlog, rev, p1, p2, prev): |
478 return prev |
474 return prev |
479 |
475 |
480 def revchunk(self, revlog, rev, prev, linknode): |
476 def revchunk(self, revlog, rev, prev, linknode): |