mercurial/changegroup.py
changeset 24901 e9edd53770fb
parent 24900 59d1bf41af85
child 24910 80a711e91507
equal deleted inserted replaced
24900:59d1bf41af85 24901:e9edd53770fb
   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):