##// END OF EJS Templates
changegroup: make _packmanifests() dumber...
Martin von Zweigbergk -
r28228:abf12026 default
parent child Browse files
Show More
@@ -659,20 +659,15 b' class cg1packer(object):'
659 659 rr, rl = revlog.rev, revlog.linkrev
660 660 return [n for n in missing if rl(rr(n)) not in commonrevs]
661 661
662 def _packmanifests(self, mfnodes, tmfnodes, lookuplinknode):
662 def _packmanifests(self, dir, mfnodes, lookuplinknode):
663 663 """Pack flat manifests into a changegroup stream."""
664 ml = self._repo.manifest
665 size = 0
666 for chunk in self.group(
667 mfnodes, ml, lookuplinknode, units=_('manifests')):
668 size += len(chunk)
664 assert not dir
665 for chunk in self.group(mfnodes, self._repo.manifest,
666 lookuplinknode, units=_('manifests')):
669 667 yield chunk
670 self._verbosenote(_('%8.i (manifests)\n') % size)
671 # It looks odd to assert this here, but tmfnodes doesn't get
672 # filled in until after we've called lookuplinknode for
673 # sending root manifests, so the only way to tell the streams
674 # got crossed is to check after we've done all the work.
675 assert not tmfnodes
668
669 def _manifestsdone(self):
670 return ''
676 671
677 672 def generate(self, commonrevs, clnodes, fastpathlinkrev, source):
678 673 '''yield a sequence of changegroup chunks (strings)'''
@@ -825,9 +820,15 b' class cg1packer(object):'
825 820 return clnode
826 821
827 822 mfnodes = self.prune(ml, mfs, commonrevs)
828 for x in self._packmanifests(
829 mfnodes, tmfnodes, lookupmflinknode):
823 size = 0
824 for x in self._packmanifests('', mfnodes, lookupmflinknode):
825 size += len(x)
830 826 yield x
827 self._verbosenote(_('%8.i (manifests)\n') % size)
828 for dir, nodes in tmfnodes.iteritems():
829 for x in self._packmanifests(dir, nodes, nodes.get):
830 yield x
831 yield self._manifestsdone()
831 832
832 833 # The 'source' parameter is useful for extensions
833 834 def generatefiles(self, changedfiles, linknodes, commonrevs, source):
@@ -928,23 +929,15 b' class cg3packer(cg2packer):'
928 929 version = '03'
929 930 deltaheader = _CHANGEGROUPV3_DELTA_HEADER
930 931
931 def _packmanifests(self, mfnodes, tmfnodes, lookuplinknode):
932 # Note that debug prints are super confusing in this code, as
933 # tmfnodes gets populated by the calls to lookuplinknode in
934 # the superclass's manifest packer. In the future we should
935 # probably see if we can refactor this somehow to be less
936 # confusing.
937 for x in super(cg3packer, self)._packmanifests(
938 mfnodes, {}, lookuplinknode):
939 yield x
940 dirlog = self._repo.manifest.dirlog
941 for name, nodes in tmfnodes.iteritems():
942 # For now, directory headers are simply file headers with
943 # a trailing '/' on the path (already in the name).
944 yield self.fileheader(name)
945 for chunk in self.group(nodes, dirlog(name), nodes.get):
946 yield chunk
947 yield self.close()
932 def _packmanifests(self, dir, mfnodes, lookuplinknode):
933 if dir:
934 yield self.fileheader(dir)
935 for chunk in self.group(mfnodes, self._repo.manifest.dirlog(dir),
936 lookuplinknode, units=_('manifests')):
937 yield chunk
938
939 def _manifestsdone(self):
940 return self.close()
948 941
949 942 def builddeltaheader(self, node, p1n, p2n, basenode, linknode, flags):
950 943 return struct.pack(
General Comments 0
You need to be logged in to leave comments. Login now