# HG changeset patch # User Boris Feld <boris.f...@octobus.net> # Date 1516203322 -3600 # Wed Jan 17 16:35:22 2018 +0100 # Node ID a4d9afe3a419720acb7d7d06fdfe11f8f6234b95 # Parent 2ef371994c9c4525a525c95586691d43b04ecd33 # EXP-Topic b2-stream # Available At https://bitbucket.org/octobus/mercurial-devel/ # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r a4d9afe3a419 bundle2: add a 'stream' part handler for stream cloning
The part contains the necessary arguments and payload to handle a stream bundle v2. It will be put to use in later changesets. diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py --- a/mercurial/bundle2.py +++ b/mercurial/bundle2.py @@ -164,6 +164,7 @@ from . import ( phases, pushkey, pycompat, + streamclone, tags, url, util, @@ -2114,3 +2115,30 @@ def bundle2getvars(op, part): key = "USERVAR_" + key hookargs[key] = value op.addhookargs(hookargs) + +@parthandler('stream', ('requirements', 'filecount', 'bytecount', 'version')) +def handlestreambundle(op, part): + + version = part.params['version'] + if version != 'v2': + raise error.Abort(_('unknown stream bundle version %s') % version) + requirements = part.params['requirements'].split() + filecount = int(part.params['filecount']) + bytecount = int(part.params['bytecount']) + + repo = op.repo + if len(repo): + msg = _('cannot apply stream clone to non empty repository') + raise error.Abort(msg) + + repo.ui.debug('applying stream bundle\n') + streamclone.applybundlev2(repo, part, filecount, bytecount, + requirements) + + # new requirements = old non-format requirements + + # new format-related remote requirements + # requirements from the streamed-in repository + repo.requirements = set(requirements) | ( + repo.requirements - repo.supportedformats) + repo._applyopenerreqs() + repo._writerequirements() _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel