mercurial/localrepo.py
changeset 14365 a8e3931e3fb5
parent 14363 82f3b0f3f0a5
child 14434 cc8c09855d19
--- a/mercurial/localrepo.py	Wed May 18 23:11:34 2011 +0200
+++ b/mercurial/localrepo.py	Wed May 18 23:26:26 2011 +0200
@@ -1544,18 +1544,23 @@
                 return fstate[1][x]
 
         bundler = changegroup.bundle10(lookup)
+        reorder = self.ui.config('bundle', 'reorder', 'auto')
+        if reorder == 'auto':
+            reorder = None
+        else:
+            reorder = util.parsebool(reorder)
 
         def gengroup():
             # Create a changenode group generator that will call our functions
             # back to lookup the owning changenode and collect information.
-            for chunk in cl.group(csets, bundler):
+            for chunk in cl.group(csets, bundler, reorder=reorder):
                 yield chunk
             self.ui.progress(_('bundling'), None)
 
             # Create a generator for the manifestnodes that calls our lookup
             # and data collection functions back.
             count[0] = 0
-            for chunk in mf.group(prune(mf, mfs), bundler):
+            for chunk in mf.group(prune(mf, mfs), bundler, reorder=reorder):
                 yield chunk
             self.ui.progress(_('bundling'), None)
 
@@ -1572,7 +1577,7 @@
                 first = True
 
                 for chunk in filerevlog.group(prune(filerevlog, fstate[1]),
-                                              bundler):
+                                              bundler, reorder=reorder):
                     if first:
                         if chunk == bundler.close():
                             break
@@ -1640,17 +1645,22 @@
                 return cl.node(revlog.linkrev(revlog.rev(x)))
 
         bundler = changegroup.bundle10(lookup)
+        reorder = self.ui.config('bundle', 'reorder', 'auto')
+        if reorder == 'auto':
+            reorder = None
+        else:
+            reorder = util.parsebool(reorder)
 
         def gengroup():
             '''yield a sequence of changegroup chunks (strings)'''
             # construct a list of all changed files
 
-            for chunk in cl.group(nodes, bundler):
+            for chunk in cl.group(nodes, bundler, reorder=reorder):
                 yield chunk
             self.ui.progress(_('bundling'), None)
 
             count[0] = 0
-            for chunk in mf.group(gennodelst(mf), bundler):
+            for chunk in mf.group(gennodelst(mf), bundler, reorder=reorder):
                 yield chunk
             self.ui.progress(_('bundling'), None)
 
@@ -1661,7 +1671,8 @@
                     raise util.Abort(_("empty or missing revlog for %s") % fname)
                 fstate[0] = fname
                 first = True
-                for chunk in filerevlog.group(gennodelst(filerevlog), bundler):
+                for chunk in filerevlog.group(gennodelst(filerevlog), bundler,
+                                              reorder=reorder):
                     if first:
                         if chunk == bundler.close():
                             break