equal
deleted
inserted
replaced
300 if isinstance(bundle, bundle2.unbundle20): |
300 if isinstance(bundle, bundle2.unbundle20): |
301 self._bundlefile = bundle |
301 self._bundlefile = bundle |
302 |
302 |
303 cgpart = None |
303 cgpart = None |
304 for part in bundle.iterparts(seekable=True): |
304 for part in bundle.iterparts(seekable=True): |
305 if part.type == b'changegroup': |
305 if part.type == b'phase-heads': |
|
306 self._handle_bundle2_phase_part(bundle, part) |
|
307 elif part.type == b'changegroup': |
306 if cgpart: |
308 if cgpart: |
307 raise NotImplementedError( |
309 raise NotImplementedError( |
308 b"can't process multiple changegroups" |
310 b"can't process multiple changegroups" |
309 ) |
311 ) |
310 cgpart = part |
312 cgpart = part |
344 ) |
346 ) |
345 |
347 |
346 def _handle_bundle2_cg_part(self, bundle, part): |
348 def _handle_bundle2_cg_part(self, bundle, part): |
347 assert part.type == b'changegroup' |
349 assert part.type == b'changegroup' |
348 cgstream = part |
350 cgstream = part |
|
351 targetphase = part.params.get(b'targetphase') |
|
352 try: |
|
353 targetphase = int(targetphase) |
|
354 except TypeError: |
|
355 pass |
|
356 if targetphase is None: |
|
357 targetphase = phases.draft |
|
358 if targetphase not in phases.allphases: |
|
359 m = _(b'unsupported targetphase: %d') |
|
360 m %= targetphase |
|
361 raise error.Abort(m) |
349 version = part.params.get(b'version', b'01') |
362 version = part.params.get(b'version', b'01') |
350 legalcgvers = changegroup.supportedincomingversions(self) |
363 legalcgvers = changegroup.supportedincomingversions(self) |
351 if version not in legalcgvers: |
364 if version not in legalcgvers: |
352 msg = _(b'Unsupported changegroup version: %s') |
365 msg = _(b'Unsupported changegroup version: %s') |
353 raise error.Abort(msg % version) |
366 raise error.Abort(msg % version) |
358 |
371 |
359 self.firstnewrev = self.changelog.repotiprev + 1 |
372 self.firstnewrev = self.changelog.repotiprev + 1 |
360 phases.retractboundary( |
373 phases.retractboundary( |
361 self, |
374 self, |
362 None, |
375 None, |
363 phases.draft, |
376 targetphase, |
364 [ctx.node() for ctx in self[self.firstnewrev :]], |
377 [ctx.node() for ctx in self[self.firstnewrev :]], |
365 ) |
378 ) |
|
379 |
|
380 def _handle_bundle2_phase_part(self, bundle, part): |
|
381 assert part.type == b'phase-heads' |
|
382 |
|
383 unfi = self.unfiltered() |
|
384 headsbyphase = phases.binarydecode(part) |
|
385 phases.updatephases(unfi, lambda: None, headsbyphase) |
366 |
386 |
367 def _writetempbundle(self, readfn, suffix, header=b''): |
387 def _writetempbundle(self, readfn, suffix, header=b''): |
368 """Write a temporary file to disk""" |
388 """Write a temporary file to disk""" |
369 fdtemp, temp = self.vfs.mkstemp(prefix=b"hg-bundle-", suffix=suffix) |
389 fdtemp, temp = self.vfs.mkstemp(prefix=b"hg-bundle-", suffix=suffix) |
370 self.tempfile = temp |
390 self.tempfile = temp |