mercurial/changegroup.py
changeset 26711 0ef0aec56090
parent 26710 730f328624ab
child 26712 04176eaf911b
equal deleted inserted replaced
26710:730f328624ab 26711:0ef0aec56090
   588 
   588 
   589     # filter any nodes that claim to be part of the known set
   589     # filter any nodes that claim to be part of the known set
   590     def prune(self, revlog, missing, commonrevs):
   590     def prune(self, revlog, missing, commonrevs):
   591         rr, rl = revlog.rev, revlog.linkrev
   591         rr, rl = revlog.rev, revlog.linkrev
   592         return [n for n in missing if rl(rr(n)) not in commonrevs]
   592         return [n for n in missing if rl(rr(n)) not in commonrevs]
       
   593 
       
   594     def _packmanifests(self, mfnodes, lookuplinknode):
       
   595         """Pack flat manifests into a changegroup stream."""
       
   596         ml = self._repo.manifest
       
   597         size = 0
       
   598         for chunk in self.group(
       
   599                 mfnodes, ml, lookuplinknode, units=_('manifests')):
       
   600             size += len(chunk)
       
   601             yield chunk
       
   602         self._verbosenote(_('%8.i (manifests)\n') % size)
   593 
   603 
   594     def generate(self, commonrevs, clnodes, fastpathlinkrev, source):
   604     def generate(self, commonrevs, clnodes, fastpathlinkrev, source):
   595         '''yield a sequence of changegroup chunks (strings)'''
   605         '''yield a sequence of changegroup chunks (strings)'''
   596         repo = self._repo
   606         repo = self._repo
   597         cl = repo.changelog
   607         cl = repo.changelog
   652                         if clrevorder[clnode] < clrevorder[fclnode]:
   662                         if clrevorder[clnode] < clrevorder[fclnode]:
   653                             fclnodes[n] = clnode
   663                             fclnodes[n] = clnode
   654             return clnode
   664             return clnode
   655 
   665 
   656         mfnodes = self.prune(ml, mfs, commonrevs)
   666         mfnodes = self.prune(ml, mfs, commonrevs)
   657         size = 0
   667         for x in self._packmanifests(mfnodes, lookupmflinknode):
   658         for chunk in self.group(
   668             yield x
   659                 mfnodes, ml, lookupmflinknode, units=_('manifests')):
       
   660             size += len(chunk)
       
   661             yield chunk
       
   662         self._verbosenote(_('%8.i (manifests)\n') % size)
       
   663 
   669 
   664         mfs.clear()
   670         mfs.clear()
   665         clrevs = set(cl.rev(x) for x in clnodes)
   671         clrevs = set(cl.rev(x) for x in clnodes)
   666 
   672 
   667         def linknodes(filerevlog, fname):
   673         def linknodes(filerevlog, fname):