Mercurial > public > mercurial-scm > hg-stable
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 |