# HG changeset patch # User Antoine Pitrou # Date 1378581600 -7200 # Node ID fd4f612f7cb6413940d4cf2052334cd23f60e042 # Parent 26ddce1a2a55809d430498f4ed1fa9594c390885 bundle: fix performance regression when bundling file changes (issue4031) Somewhere before 2.7, a change [ec896f9e8894] was committed that entailed a large performance regression when bundling (and therefore remote cloning) repositories. For each file in the repository, it would recompute the set of needed changesets even though it is the same for all files. This computation would dominate bundle runtimes according to profiler output (by 10x or more). diff -r 26ddce1a2a55 -r fd4f612f7cb6 mercurial/changegroup.py --- a/mercurial/changegroup.py Tue Aug 06 00:52:06 2013 +0400 +++ b/mercurial/changegroup.py Sat Sep 07 21:20:00 2013 +0200 @@ -354,11 +354,11 @@ progress(msgbundling, None) mfs.clear() + needed = set(cl.rev(x) for x in clnodes) def linknodes(filerevlog, fname): if fastpathlinkrev: ln, llr = filerevlog.node, filerevlog.linkrev - needed = set(cl.rev(x) for x in clnodes) def genfilenodes(): for r in filerevlog: linkrev = llr(r)