comparison mercurial/localrepo.py @ 5370:61462e7d62ed

changegroup: avoid large copies - handle chunk headers separately rather than prepending them to (potentially large) chunks - break large chunks into 1M pieces for compression - don't prepend file metadata onto (potentially large) file data
author Matt Mackall <mpm@selenic.com>
date Wed, 03 Oct 2007 17:17:28 -0500
parents 46455285c6b5
children
comparison
equal deleted inserted replaced
5369:7530334bf301 5370:61462e7d62ed
1718 else: 1718 else:
1719 msng_filenode_lst = [] 1719 msng_filenode_lst = []
1720 # If any filenodes are left, generate the group for them, 1720 # If any filenodes are left, generate the group for them,
1721 # otherwise don't bother. 1721 # otherwise don't bother.
1722 if len(msng_filenode_lst) > 0: 1722 if len(msng_filenode_lst) > 0:
1723 yield changegroup.genchunk(fname) 1723 yield changegroup.chunkheader(len(fname))
1724 yield fname
1724 # Sort the filenodes by their revision # 1725 # Sort the filenodes by their revision #
1725 msng_filenode_lst.sort(cmp_by_rev_func(filerevlog)) 1726 msng_filenode_lst.sort(cmp_by_rev_func(filerevlog))
1726 # Create a group generator and only pass in a changenode 1727 # Create a group generator and only pass in a changenode
1727 # lookup function as we need to collect no information 1728 # lookup function as we need to collect no information
1728 # from filenodes. 1729 # from filenodes.
1794 for fname in changedfiles: 1795 for fname in changedfiles:
1795 filerevlog = self.file(fname) 1796 filerevlog = self.file(fname)
1796 nodeiter = gennodelst(filerevlog) 1797 nodeiter = gennodelst(filerevlog)
1797 nodeiter = list(nodeiter) 1798 nodeiter = list(nodeiter)
1798 if nodeiter: 1799 if nodeiter:
1799 yield changegroup.genchunk(fname) 1800 yield changegroup.chunkheader(len(fname))
1801 yield fname
1800 lookup = lookuprevlink_func(filerevlog) 1802 lookup = lookuprevlink_func(filerevlog)
1801 for chnk in filerevlog.group(nodeiter, lookup): 1803 for chnk in filerevlog.group(nodeiter, lookup):
1802 yield chnk 1804 yield chnk
1803 1805
1804 yield changegroup.closechunk() 1806 yield changegroup.closechunk()