comparison mercurial/bundlerepo.py @ 50238:21f876895dfe

bundlerepo: handle changegroup induced phase movement in the associated method These movement comes from handling the changegroup part, so we keeps the code grouped. This will be important when handling more part (and more changegroup part in the future) This induce a small code duplication, but it does not looks terrible.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 23 Feb 2023 19:07:58 +0100
parents a6a8946d5173
children 197204dba8a2
comparison
equal deleted inserted replaced
50237:a6a8946d5173 50238:21f876895dfe
325 else: 325 else:
326 raise error.Abort( 326 raise error.Abort(
327 _(b'bundle type %s cannot be read') % type(bundle) 327 _(b'bundle type %s cannot be read') % type(bundle)
328 ) 328 )
329 329
330 def _handle_bundle1(self, bundle, bundlepath):
331 if bundle.compressed():
332 f = self._writetempbundle(bundle.read, b'.hg10un', header=b'HG10UN')
333 bundle = exchange.readbundle(self.ui, f, bundlepath, self.vfs)
334
335 self._bundlefile = bundle
336 self._cgunpacker = bundle
337
330 self.firstnewrev = self.changelog.repotiprev + 1 338 self.firstnewrev = self.changelog.repotiprev + 1
331 phases.retractboundary( 339 phases.retractboundary(
332 self, 340 self,
333 None, 341 None,
334 phases.draft, 342 phases.draft,
335 [ctx.node() for ctx in self[self.firstnewrev :]], 343 [ctx.node() for ctx in self[self.firstnewrev :]],
336 ) 344 )
337
338 def _handle_bundle1(self, bundle, bundlepath):
339 if bundle.compressed():
340 f = self._writetempbundle(bundle.read, b'.hg10un', header=b'HG10UN')
341 bundle = exchange.readbundle(self.ui, f, bundlepath, self.vfs)
342
343 self._bundlefile = bundle
344 self._cgunpacker = bundle
345 345
346 def _handle_bundle2_cg_part(self, bundle, part): 346 def _handle_bundle2_cg_part(self, bundle, part):
347 assert part.type == b'changegroup' 347 assert part.type == b'changegroup'
348 cgstream = part 348 cgstream = part
349 version = part.params.get(b'version', b'01') 349 version = part.params.get(b'version', b'01')
353 raise error.Abort(msg % version) 353 raise error.Abort(msg % version)
354 if bundle.compressed(): 354 if bundle.compressed():
355 cgstream = self._writetempbundle(part.read, b'.cg%sun' % version) 355 cgstream = self._writetempbundle(part.read, b'.cg%sun' % version)
356 356
357 self._cgunpacker = changegroup.getunbundler(version, cgstream, b'UN') 357 self._cgunpacker = changegroup.getunbundler(version, cgstream, b'UN')
358
359 self.firstnewrev = self.changelog.repotiprev + 1
360 phases.retractboundary(
361 self,
362 None,
363 phases.draft,
364 [ctx.node() for ctx in self[self.firstnewrev :]],
365 )
358 366
359 def _writetempbundle(self, readfn, suffix, header=b''): 367 def _writetempbundle(self, readfn, suffix, header=b''):
360 """Write a temporary file to disk""" 368 """Write a temporary file to disk"""
361 fdtemp, temp = self.vfs.mkstemp(prefix=b"hg-bundle-", suffix=suffix) 369 fdtemp, temp = self.vfs.mkstemp(prefix=b"hg-bundle-", suffix=suffix)
362 self.tempfile = temp 370 self.tempfile = temp