--- a/mercurial/changegroup.py Fri Feb 12 23:26:15 2016 -0800
+++ b/mercurial/changegroup.py Fri Feb 12 23:30:18 2016 -0800
@@ -756,7 +756,7 @@
mfchangedfiles, fnodes):
repo = self._repo
ml = repo.manifest
- tmfnodes = {}
+ tmfnodes = {'': mfs}
# Callback for the manifest, used to collect linkrevs for filelog
# revisions.
@@ -825,17 +825,16 @@
return clnode
return lookupmflinknode
- mfnodes = self.prune(ml, mfs, commonrevs)
size = 0
- for x in self._packmanifests('', mfnodes, makelookupmflinknode('')):
- size += len(x)
- yield x
- for dir, nodes in tmfnodes.iteritems():
+ while tmfnodes:
+ dir = min(tmfnodes)
+ nodes = tmfnodes[dir]
prunednodes = self.prune(ml.dirlog(dir), nodes, commonrevs)
for x in self._packmanifests(dir, prunednodes,
makelookupmflinknode(dir)):
size += len(x)
yield x
+ del tmfnodes[dir]
self._verbosenote(_('%8.i (manifests)\n') % size)
yield self._manifestsdone()