bundle2: feed a unbundle20 to the `processbundle` function
authorPierre-Yves David <pierre-yves.david@fb.com>
Wed, 02 Apr 2014 13:50:57 -0700
changeset 20947 c33d7bf53812
parent 20946 e910336539f7
child 20948 329cd74b52bd
bundle2: feed a unbundle20 to the `processbundle` function The unbundle can comes from multiple sources. (on disk file, peer, etc) and (ultimately) of multiple type (bundle10, bundle20). The `processbundle` is no longer in charge of creating the bundle.
mercurial/bundle2.py
tests/test-bundle2.t
--- a/mercurial/bundle2.py	Thu Apr 03 17:25:47 2014 -0700
+++ b/mercurial/bundle2.py	Wed Apr 02 13:50:57 2014 -0700
@@ -183,15 +183,11 @@
         return func
     return _decorator
 
-def processbundle(repo, stream):
+def processbundle(repo, unbundler):
     """This function process a bundle, apply effect to/from a repo
 
-    Currently it:
-    - parse a stream into an unbundle20 object
-    - iterate over each parts then search and use the proper handling code to
-      process the part.
-
-    Parts are processes in order.
+    It iterates over each part then searches for and uses the proper handling
+    code to process the part. Parts are processed in order.
 
     This is very early version of this function that will be strongly reworked
     before final usage.
@@ -199,11 +195,6 @@
     Unknown Mandatory part will abort the process.
     """
     ui = repo.ui
-    # Extraction of the unbundler object will most likely change. It may be
-    # done outside of this function, the unbundler would be passed as argument.
-    # in all case the unbundler will eventually be created by a
-    # `changegroup.readbundle` style function.
-    unbundler = unbundle20(ui, stream)
     # todo:
     # - replace this is a init function soon.
     # - exception catching
--- a/tests/test-bundle2.t	Thu Apr 03 17:25:47 2014 -0700
+++ b/tests/test-bundle2.t	Wed Apr 02 13:50:57 2014 -0700
@@ -74,7 +74,8 @@
   >     try:
   >         lock = repo.lock()
   >         try:
-  >             bundle2.processbundle(repo, sys.stdin)
+  >             unbundler = bundle2.unbundle20(ui, sys.stdin)
+  >             bundle2.processbundle(repo, unbundler)
   >         except KeyError, exc:
   >             raise util.Abort('missing support for %s' % exc)
   >     finally: