# HG changeset patch # User Gregory Szorc # Date 2017-11-12 02:14:41 # Node ID 4f04c9207a7618be3f1237866fa3d6e02db452df # Parent d2458ba810c517f4661c0729ce51017fc9e66c72 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 diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py --- a/mercurial/bundlerepo.py +++ b/mercurial/bundlerepo.py @@ -296,13 +296,16 @@ class bundlerepository(localrepo.localre 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 = {}