[PATCH 3 of 3] unbundle20: move header parsing into the 'getunbundler' function
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Tue Apr 7 01:30:54 CDT 2015
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1428361638 25200
# Mon Apr 06 16:07:18 2015 -0700
# Node ID 90af15d249d4fb90d0248cc25a81f781bf92a133
# Parent 37b1e89e2ffcbd8a8851cb7c84404d47c6dc8e56
unbundle20: move header parsing into the 'getunbundler' function
The dispatching will be based on the header content, so we need to move this
logic in the factory function.
diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -521,30 +521,31 @@ class unpackermixin(object):
if util.safehasattr(self._fp, 'close'):
return self._fp.close()
def getunbundler(ui, fp, header=None):
"""return a valid unbundler object for a given header"""
- return unbundle20(ui, fp, 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)
+ ui.debug('start processing of %s stream\n' % header)
+ return unbundler
class unbundle20(unpackermixin):
"""interpret a bundle2 stream
This class is fed with a binary stream and yields parts through its
`iterparts` methods."""
- def __init__(self, ui, fp, header=None):
+ def __init__(self, ui, fp):
"""If header is specified, we do not read it out of the stream."""
self.ui = ui
super(unbundle20, self).__init__(fp)
- if header is None:
- header = self._readexact(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)
- self.ui.debug('start processing of %s stream\n' % header)
@util.propertycache
def params(self):
"""dictionary of stream level parameters"""
self.ui.debug('reading bundle2 stream parameters\n')
More information about the Mercurial-devel
mailing list