mercurial/bundlerepo.py
changeset 33889 f672d060a931
parent 33888 891118dcd279
child 34219 21fc747e1bc5
equal deleted inserted replaced
33888:891118dcd279 33889:f672d060a931
   281         self.tempfile = None
   281         self.tempfile = None
   282         f = util.posixfile(bundlename, "rb")
   282         f = util.posixfile(bundlename, "rb")
   283         self.bundlefile = self.bundle = exchange.readbundle(ui, f, bundlename)
   283         self.bundlefile = self.bundle = exchange.readbundle(ui, f, bundlename)
   284 
   284 
   285         if isinstance(self.bundle, bundle2.unbundle20):
   285         if isinstance(self.bundle, bundle2.unbundle20):
   286             cgstream = None
   286             hadchangegroup = False
   287             for part in self.bundle.iterparts():
   287             for part in self.bundle.iterparts():
   288                 if part.type == 'changegroup':
   288                 if part.type == 'changegroup':
   289                     if cgstream is not None:
   289                     if hadchangegroup:
   290                         raise NotImplementedError("can't process "
   290                         raise NotImplementedError("can't process "
   291                                                   "multiple changegroups")
   291                                                   "multiple changegroups")
   292                     cgstream = part
   292                     hadchangegroup = True
   293                     version = part.params.get('version', '01')
   293 
   294                     legalcgvers = changegroup.supportedincomingversions(self)
   294                 self._handlebundle2part(part)
   295                     if version not in legalcgvers:
   295 
   296                         msg = _('Unsupported changegroup version: %s')
   296             if not hadchangegroup:
   297                         raise error.Abort(msg % version)
   297                 raise error.Abort(_("No changegroups found"))
   298                     if self.bundle.compressed():
       
   299                         cgstream = self._writetempbundle(part.read,
       
   300                                                          ".cg%sun" % version)
       
   301 
       
   302             if cgstream is None:
       
   303                 raise error.Abort(_('No changegroups found'))
       
   304 
       
   305             self.bundle = changegroup.getunbundler(version, cgstream, 'UN')
       
   306 
   298 
   307         elif self.bundle.compressed():
   299         elif self.bundle.compressed():
   308             f = self._writetempbundle(self.bundle.read, '.hg10un',
   300             f = self._writetempbundle(self.bundle.read, '.hg10un',
   309                                       header='HG10UN')
   301                                       header='HG10UN')
   310             self.bundlefile = self.bundle = exchange.readbundle(ui, f,
   302             self.bundlefile = self.bundle = exchange.readbundle(ui, f,
   315         self.bundlefilespos = {}
   307         self.bundlefilespos = {}
   316 
   308 
   317         self.firstnewrev = self.changelog.repotiprev + 1
   309         self.firstnewrev = self.changelog.repotiprev + 1
   318         phases.retractboundary(self, None, phases.draft,
   310         phases.retractboundary(self, None, phases.draft,
   319                                [ctx.node() for ctx in self[self.firstnewrev:]])
   311                                [ctx.node() for ctx in self[self.firstnewrev:]])
       
   312 
       
   313     def _handlebundle2part(self, part):
       
   314         if part.type == 'changegroup':
       
   315             cgstream = part
       
   316             version = part.params.get('version', '01')
       
   317             legalcgvers = changegroup.supportedincomingversions(self)
       
   318             if version not in legalcgvers:
       
   319                 msg = _('Unsupported changegroup version: %s')
       
   320                 raise error.Abort(msg % version)
       
   321             if self.bundle.compressed():
       
   322                 cgstream = self._writetempbundle(part.read,
       
   323                                                  ".cg%sun" % version)
       
   324 
       
   325             self.bundle = changegroup.getunbundler(version, cgstream, 'UN')
   320 
   326 
   321     def _writetempbundle(self, readfn, suffix, header=''):
   327     def _writetempbundle(self, readfn, suffix, header=''):
   322         """Write a temporary file to disk
   328         """Write a temporary file to disk
   323         """
   329         """
   324         fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-",
   330         fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-",