##// END OF EJS Templates
narrow: use narrow_widen wireproto command to widen in case of ellipses...
Pulkit Goyal -
r42605:c767e655 default
parent child Browse files
Show More
@@ -146,7 +146,7 def pullbundle2extraprepare(orig, pullop
146 146 kwargs['excludepats'] = exclude
147 147 # calculate known nodes only in ellipses cases because in non-ellipses cases
148 148 # we have all the nodes
149 if wireprototypes.ELLIPSESCAP in pullop.remote.capabilities():
149 if wireprototypes.ELLIPSESCAP1 in pullop.remote.capabilities():
150 150 kwargs['known'] = [node.hex(ctx.node()) for ctx in
151 151 repo.set('::%ln', pullop.common)
152 152 if ctx.node() != node.nullid]
@@ -253,7 +253,14 def _widen(ui, repo, remote, commoninc,
253 253 # then send that information to server whether we want ellipses or not.
254 254 # Theoretically a non-ellipses repo should be able to use narrow
255 255 # functionality from an ellipses enabled server
256 ellipsesremote = wireprototypes.ELLIPSESCAP in remote.capabilities()
256 remotecap = remote.capabilities()
257 ellipsesremote = any(cap in remotecap
258 for cap in wireprototypes.SUPPORTED_ELLIPSESCAP)
259
260 # check whether we are talking to a server which supports old version of
261 # ellipses capabilities
262 isoldellipses = (ellipsesremote and wireprototypes.ELLIPSESCAP1 in
263 remotecap and wireprototypes.ELLIPSESCAP not in remotecap)
257 264
258 265 def pullbundle2extraprepare_widen(orig, pullop, kwargs):
259 266 orig(pullop, kwargs)
@@ -279,8 +286,31 def _widen(ui, repo, remote, commoninc,
279 286 with ds.parentchange():
280 287 ds.setparents(node.nullid, node.nullid)
281 288 with wrappedextraprepare:
282 with repo.ui.configoverride(overrides, 'widen'):
289 if isoldellipses:
283 290 exchange.pull(repo, remote, heads=common)
291 else:
292 known = [node.hex(ctx.node()) for ctx in
293 repo.set('::%ln', common)
294 if ctx.node() != node.nullid]
295
296 with remote.commandexecutor() as e:
297 bundle = e.callcommand('narrow_widen', {
298 'oldincludes': oldincludes,
299 'oldexcludes': oldexcludes,
300 'newincludes': newincludes,
301 'newexcludes': newexcludes,
302 'cgversion': '03',
303 'commonheads': common,
304 'known': known,
305 'ellipses': True,
306 }).result()
307 trmanager = exchange.transactionmanager(repo, 'widen',
308 remote.url())
309 with trmanager:
310 op = bundle2.bundleoperation(repo,
311 trmanager.transaction, source='widen')
312 bundle2.processbundle(repo, bundle, op=op)
313
284 314 with ds.parentchange():
285 315 ds.setparents(p1, p2)
286 316 else:
@@ -13,12 +13,15 from mercurial import (
13 13 extensions,
14 14 hg,
15 15 narrowspec,
16 node as nodemod,
16 17 pycompat,
17 18 wireprototypes,
18 19 wireprotov1peer,
19 20 wireprotov1server,
20 21 )
21 22
23 from . import narrowbundle2
24
22 25 def uisetup():
23 26 wireprotov1peer.wirepeer.narrow_widen = peernarrowwiden
24 27
@@ -69,21 +72,26 def narrow_widen(repo, proto, oldinclude
69 72 narrowspec.validatepatterns(set(newexcludes))
70 73
71 74 common = wireprototypes.decodelist(commonheads)
72 known = None
73 if known:
74 known = wireprototypes.decodelist(known)
75 known = wireprototypes.decodelist(known)
76 known = {nodemod.bin(n) for n in known}
75 77 if ellipses == '0':
76 78 ellipses = False
77 79 else:
78 80 ellipses = bool(ellipses)
79 81 cgversion = cgversion
80 newmatch = narrowspec.match(repo.root, include=newincludes,
81 exclude=newexcludes)
82 oldmatch = narrowspec.match(repo.root, include=oldincludes,
83 exclude=oldexcludes)
84 82
85 bundler = bundle2.widen_bundle(repo, oldmatch, newmatch, common, known,
86 cgversion, ellipses)
83 if not ellipses:
84 newmatch = narrowspec.match(repo.root, include=newincludes,
85 exclude=newexcludes)
86 oldmatch = narrowspec.match(repo.root, include=oldincludes,
87 exclude=oldexcludes)
88 bundler = bundle2.widen_bundle(repo, oldmatch, newmatch, common,
89 known, cgversion, ellipses)
90 else:
91 bundler = bundle2.bundle20(repo.ui)
92 narrowbundle2.generateellipsesbundle2(bundler, repo, oldincludes,
93 oldexcludes, newincludes, newexcludes, cgversion, common,
94 list(common), known, None)
87 95 except error.Abort as exc:
88 96 bundler = bundle2.bundle20(repo.ui)
89 97 manargs = [('message', pycompat.bytestr(exc))]
@@ -30,7 +30,9 SSHV2 = 'exp-ssh-v2-0003'
30 30 HTTP_WIREPROTO_V2 = 'exp-http-v2-0003'
31 31
32 32 NARROWCAP = 'exp-narrow-1'
33 ELLIPSESCAP = 'exp-ellipses-1'
33 ELLIPSESCAP1 = 'exp-ellipses-1'
34 ELLIPSESCAP = 'exp-ellipses-2'
35 SUPPORTED_ELLIPSESCAP = (ELLIPSESCAP1, ELLIPSESCAP)
34 36
35 37 # All available wire protocol transports.
36 38 TRANSPORTS = {
@@ -135,13 +135,11 widen the narrow checkout
135 135 $ hg tracked --removeexclude dir1/dirA
136 136 comparing with ssh://user@dummy/master
137 137 searching for changes
138 no changes found
139 138 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
140 139 adding changesets
141 140 adding manifests
142 141 adding file changes
143 142 added 9 changesets with 6 changes to 6 files
144 new changesets *:* (glob)
145 143 $ hg tracked
146 144 I path:dir1
147 145 I path:dir2
@@ -195,13 +193,11 widen narrow spec again, but exclude a f
195 193 deleting data/dir1/dirA/bar.i (reporevlogstore !)
196 194 deleting data/dir1/dirA/bar/0eca1d0cbdaea4651d1d04d71976a6d2d9bfaae5 (reposimplestore !)
197 195 deleting data/dir1/dirA/bar/index (reposimplestore !)
198 no changes found
199 196 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
200 197 adding changesets
201 198 adding manifests
202 199 adding file changes
203 200 added 11 changesets with 7 changes to 7 files
204 new changesets *:* (glob)
205 201 $ hg tracked
206 202 I path:dir1
207 203 I path:dir2
@@ -253,13 +249,11 widen narrow spec yet again, excluding a
253 249 deleting data/dir1/dirA/foo.i (reporevlogstore !)
254 250 deleting data/dir1/dirA/foo/162caeb3d55dceb1fee793aa631ac8c73fcb8b5e (reposimplestore !)
255 251 deleting data/dir1/dirA/foo/index (reposimplestore !)
256 no changes found
257 252 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
258 253 adding changesets
259 254 adding manifests
260 255 adding file changes
261 256 added 13 changesets with 8 changes to 8 files
262 new changesets *:* (glob)
263 257 $ hg tracked
264 258 I path:dir1
265 259 I path:dir2
@@ -312,13 +306,11 include a directory that was previously
312 306 $ hg tracked --removeexclude dir1/dirA
313 307 comparing with ssh://user@dummy/master
314 308 searching for changes
315 no changes found
316 309 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
317 310 adding changesets
318 311 adding manifests
319 312 adding file changes
320 313 added 13 changesets with 9 changes to 9 files
321 new changesets *:* (glob)
322 314 $ hg tracked
323 315 I path:dir1
324 316 I path:dir2
@@ -389,13 +381,11 clone a narrow portion of the master, su
389 381 $ hg tracked --addinclude dir1
390 382 comparing with ssh://user@dummy/master
391 383 searching for changes
392 no changes found
393 384 saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
394 385 adding changesets
395 386 adding manifests
396 387 adding file changes
397 388 added 10 changesets with 6 changes to 6 files
398 new changesets *:* (glob)
399 389 $ find * | sort
400 390 dir1
401 391 dir1/bar
@@ -145,13 +145,11 Testing the --import-rules flag of `hg t
145 145 looking for local changes to affected paths
146 146 deleting data/inside/f.i
147 147 deleting meta/inside/00manifest.i (tree !)
148 no changes found
149 148 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
150 149 adding changesets
151 150 adding manifests
152 151 adding file changes
153 152 added 2 changesets with 0 changes to 0 files
154 new changesets *:* (glob)
155 153 $ hg tracked
156 154 I path:outisde
157 155 X path:inside
@@ -166,13 +164,11 Testing the --import-rules flag with --a
166 164 $ hg tracked --import-rules specs --addinclude 'wider/'
167 165 comparing with ssh://user@dummy/master
168 166 searching for changes
169 no changes found
170 167 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
171 168 adding changesets
172 169 adding manifests
173 170 adding file changes
174 171 added 3 changesets with 1 changes to 1 files
175 new changesets *:* (glob)
176 172 $ hg tracked
177 173 I path:outisde
178 174 I path:wider
@@ -211,13 +207,11 Testing with passing a out of wdir file
211 207 $ hg tracked --import-rules ../nspecs
212 208 comparing with ssh://user@dummy/master
213 209 searching for changes
214 no changes found
215 210 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
216 211 adding changesets
217 212 adding manifests
218 213 adding file changes
219 214 added 3 changesets with 0 changes to 0 files
220 new changesets *:* (glob)
221 215
222 216 $ cd ..
223 217
@@ -95,13 +95,11 added upstream revisions.
95 95 $ hg tracked --addinclude widest/f
96 96 comparing with ssh://user@dummy/master
97 97 searching for changes
98 no changes found
99 98 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
100 99 adding changesets
101 100 adding manifests
102 101 adding file changes
103 102 added 3 changesets with 2 changes to 2 files
104 new changesets *:* (glob)
105 103 $ hg tracked
106 104 I path:inside
107 105 I path:widest/f
@@ -154,13 +152,11 widen the narrow spec to include the wid
154 152 $ hg tracked --addinclude wider
155 153 comparing with ssh://user@dummy/master
156 154 searching for changes
157 no changes found
158 155 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
159 156 adding changesets
160 157 adding manifests
161 158 adding file changes
162 159 added 8 changesets with 7 changes to 3 files
163 new changesets *:* (glob)
164 160 $ hg tracked
165 161 I path:inside
166 162 I path:wider
@@ -261,13 +257,11 make narrow clone with every third node.
261 257 $ hg tracked --addinclude d1
262 258 comparing with ssh://user@dummy/upstream
263 259 searching for changes
264 no changes found
265 260 saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
266 261 adding changesets
267 262 adding manifests
268 263 adding file changes
269 264 added 9 changesets with 5 changes to 5 files
270 new changesets *:* (glob)
271 265 $ hg tracked
272 266 I path:d0
273 267 I path:d1
@@ -342,7 +336,6 Widening that fails can be recovered fro
342 336 $ hg --config hooks.pretxnchangegroup.bad=false tracked --addinclude d1
343 337 comparing with ssh://user@dummy/upstream
344 338 searching for changes
345 no changes found
346 339 saved backup bundle to $TESTTMP/interrupted/.hg/strip-backup/*-widen.hg (glob)
347 340 adding changesets
348 341 adding manifests
@@ -290,13 +290,11 Can widen the empty clone
290 290 $ hg tracked --addinclude d0
291 291 comparing with ssh://user@dummy/master
292 292 searching for changes
293 no changes found
294 293 saved backup bundle to $TESTTMP/narrow-empty/.hg/strip-backup/*-widen.hg (glob)
295 294 adding changesets
296 295 adding manifests
297 296 adding file changes
298 297 added 3 changesets with 1 changes to 1 files
299 new changesets *:* (glob)
300 298 $ hg tracked
301 299 I path:d0
302 300 $ hg files
General Comments 0
You need to be logged in to leave comments. Login now