# 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

Reply via email to