--- a/mercurial/bundle2.py Tue Apr 07 15:18:52 2015 -0700
+++ b/mercurial/bundle2.py Mon Apr 06 17:23:11 2015 -0700
@@ -525,12 +525,13 @@
"""return a valid unbundler object for a given header"""
if header is None:
header = changegroup.readexactly(fp, 4)
- magic, version = header[0:2], header[2:4]
- if magic != 'HG':
- raise util.Abort(_('not a Mercurial bundle'))
- if version != '2Y':
- raise util.Abort(_('unknown bundle version %s') % version)
- unbundler = unbundle20(ui, fp)
+ magic, version = header[0:2], header[2:4]
+ if magic != 'HG':
+ raise util.Abort(_('not a Mercurial bundle'))
+ unbundlerclass = formatmap.get(version)
+ if unbundlerclass is None:
+ raise util.Abort(_('unknown bundle version %s') % version)
+ unbundler = unbundlerclass(ui, fp)
ui.debug('start processing of %s stream\n' % header)
return unbundler
@@ -615,6 +616,8 @@
def compressed(self):
return False
+formatmap = {'2Y': unbundle20}
+
class bundlepart(object):
"""A bundle2 part contains application level payload