Mercurial > hg
changeset 35051:4f04c9207a76
bundlerepo: don't assume there are only two bundle classes
exchange.readbundle() can return a type that represents a stream
clone bundle. Explicitly handle the bundle1 type and raise a
reasonable error message for unhandled bundle types.
Differential Revision: https://phab.mercurial-scm.org/D1376
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 11 Nov 2017 18:14:41 -0800 |
parents | d2458ba810c5 |
children | df2a676a2e9e |
files | mercurial/bundlerepo.py |
diffstat | 1 files changed, 10 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bundlerepo.py Sat Nov 11 18:09:16 2017 -0800 +++ b/mercurial/bundlerepo.py Sat Nov 11 18:14:41 2017 -0800 @@ -296,13 +296,16 @@ if not hadchangegroup: raise error.Abort(_("No changegroups found")) - - elif self.bundle.compressed(): - f = self._writetempbundle(self.bundle.read, '.hg10un', - header='HG10UN') - self.bundlefile = self.bundle = exchange.readbundle(ui, f, - bundlepath, - self.vfs) + elif isinstance(self.bundle, changegroup.cg1unpacker): + if self.bundle.compressed(): + f = self._writetempbundle(self.bundle.read, '.hg10un', + header='HG10UN') + self.bundlefile = self.bundle = exchange.readbundle(ui, f, + bundlepath, + self.vfs) + else: + raise error.Abort(_('bundle type %s cannot be read') % + type(self.bundle)) # dict with the mapping 'filename' -> position in the bundle self.bundlefilespos = {}