changeset 23891:5827ad0b849e

unbundle: support bundle2 files This adds support for bundle2 files to the unbundle command.
author Eric Sumner <ericsumner@fb.com>
date Wed, 14 Jan 2015 17:09:55 -0800
parents 7817059917d0
children f2b6f37d537b
files mercurial/commands.py tests/test-bundle2-format.t
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Fri Jan 16 12:53:45 2015 -0800
+++ b/mercurial/commands.py	Wed Jan 14 17:09:55 2015 -0800
@@ -6142,8 +6142,20 @@
         for fname in fnames:
             f = hg.openpath(ui, fname)
             gen = exchange.readbundle(ui, f, fname)
-            modheads = changegroup.addchangegroup(repo, gen, 'unbundle',
-                                                  'bundle:' + fname)
+            if isinstance(gen, bundle2.unbundle20):
+                tr = repo.transaction('unbundle')
+                try:
+                    op = bundle2.processbundle(repo, gen, lambda: tr)
+                    tr.close()
+                finally:
+                    if tr:
+                        tr.release()
+                changes = [r.get('result', 0)
+                           for r in op.records['changegroup']]
+                modheads = changegroup.combineresults(changes)
+            else:
+                modheads = changegroup.addchangegroup(repo, gen, 'unbundle',
+                                                      'bundle:' + fname)
     finally:
         lock.release()
 
--- a/tests/test-bundle2-format.t	Fri Jan 16 12:53:45 2015 -0800
+++ b/tests/test-bundle2-format.t	Wed Jan 14 17:09:55 2015 -0800
@@ -762,13 +762,11 @@
       9520eea781bcca16c1e15acc0ba14335a0e8e5ba
       eea13746799a9e0bfd88f29d3c2e9dc9389f524f
       02de42196ebee42ef284b6780a87cdc96e8eaab6
-  $ hg unbundle2 < ../rev.hg2
+  $ hg unbundle ../rev.hg2
   adding changesets
   adding manifests
   adding file changes
   added 0 changesets with 0 changes to 3 files
-  0 unread bytes
-  addchangegroup return: 1
 
 with reply