diff mercurial/changegroup.py @ 19325:ec896f9e8894

changegroup: fix fastpath during commit Change 627cd7842e5d dropped the 'revset' variable which kept track of which changesets were being bundled. Instead, it used "not in commonset" to decide which changesets were outgoing.. which ran into trouble when a commit was in progress.
author Matt Mackall <mpm@selenic.com>
date Wed, 19 Jun 2013 14:17:03 -0500
parents 446ab88d3f1c
children 95a49112e7ab
line wrap: on
line diff
--- a/mercurial/changegroup.py	Wed Jun 05 22:41:53 2013 +0200
+++ b/mercurial/changegroup.py	Wed Jun 19 14:17:03 2013 -0500
@@ -364,10 +364,11 @@
 
             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)
-                        if linkrev not in commonrevs:
+                        if linkrev in needed:
                             yield filerevlog.node(r), cl.node(linkrev)
                 fnodes[fname] = dict(genfilenodes())