Mercurial > public > mercurial-scm > hg-stable
diff mercurial/localrepo.py @ 5368: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 | a3df02cd4a35 1b230f506346 |
line wrap: on
line diff
--- a/mercurial/localrepo.py Wed Oct 03 17:17:27 2007 -0500 +++ b/mercurial/localrepo.py Wed Oct 03 17:17:28 2007 -0500 @@ -1720,7 +1720,8 @@ # If any filenodes are left, generate the group for them, # otherwise don't bother. if len(msng_filenode_lst) > 0: - yield changegroup.genchunk(fname) + yield changegroup.chunkheader(len(fname)) + yield fname # Sort the filenodes by their revision # msng_filenode_lst.sort(cmp_by_rev_func(filerevlog)) # Create a group generator and only pass in a changenode @@ -1796,7 +1797,8 @@ nodeiter = gennodelst(filerevlog) nodeiter = list(nodeiter) if nodeiter: - yield changegroup.genchunk(fname) + yield changegroup.chunkheader(len(fname)) + yield fname lookup = lookuprevlink_func(filerevlog) for chnk in filerevlog.group(nodeiter, lookup): yield chnk