comparison mercurial/bundle2.py @ 35758:b996ddf5963d

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.
author Boris Feld <boris.feld@octobus.net>
date Wed, 17 Jan 2018 16:35:22 +0100
parents 2f54a3e228ff
children 7eedbd5d4880
comparison
equal deleted inserted replaced
35757:bbf7abd09ff0 35758:b996ddf5963d
162 node as nodemod, 162 node as nodemod,
163 obsolete, 163 obsolete,
164 phases, 164 phases,
165 pushkey, 165 pushkey,
166 pycompat, 166 pycompat,
167 streamclone,
167 tags, 168 tags,
168 url, 169 url,
169 util, 170 util,
170 ) 171 )
171 172
2112 # We want pushed variables to have USERVAR_ prepended so we know 2113 # We want pushed variables to have USERVAR_ prepended so we know
2113 # they came from the --pushvar flag. 2114 # they came from the --pushvar flag.
2114 key = "USERVAR_" + key 2115 key = "USERVAR_" + key
2115 hookargs[key] = value 2116 hookargs[key] = value
2116 op.addhookargs(hookargs) 2117 op.addhookargs(hookargs)
2118
2119 @parthandler('stream', ('requirements', 'filecount', 'bytecount', 'version'))
2120 def handlestreambundle(op, part):
2121
2122 version = part.params['version']
2123 if version != 'v2':
2124 raise error.Abort(_('unknown stream bundle version %s') % version)
2125 requirements = part.params['requirements'].split()
2126 filecount = int(part.params['filecount'])
2127 bytecount = int(part.params['bytecount'])
2128
2129 repo = op.repo
2130 if len(repo):
2131 msg = _('cannot apply stream clone to non empty repository')
2132 raise error.Abort(msg)
2133
2134 repo.ui.debug('applying stream bundle\n')
2135 streamclone.applybundlev2(repo, part, filecount, bytecount,
2136 requirements)
2137
2138 # new requirements = old non-format requirements +
2139 # new format-related remote requirements
2140 # requirements from the streamed-in repository
2141 repo.requirements = set(requirements) | (
2142 repo.requirements - repo.supportedformats)
2143 repo._applyopenerreqs()
2144 repo._writerequirements()