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