##// END OF EJS Templates
test: enforce v1 type in 'test-bundle2-format.t'...
Pierre-Yves David -
r26772:d9a0cf97 default
parent child Browse files
Show More
@@ -1,1230 +1,1230 b''
1 1 This test is dedicated to test the bundle2 container format
2 2
3 3 It test multiple existing parts to test different feature of the container. You
4 4 probably do not need to touch this test unless you change the binary encoding
5 5 of the bundle2 format itself.
6 6
7 7 Create an extension to test bundle2 API
8 8
9 9 $ cat > bundle2.py << EOF
10 10 > """A small extension to test bundle2 implementation
11 11 >
12 12 > Current bundle2 implementation is far too limited to be used in any core
13 13 > code. We still need to be able to test it while it grow up.
14 14 > """
15 15 >
16 16 > import sys, os
17 17 > from mercurial import cmdutil
18 18 > from mercurial import util
19 19 > from mercurial import bundle2
20 20 > from mercurial import scmutil
21 21 > from mercurial import discovery
22 22 > from mercurial import changegroup
23 23 > from mercurial import error
24 24 > from mercurial import obsolete
25 25 >
26 26 >
27 27 > try:
28 28 > import msvcrt
29 29 > msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
30 30 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
31 31 > msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
32 32 > except ImportError:
33 33 > pass
34 34 >
35 35 > cmdtable = {}
36 36 > command = cmdutil.command(cmdtable)
37 37 >
38 38 > ELEPHANTSSONG = """Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
39 39 > Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
40 40 > Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko."""
41 41 > assert len(ELEPHANTSSONG) == 178 # future test say 178 bytes, trust it.
42 42 >
43 43 > @bundle2.parthandler('test:song')
44 44 > def songhandler(op, part):
45 45 > """handle a "test:song" bundle2 part, printing the lyrics on stdin"""
46 46 > op.ui.write('The choir starts singing:\n')
47 47 > verses = 0
48 48 > for line in part.read().split('\n'):
49 49 > op.ui.write(' %s\n' % line)
50 50 > verses += 1
51 51 > op.records.add('song', {'verses': verses})
52 52 >
53 53 > @bundle2.parthandler('test:ping')
54 54 > def pinghandler(op, part):
55 55 > op.ui.write('received ping request (id %i)\n' % part.id)
56 56 > if op.reply is not None and 'ping-pong' in op.reply.capabilities:
57 57 > op.ui.write_err('replying to ping request (id %i)\n' % part.id)
58 58 > op.reply.newpart('test:pong', [('in-reply-to', str(part.id))],
59 59 > mandatory=False)
60 60 >
61 61 > @bundle2.parthandler('test:debugreply')
62 62 > def debugreply(op, part):
63 63 > """print data about the capacity of the bundle reply"""
64 64 > if op.reply is None:
65 65 > op.ui.write('debugreply: no reply\n')
66 66 > else:
67 67 > op.ui.write('debugreply: capabilities:\n')
68 68 > for cap in sorted(op.reply.capabilities):
69 69 > op.ui.write('debugreply: %r\n' % cap)
70 70 > for val in op.reply.capabilities[cap]:
71 71 > op.ui.write('debugreply: %r\n' % val)
72 72 >
73 73 > @command('bundle2',
74 74 > [('', 'param', [], 'stream level parameter'),
75 75 > ('', 'unknown', False, 'include an unknown mandatory part in the bundle'),
76 76 > ('', 'unknownparams', False, 'include an unknown part parameters in the bundle'),
77 77 > ('', 'parts', False, 'include some arbitrary parts to the bundle'),
78 78 > ('', 'reply', False, 'produce a reply bundle'),
79 79 > ('', 'pushrace', False, 'includes a check:head part with unknown nodes'),
80 80 > ('', 'genraise', False, 'includes a part that raise an exception during generation'),
81 81 > ('', 'timeout', False, 'emulate a timeout during bundle generation'),
82 82 > ('r', 'rev', [], 'includes those changeset in the bundle'),
83 83 > ('', 'compress', '', 'compress the stream'),],
84 84 > '[OUTPUTFILE]')
85 85 > def cmdbundle2(ui, repo, path=None, **opts):
86 86 > """write a bundle2 container on standard output"""
87 87 > bundler = bundle2.bundle20(ui)
88 88 > for p in opts['param']:
89 89 > p = p.split('=', 1)
90 90 > try:
91 91 > bundler.addparam(*p)
92 92 > except ValueError, exc:
93 93 > raise error.Abort('%s' % exc)
94 94 >
95 95 > if opts['compress']:
96 96 > bundler.setcompression(opts['compress'])
97 97 >
98 98 > if opts['reply']:
99 99 > capsstring = 'ping-pong\nelephants=babar,celeste\ncity%3D%21=celeste%2Cville'
100 100 > bundler.newpart('replycaps', data=capsstring)
101 101 >
102 102 > if opts['pushrace']:
103 103 > # also serve to test the assignement of data outside of init
104 104 > part = bundler.newpart('check:heads')
105 105 > part.data = '01234567890123456789'
106 106 >
107 107 > revs = opts['rev']
108 108 > if 'rev' in opts:
109 109 > revs = scmutil.revrange(repo, opts['rev'])
110 110 > if revs:
111 111 > # very crude version of a changegroup part creation
112 112 > bundled = repo.revs('%ld::%ld', revs, revs)
113 113 > headmissing = [c.node() for c in repo.set('heads(%ld)', revs)]
114 114 > headcommon = [c.node() for c in repo.set('parents(%ld) - %ld', revs, revs)]
115 115 > outgoing = discovery.outgoing(repo.changelog, headcommon, headmissing)
116 116 > cg = changegroup.getlocalchangegroup(repo, 'test:bundle2', outgoing, None)
117 117 > bundler.newpart('changegroup', data=cg.getchunks(),
118 118 > mandatory=False)
119 119 >
120 120 > if opts['parts']:
121 121 > bundler.newpart('test:empty', mandatory=False)
122 122 > # add a second one to make sure we handle multiple parts
123 123 > bundler.newpart('test:empty', mandatory=False)
124 124 > bundler.newpart('test:song', data=ELEPHANTSSONG, mandatory=False)
125 125 > bundler.newpart('test:debugreply', mandatory=False)
126 126 > mathpart = bundler.newpart('test:math')
127 127 > mathpart.addparam('pi', '3.14')
128 128 > mathpart.addparam('e', '2.72')
129 129 > mathpart.addparam('cooking', 'raw', mandatory=False)
130 130 > mathpart.data = '42'
131 131 > mathpart.mandatory = False
132 132 > # advisory known part with unknown mandatory param
133 133 > bundler.newpart('test:song', [('randomparam','')], mandatory=False)
134 134 > if opts['unknown']:
135 135 > bundler.newpart('test:unknown', data='some random content')
136 136 > if opts['unknownparams']:
137 137 > bundler.newpart('test:song', [('randomparams', '')])
138 138 > if opts['parts']:
139 139 > bundler.newpart('test:ping', mandatory=False)
140 140 > if opts['genraise']:
141 141 > def genraise():
142 142 > yield 'first line\n'
143 143 > raise RuntimeError('Someone set up us the bomb!')
144 144 > bundler.newpart('output', data=genraise(), mandatory=False)
145 145 >
146 146 > if path is None:
147 147 > file = sys.stdout
148 148 > else:
149 149 > file = open(path, 'wb')
150 150 >
151 151 > if opts['timeout']:
152 152 > bundler.newpart('test:song', data=ELEPHANTSSONG, mandatory=False)
153 153 > for idx, junk in enumerate(bundler.getchunks()):
154 154 > ui.write('%d chunk\n' % idx)
155 155 > if idx > 4:
156 156 > # This throws a GeneratorExit inside the generator, which
157 157 > # can cause problems if the exception-recovery code is
158 158 > # too zealous. It's important for this test that the break
159 159 > # occur while we're in the middle of a part.
160 160 > break
161 161 > ui.write('fake timeout complete.\n')
162 162 > return
163 163 > try:
164 164 > for chunk in bundler.getchunks():
165 165 > file.write(chunk)
166 166 > except RuntimeError, exc:
167 167 > raise error.Abort(exc)
168 168 >
169 169 > @command('unbundle2', [], '')
170 170 > def cmdunbundle2(ui, repo, replypath=None):
171 171 > """process a bundle2 stream from stdin on the current repo"""
172 172 > try:
173 173 > tr = None
174 174 > lock = repo.lock()
175 175 > tr = repo.transaction('processbundle')
176 176 > try:
177 177 > unbundler = bundle2.getunbundler(ui, sys.stdin)
178 178 > op = bundle2.processbundle(repo, unbundler, lambda: tr)
179 179 > tr.close()
180 180 > except error.BundleValueError, exc:
181 181 > raise error.Abort('missing support for %s' % exc)
182 182 > except error.PushRaced, exc:
183 183 > raise error.Abort('push race: %s' % exc)
184 184 > finally:
185 185 > if tr is not None:
186 186 > tr.release()
187 187 > lock.release()
188 188 > remains = sys.stdin.read()
189 189 > ui.write('%i unread bytes\n' % len(remains))
190 190 > if op.records['song']:
191 191 > totalverses = sum(r['verses'] for r in op.records['song'])
192 192 > ui.write('%i total verses sung\n' % totalverses)
193 193 > for rec in op.records['changegroup']:
194 194 > ui.write('addchangegroup return: %i\n' % rec['return'])
195 195 > if op.reply is not None and replypath is not None:
196 196 > file = open(replypath, 'wb')
197 197 > for chunk in op.reply.getchunks():
198 198 > file.write(chunk)
199 199 >
200 200 > @command('statbundle2', [], '')
201 201 > def cmdstatbundle2(ui, repo):
202 202 > """print statistic on the bundle2 container read from stdin"""
203 203 > unbundler = bundle2.getunbundler(ui, sys.stdin)
204 204 > try:
205 205 > params = unbundler.params
206 206 > except error.BundleValueError, exc:
207 207 > raise error.Abort('unknown parameters: %s' % exc)
208 208 > ui.write('options count: %i\n' % len(params))
209 209 > for key in sorted(params):
210 210 > ui.write('- %s\n' % key)
211 211 > value = params[key]
212 212 > if value is not None:
213 213 > ui.write(' %s\n' % value)
214 214 > count = 0
215 215 > for p in unbundler.iterparts():
216 216 > count += 1
217 217 > ui.write(' :%s:\n' % p.type)
218 218 > ui.write(' mandatory: %i\n' % len(p.mandatoryparams))
219 219 > ui.write(' advisory: %i\n' % len(p.advisoryparams))
220 220 > ui.write(' payload: %i bytes\n' % len(p.read()))
221 221 > ui.write('parts count: %i\n' % count)
222 222 > EOF
223 223 $ cat >> $HGRCPATH << EOF
224 224 > [extensions]
225 225 > bundle2=$TESTTMP/bundle2.py
226 226 > [experimental]
227 227 > bundle2-exp=True
228 228 > evolution=createmarkers
229 229 > [ui]
230 230 > ssh=python "$TESTDIR/dummyssh"
231 231 > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline}
232 232 > [web]
233 233 > push_ssl = false
234 234 > allow_push = *
235 235 > [phases]
236 236 > publish=False
237 237 > EOF
238 238
239 239 The extension requires a repo (currently unused)
240 240
241 241 $ hg init main
242 242 $ cd main
243 243 $ touch a
244 244 $ hg add a
245 245 $ hg commit -m 'a'
246 246
247 247
248 248 Empty bundle
249 249 =================
250 250
251 251 - no option
252 252 - no parts
253 253
254 254 Test bundling
255 255
256 256 $ hg bundle2 | f --hexdump
257 257
258 258 0000: 48 47 32 30 00 00 00 00 00 00 00 00 |HG20........|
259 259
260 260 Test timeouts during bundling
261 261 $ hg bundle2 --timeout --debug --config devel.bundle2.debug=yes
262 262 bundle2-output-bundle: "HG20", 1 parts total
263 263 bundle2-output: start emission of HG20 stream
264 264 0 chunk
265 265 bundle2-output: bundle parameter:
266 266 1 chunk
267 267 bundle2-output: start of parts
268 268 bundle2-output: bundle part: "test:song"
269 269 bundle2-output-part: "test:song" (advisory) 178 bytes payload
270 270 bundle2-output: part 0: "test:song"
271 271 bundle2-output: header chunk size: 16
272 272 2 chunk
273 273 3 chunk
274 274 bundle2-output: payload chunk size: 178
275 275 4 chunk
276 276 5 chunk
277 277 bundle2-generatorexit
278 278 fake timeout complete.
279 279
280 280 Test unbundling
281 281
282 282 $ hg bundle2 | hg statbundle2
283 283 options count: 0
284 284 parts count: 0
285 285
286 286 Test old style bundle are detected and refused
287 287
288 $ hg bundle --all ../bundle.hg
288 $ hg bundle --all --type v1 ../bundle.hg
289 289 1 changesets found
290 290 $ hg statbundle2 < ../bundle.hg
291 291 abort: unknown bundle version 10
292 292 [255]
293 293
294 294 Test parameters
295 295 =================
296 296
297 297 - some options
298 298 - no parts
299 299
300 300 advisory parameters, no value
301 301 -------------------------------
302 302
303 303 Simplest possible parameters form
304 304
305 305 Test generation simple option
306 306
307 307 $ hg bundle2 --param 'caution' | f --hexdump
308 308
309 309 0000: 48 47 32 30 00 00 00 07 63 61 75 74 69 6f 6e 00 |HG20....caution.|
310 310 0010: 00 00 00 |...|
311 311
312 312 Test unbundling
313 313
314 314 $ hg bundle2 --param 'caution' | hg statbundle2
315 315 options count: 1
316 316 - caution
317 317 parts count: 0
318 318
319 319 Test generation multiple option
320 320
321 321 $ hg bundle2 --param 'caution' --param 'meal' | f --hexdump
322 322
323 323 0000: 48 47 32 30 00 00 00 0c 63 61 75 74 69 6f 6e 20 |HG20....caution |
324 324 0010: 6d 65 61 6c 00 00 00 00 |meal....|
325 325
326 326 Test unbundling
327 327
328 328 $ hg bundle2 --param 'caution' --param 'meal' | hg statbundle2
329 329 options count: 2
330 330 - caution
331 331 - meal
332 332 parts count: 0
333 333
334 334 advisory parameters, with value
335 335 -------------------------------
336 336
337 337 Test generation
338 338
339 339 $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 'elephants' | f --hexdump
340 340
341 341 0000: 48 47 32 30 00 00 00 1c 63 61 75 74 69 6f 6e 20 |HG20....caution |
342 342 0010: 6d 65 61 6c 3d 76 65 67 61 6e 20 65 6c 65 70 68 |meal=vegan eleph|
343 343 0020: 61 6e 74 73 00 00 00 00 |ants....|
344 344
345 345 Test unbundling
346 346
347 347 $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 'elephants' | hg statbundle2
348 348 options count: 3
349 349 - caution
350 350 - elephants
351 351 - meal
352 352 vegan
353 353 parts count: 0
354 354
355 355 parameter with special char in value
356 356 ---------------------------------------------------
357 357
358 358 Test generation
359 359
360 360 $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple | f --hexdump
361 361
362 362 0000: 48 47 32 30 00 00 00 29 65 25 37 43 25 32 31 25 |HG20...)e%7C%21%|
363 363 0010: 32 30 37 2f 3d 62 61 62 61 72 25 32 35 25 32 33 |207/=babar%25%23|
364 364 0020: 25 33 44 25 33 44 74 75 74 75 20 73 69 6d 70 6c |%3D%3Dtutu simpl|
365 365 0030: 65 00 00 00 00 |e....|
366 366
367 367 Test unbundling
368 368
369 369 $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple | hg statbundle2
370 370 options count: 2
371 371 - e|! 7/
372 372 babar%#==tutu
373 373 - simple
374 374 parts count: 0
375 375
376 376 Test unknown mandatory option
377 377 ---------------------------------------------------
378 378
379 379 $ hg bundle2 --param 'Gravity' | hg statbundle2
380 380 abort: unknown parameters: Stream Parameter - Gravity
381 381 [255]
382 382
383 383 Test debug output
384 384 ---------------------------------------------------
385 385
386 386 bundling debug
387 387
388 388 $ hg bundle2 --debug --param 'e|! 7/=babar%#==tutu' --param simple ../out.hg2 --config progress.debug=true --config devel.bundle2.debug=true
389 389 bundle2-output-bundle: "HG20", (2 params) 0 parts total
390 390 bundle2-output: start emission of HG20 stream
391 391 bundle2-output: bundle parameter: e%7C%21%207/=babar%25%23%3D%3Dtutu simple
392 392 bundle2-output: start of parts
393 393 bundle2-output: end of bundle
394 394
395 395 file content is ok
396 396
397 397 $ f --hexdump ../out.hg2
398 398 ../out.hg2:
399 399 0000: 48 47 32 30 00 00 00 29 65 25 37 43 25 32 31 25 |HG20...)e%7C%21%|
400 400 0010: 32 30 37 2f 3d 62 61 62 61 72 25 32 35 25 32 33 |207/=babar%25%23|
401 401 0020: 25 33 44 25 33 44 74 75 74 75 20 73 69 6d 70 6c |%3D%3Dtutu simpl|
402 402 0030: 65 00 00 00 00 |e....|
403 403
404 404 unbundling debug
405 405
406 406 $ hg statbundle2 --debug --config progress.debug=true --config devel.bundle2.debug=true < ../out.hg2
407 407 bundle2-input: start processing of HG20 stream
408 408 bundle2-input: reading bundle2 stream parameters
409 409 bundle2-input: ignoring unknown parameter 'e|! 7/'
410 410 bundle2-input: ignoring unknown parameter 'simple'
411 411 options count: 2
412 412 - e|! 7/
413 413 babar%#==tutu
414 414 - simple
415 415 bundle2-input: start extraction of bundle2 parts
416 416 bundle2-input: part header size: 0
417 417 bundle2-input: end of bundle2 stream
418 418 parts count: 0
419 419
420 420
421 421 Test buggy input
422 422 ---------------------------------------------------
423 423
424 424 empty parameter name
425 425
426 426 $ hg bundle2 --param '' --quiet
427 427 abort: empty parameter name
428 428 [255]
429 429
430 430 bad parameter name
431 431
432 432 $ hg bundle2 --param 42babar
433 433 abort: non letter first character: '42babar'
434 434 [255]
435 435
436 436
437 437 Test part
438 438 =================
439 439
440 440 $ hg bundle2 --parts ../parts.hg2 --debug --config progress.debug=true --config devel.bundle2.debug=true
441 441 bundle2-output-bundle: "HG20", 7 parts total
442 442 bundle2-output: start emission of HG20 stream
443 443 bundle2-output: bundle parameter:
444 444 bundle2-output: start of parts
445 445 bundle2-output: bundle part: "test:empty"
446 446 bundle2-output-part: "test:empty" (advisory) empty payload
447 447 bundle2-output: part 0: "test:empty"
448 448 bundle2-output: header chunk size: 17
449 449 bundle2-output: closing payload chunk
450 450 bundle2-output: bundle part: "test:empty"
451 451 bundle2-output-part: "test:empty" (advisory) empty payload
452 452 bundle2-output: part 1: "test:empty"
453 453 bundle2-output: header chunk size: 17
454 454 bundle2-output: closing payload chunk
455 455 bundle2-output: bundle part: "test:song"
456 456 bundle2-output-part: "test:song" (advisory) 178 bytes payload
457 457 bundle2-output: part 2: "test:song"
458 458 bundle2-output: header chunk size: 16
459 459 bundle2-output: payload chunk size: 178
460 460 bundle2-output: closing payload chunk
461 461 bundle2-output: bundle part: "test:debugreply"
462 462 bundle2-output-part: "test:debugreply" (advisory) empty payload
463 463 bundle2-output: part 3: "test:debugreply"
464 464 bundle2-output: header chunk size: 22
465 465 bundle2-output: closing payload chunk
466 466 bundle2-output: bundle part: "test:math"
467 467 bundle2-output-part: "test:math" (advisory) (params: 2 mandatory 2 advisory) 2 bytes payload
468 468 bundle2-output: part 4: "test:math"
469 469 bundle2-output: header chunk size: 43
470 470 bundle2-output: payload chunk size: 2
471 471 bundle2-output: closing payload chunk
472 472 bundle2-output: bundle part: "test:song"
473 473 bundle2-output-part: "test:song" (advisory) (params: 1 mandatory) empty payload
474 474 bundle2-output: part 5: "test:song"
475 475 bundle2-output: header chunk size: 29
476 476 bundle2-output: closing payload chunk
477 477 bundle2-output: bundle part: "test:ping"
478 478 bundle2-output-part: "test:ping" (advisory) empty payload
479 479 bundle2-output: part 6: "test:ping"
480 480 bundle2-output: header chunk size: 16
481 481 bundle2-output: closing payload chunk
482 482 bundle2-output: end of bundle
483 483
484 484 $ f --hexdump ../parts.hg2
485 485 ../parts.hg2:
486 486 0000: 48 47 32 30 00 00 00 00 00 00 00 11 0a 74 65 73 |HG20.........tes|
487 487 0010: 74 3a 65 6d 70 74 79 00 00 00 00 00 00 00 00 00 |t:empty.........|
488 488 0020: 00 00 00 00 11 0a 74 65 73 74 3a 65 6d 70 74 79 |......test:empty|
489 489 0030: 00 00 00 01 00 00 00 00 00 00 00 00 00 10 09 74 |...............t|
490 490 0040: 65 73 74 3a 73 6f 6e 67 00 00 00 02 00 00 00 00 |est:song........|
491 491 0050: 00 b2 50 61 74 61 6c 69 20 44 69 72 61 70 61 74 |..Patali Dirapat|
492 492 0060: 61 2c 20 43 72 6f 6d 64 61 20 43 72 6f 6d 64 61 |a, Cromda Cromda|
493 493 0070: 20 52 69 70 61 6c 6f 2c 20 50 61 74 61 20 50 61 | Ripalo, Pata Pa|
494 494 0080: 74 61 2c 20 4b 6f 20 4b 6f 20 4b 6f 0a 42 6f 6b |ta, Ko Ko Ko.Bok|
495 495 0090: 6f 72 6f 20 44 69 70 6f 75 6c 69 74 6f 2c 20 52 |oro Dipoulito, R|
496 496 00a0: 6f 6e 64 69 20 52 6f 6e 64 69 20 50 65 70 69 6e |ondi Rondi Pepin|
497 497 00b0: 6f 2c 20 50 61 74 61 20 50 61 74 61 2c 20 4b 6f |o, Pata Pata, Ko|
498 498 00c0: 20 4b 6f 20 4b 6f 0a 45 6d 61 6e 61 20 4b 61 72 | Ko Ko.Emana Kar|
499 499 00d0: 61 73 73 6f 6c 69 2c 20 4c 6f 75 63 72 61 20 4c |assoli, Loucra L|
500 500 00e0: 6f 75 63 72 61 20 50 6f 6e 70 6f 6e 74 6f 2c 20 |oucra Ponponto, |
501 501 00f0: 50 61 74 61 20 50 61 74 61 2c 20 4b 6f 20 4b 6f |Pata Pata, Ko Ko|
502 502 0100: 20 4b 6f 2e 00 00 00 00 00 00 00 16 0f 74 65 73 | Ko..........tes|
503 503 0110: 74 3a 64 65 62 75 67 72 65 70 6c 79 00 00 00 03 |t:debugreply....|
504 504 0120: 00 00 00 00 00 00 00 00 00 2b 09 74 65 73 74 3a |.........+.test:|
505 505 0130: 6d 61 74 68 00 00 00 04 02 01 02 04 01 04 07 03 |math............|
506 506 0140: 70 69 33 2e 31 34 65 32 2e 37 32 63 6f 6f 6b 69 |pi3.14e2.72cooki|
507 507 0150: 6e 67 72 61 77 00 00 00 02 34 32 00 00 00 00 00 |ngraw....42.....|
508 508 0160: 00 00 1d 09 74 65 73 74 3a 73 6f 6e 67 00 00 00 |....test:song...|
509 509 0170: 05 01 00 0b 00 72 61 6e 64 6f 6d 70 61 72 61 6d |.....randomparam|
510 510 0180: 00 00 00 00 00 00 00 10 09 74 65 73 74 3a 70 69 |.........test:pi|
511 511 0190: 6e 67 00 00 00 06 00 00 00 00 00 00 00 00 00 00 |ng..............|
512 512
513 513
514 514 $ hg statbundle2 < ../parts.hg2
515 515 options count: 0
516 516 :test:empty:
517 517 mandatory: 0
518 518 advisory: 0
519 519 payload: 0 bytes
520 520 :test:empty:
521 521 mandatory: 0
522 522 advisory: 0
523 523 payload: 0 bytes
524 524 :test:song:
525 525 mandatory: 0
526 526 advisory: 0
527 527 payload: 178 bytes
528 528 :test:debugreply:
529 529 mandatory: 0
530 530 advisory: 0
531 531 payload: 0 bytes
532 532 :test:math:
533 533 mandatory: 2
534 534 advisory: 1
535 535 payload: 2 bytes
536 536 :test:song:
537 537 mandatory: 1
538 538 advisory: 0
539 539 payload: 0 bytes
540 540 :test:ping:
541 541 mandatory: 0
542 542 advisory: 0
543 543 payload: 0 bytes
544 544 parts count: 7
545 545
546 546 $ hg statbundle2 --debug --config progress.debug=true --config devel.bundle2.debug=true < ../parts.hg2
547 547 bundle2-input: start processing of HG20 stream
548 548 bundle2-input: reading bundle2 stream parameters
549 549 options count: 0
550 550 bundle2-input: start extraction of bundle2 parts
551 551 bundle2-input: part header size: 17
552 552 bundle2-input: part type: "test:empty"
553 553 bundle2-input: part id: "0"
554 554 bundle2-input: part parameters: 0
555 555 :test:empty:
556 556 mandatory: 0
557 557 advisory: 0
558 558 bundle2-input: payload chunk size: 0
559 559 payload: 0 bytes
560 560 bundle2-input: part header size: 17
561 561 bundle2-input: part type: "test:empty"
562 562 bundle2-input: part id: "1"
563 563 bundle2-input: part parameters: 0
564 564 :test:empty:
565 565 mandatory: 0
566 566 advisory: 0
567 567 bundle2-input: payload chunk size: 0
568 568 payload: 0 bytes
569 569 bundle2-input: part header size: 16
570 570 bundle2-input: part type: "test:song"
571 571 bundle2-input: part id: "2"
572 572 bundle2-input: part parameters: 0
573 573 :test:song:
574 574 mandatory: 0
575 575 advisory: 0
576 576 bundle2-input: payload chunk size: 178
577 577 bundle2-input: payload chunk size: 0
578 578 bundle2-input-part: total payload size 178
579 579 payload: 178 bytes
580 580 bundle2-input: part header size: 22
581 581 bundle2-input: part type: "test:debugreply"
582 582 bundle2-input: part id: "3"
583 583 bundle2-input: part parameters: 0
584 584 :test:debugreply:
585 585 mandatory: 0
586 586 advisory: 0
587 587 bundle2-input: payload chunk size: 0
588 588 payload: 0 bytes
589 589 bundle2-input: part header size: 43
590 590 bundle2-input: part type: "test:math"
591 591 bundle2-input: part id: "4"
592 592 bundle2-input: part parameters: 3
593 593 :test:math:
594 594 mandatory: 2
595 595 advisory: 1
596 596 bundle2-input: payload chunk size: 2
597 597 bundle2-input: payload chunk size: 0
598 598 bundle2-input-part: total payload size 2
599 599 payload: 2 bytes
600 600 bundle2-input: part header size: 29
601 601 bundle2-input: part type: "test:song"
602 602 bundle2-input: part id: "5"
603 603 bundle2-input: part parameters: 1
604 604 :test:song:
605 605 mandatory: 1
606 606 advisory: 0
607 607 bundle2-input: payload chunk size: 0
608 608 payload: 0 bytes
609 609 bundle2-input: part header size: 16
610 610 bundle2-input: part type: "test:ping"
611 611 bundle2-input: part id: "6"
612 612 bundle2-input: part parameters: 0
613 613 :test:ping:
614 614 mandatory: 0
615 615 advisory: 0
616 616 bundle2-input: payload chunk size: 0
617 617 payload: 0 bytes
618 618 bundle2-input: part header size: 0
619 619 bundle2-input: end of bundle2 stream
620 620 parts count: 7
621 621
622 622 Test actual unbundling of test part
623 623 =======================================
624 624
625 625 Process the bundle
626 626
627 627 $ hg unbundle2 --debug --config progress.debug=true --config devel.bundle2.debug=true < ../parts.hg2
628 628 bundle2-input: start processing of HG20 stream
629 629 bundle2-input: reading bundle2 stream parameters
630 630 bundle2-input-bundle: with-transaction
631 631 bundle2-input: start extraction of bundle2 parts
632 632 bundle2-input: part header size: 17
633 633 bundle2-input: part type: "test:empty"
634 634 bundle2-input: part id: "0"
635 635 bundle2-input: part parameters: 0
636 636 bundle2-input: ignoring unsupported advisory part test:empty
637 637 bundle2-input-part: "test:empty" (advisory) unsupported-type
638 638 bundle2-input: payload chunk size: 0
639 639 bundle2-input: part header size: 17
640 640 bundle2-input: part type: "test:empty"
641 641 bundle2-input: part id: "1"
642 642 bundle2-input: part parameters: 0
643 643 bundle2-input: ignoring unsupported advisory part test:empty
644 644 bundle2-input-part: "test:empty" (advisory) unsupported-type
645 645 bundle2-input: payload chunk size: 0
646 646 bundle2-input: part header size: 16
647 647 bundle2-input: part type: "test:song"
648 648 bundle2-input: part id: "2"
649 649 bundle2-input: part parameters: 0
650 650 bundle2-input: found a handler for part 'test:song'
651 651 bundle2-input-part: "test:song" (advisory) supported
652 652 The choir starts singing:
653 653 bundle2-input: payload chunk size: 178
654 654 bundle2-input: payload chunk size: 0
655 655 bundle2-input-part: total payload size 178
656 656 Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
657 657 Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
658 658 Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.
659 659 bundle2-input: part header size: 22
660 660 bundle2-input: part type: "test:debugreply"
661 661 bundle2-input: part id: "3"
662 662 bundle2-input: part parameters: 0
663 663 bundle2-input: found a handler for part 'test:debugreply'
664 664 bundle2-input-part: "test:debugreply" (advisory) supported
665 665 debugreply: no reply
666 666 bundle2-input: payload chunk size: 0
667 667 bundle2-input: part header size: 43
668 668 bundle2-input: part type: "test:math"
669 669 bundle2-input: part id: "4"
670 670 bundle2-input: part parameters: 3
671 671 bundle2-input: ignoring unsupported advisory part test:math
672 672 bundle2-input-part: "test:math" (advisory) (params: 2 mandatory 2 advisory) unsupported-type
673 673 bundle2-input: payload chunk size: 2
674 674 bundle2-input: payload chunk size: 0
675 675 bundle2-input-part: total payload size 2
676 676 bundle2-input: part header size: 29
677 677 bundle2-input: part type: "test:song"
678 678 bundle2-input: part id: "5"
679 679 bundle2-input: part parameters: 1
680 680 bundle2-input: found a handler for part 'test:song'
681 681 bundle2-input: ignoring unsupported advisory part test:song - randomparam
682 682 bundle2-input-part: "test:song" (advisory) (params: 1 mandatory) unsupported-params (['randomparam'])
683 683 bundle2-input: payload chunk size: 0
684 684 bundle2-input: part header size: 16
685 685 bundle2-input: part type: "test:ping"
686 686 bundle2-input: part id: "6"
687 687 bundle2-input: part parameters: 0
688 688 bundle2-input: found a handler for part 'test:ping'
689 689 bundle2-input-part: "test:ping" (advisory) supported
690 690 received ping request (id 6)
691 691 bundle2-input: payload chunk size: 0
692 692 bundle2-input: part header size: 0
693 693 bundle2-input: end of bundle2 stream
694 694 bundle2-input-bundle: 6 parts total
695 695 0 unread bytes
696 696 3 total verses sung
697 697
698 698 Unbundle with an unknown mandatory part
699 699 (should abort)
700 700
701 701 $ hg bundle2 --parts --unknown ../unknown.hg2
702 702
703 703 $ hg unbundle2 < ../unknown.hg2
704 704 The choir starts singing:
705 705 Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
706 706 Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
707 707 Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.
708 708 debugreply: no reply
709 709 0 unread bytes
710 710 abort: missing support for test:unknown
711 711 [255]
712 712
713 713 Unbundle with an unknown mandatory part parameters
714 714 (should abort)
715 715
716 716 $ hg bundle2 --unknownparams ../unknown.hg2
717 717
718 718 $ hg unbundle2 < ../unknown.hg2
719 719 0 unread bytes
720 720 abort: missing support for test:song - randomparams
721 721 [255]
722 722
723 723 unbundle with a reply
724 724
725 725 $ hg bundle2 --parts --reply ../parts-reply.hg2
726 726 $ hg unbundle2 ../reply.hg2 < ../parts-reply.hg2
727 727 0 unread bytes
728 728 3 total verses sung
729 729
730 730 The reply is a bundle
731 731
732 732 $ f --hexdump ../reply.hg2
733 733 ../reply.hg2:
734 734 0000: 48 47 32 30 00 00 00 00 00 00 00 1b 06 6f 75 74 |HG20.........out|
735 735 0010: 70 75 74 00 00 00 00 00 01 0b 01 69 6e 2d 72 65 |put........in-re|
736 736 0020: 70 6c 79 2d 74 6f 33 00 00 00 d9 54 68 65 20 63 |ply-to3....The c|
737 737 0030: 68 6f 69 72 20 73 74 61 72 74 73 20 73 69 6e 67 |hoir starts sing|
738 738 0040: 69 6e 67 3a 0a 20 20 20 20 50 61 74 61 6c 69 20 |ing:. Patali |
739 739 0050: 44 69 72 61 70 61 74 61 2c 20 43 72 6f 6d 64 61 |Dirapata, Cromda|
740 740 0060: 20 43 72 6f 6d 64 61 20 52 69 70 61 6c 6f 2c 20 | Cromda Ripalo, |
741 741 0070: 50 61 74 61 20 50 61 74 61 2c 20 4b 6f 20 4b 6f |Pata Pata, Ko Ko|
742 742 0080: 20 4b 6f 0a 20 20 20 20 42 6f 6b 6f 72 6f 20 44 | Ko. Bokoro D|
743 743 0090: 69 70 6f 75 6c 69 74 6f 2c 20 52 6f 6e 64 69 20 |ipoulito, Rondi |
744 744 00a0: 52 6f 6e 64 69 20 50 65 70 69 6e 6f 2c 20 50 61 |Rondi Pepino, Pa|
745 745 00b0: 74 61 20 50 61 74 61 2c 20 4b 6f 20 4b 6f 20 4b |ta Pata, Ko Ko K|
746 746 00c0: 6f 0a 20 20 20 20 45 6d 61 6e 61 20 4b 61 72 61 |o. Emana Kara|
747 747 00d0: 73 73 6f 6c 69 2c 20 4c 6f 75 63 72 61 20 4c 6f |ssoli, Loucra Lo|
748 748 00e0: 75 63 72 61 20 50 6f 6e 70 6f 6e 74 6f 2c 20 50 |ucra Ponponto, P|
749 749 00f0: 61 74 61 20 50 61 74 61 2c 20 4b 6f 20 4b 6f 20 |ata Pata, Ko Ko |
750 750 0100: 4b 6f 2e 0a 00 00 00 00 00 00 00 1b 06 6f 75 74 |Ko...........out|
751 751 0110: 70 75 74 00 00 00 01 00 01 0b 01 69 6e 2d 72 65 |put........in-re|
752 752 0120: 70 6c 79 2d 74 6f 34 00 00 00 c9 64 65 62 75 67 |ply-to4....debug|
753 753 0130: 72 65 70 6c 79 3a 20 63 61 70 61 62 69 6c 69 74 |reply: capabilit|
754 754 0140: 69 65 73 3a 0a 64 65 62 75 67 72 65 70 6c 79 3a |ies:.debugreply:|
755 755 0150: 20 20 20 20 20 27 63 69 74 79 3d 21 27 0a 64 65 | 'city=!'.de|
756 756 0160: 62 75 67 72 65 70 6c 79 3a 20 20 20 20 20 20 20 |bugreply: |
757 757 0170: 20 20 27 63 65 6c 65 73 74 65 2c 76 69 6c 6c 65 | 'celeste,ville|
758 758 0180: 27 0a 64 65 62 75 67 72 65 70 6c 79 3a 20 20 20 |'.debugreply: |
759 759 0190: 20 20 27 65 6c 65 70 68 61 6e 74 73 27 0a 64 65 | 'elephants'.de|
760 760 01a0: 62 75 67 72 65 70 6c 79 3a 20 20 20 20 20 20 20 |bugreply: |
761 761 01b0: 20 20 27 62 61 62 61 72 27 0a 64 65 62 75 67 72 | 'babar'.debugr|
762 762 01c0: 65 70 6c 79 3a 20 20 20 20 20 20 20 20 20 27 63 |eply: 'c|
763 763 01d0: 65 6c 65 73 74 65 27 0a 64 65 62 75 67 72 65 70 |eleste'.debugrep|
764 764 01e0: 6c 79 3a 20 20 20 20 20 27 70 69 6e 67 2d 70 6f |ly: 'ping-po|
765 765 01f0: 6e 67 27 0a 00 00 00 00 00 00 00 1e 09 74 65 73 |ng'..........tes|
766 766 0200: 74 3a 70 6f 6e 67 00 00 00 02 01 00 0b 01 69 6e |t:pong........in|
767 767 0210: 2d 72 65 70 6c 79 2d 74 6f 37 00 00 00 00 00 00 |-reply-to7......|
768 768 0220: 00 1b 06 6f 75 74 70 75 74 00 00 00 03 00 01 0b |...output.......|
769 769 0230: 01 69 6e 2d 72 65 70 6c 79 2d 74 6f 37 00 00 00 |.in-reply-to7...|
770 770 0240: 3d 72 65 63 65 69 76 65 64 20 70 69 6e 67 20 72 |=received ping r|
771 771 0250: 65 71 75 65 73 74 20 28 69 64 20 37 29 0a 72 65 |equest (id 7).re|
772 772 0260: 70 6c 79 69 6e 67 20 74 6f 20 70 69 6e 67 20 72 |plying to ping r|
773 773 0270: 65 71 75 65 73 74 20 28 69 64 20 37 29 0a 00 00 |equest (id 7)...|
774 774 0280: 00 00 00 00 00 00 |......|
775 775
776 776 The reply is valid
777 777
778 778 $ hg statbundle2 < ../reply.hg2
779 779 options count: 0
780 780 :output:
781 781 mandatory: 0
782 782 advisory: 1
783 783 payload: 217 bytes
784 784 :output:
785 785 mandatory: 0
786 786 advisory: 1
787 787 payload: 201 bytes
788 788 :test:pong:
789 789 mandatory: 1
790 790 advisory: 0
791 791 payload: 0 bytes
792 792 :output:
793 793 mandatory: 0
794 794 advisory: 1
795 795 payload: 61 bytes
796 796 parts count: 4
797 797
798 798 Unbundle the reply to get the output:
799 799
800 800 $ hg unbundle2 < ../reply.hg2
801 801 remote: The choir starts singing:
802 802 remote: Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
803 803 remote: Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
804 804 remote: Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.
805 805 remote: debugreply: capabilities:
806 806 remote: debugreply: 'city=!'
807 807 remote: debugreply: 'celeste,ville'
808 808 remote: debugreply: 'elephants'
809 809 remote: debugreply: 'babar'
810 810 remote: debugreply: 'celeste'
811 811 remote: debugreply: 'ping-pong'
812 812 remote: received ping request (id 7)
813 813 remote: replying to ping request (id 7)
814 814 0 unread bytes
815 815
816 816 Test push race detection
817 817
818 818 $ hg bundle2 --pushrace ../part-race.hg2
819 819
820 820 $ hg unbundle2 < ../part-race.hg2
821 821 0 unread bytes
822 822 abort: push race: repository changed while pushing - please try again
823 823 [255]
824 824
825 825 Support for changegroup
826 826 ===================================
827 827
828 828 $ hg unbundle $TESTDIR/bundles/rebase.hg
829 829 adding changesets
830 830 adding manifests
831 831 adding file changes
832 832 added 8 changesets with 7 changes to 7 files (+3 heads)
833 833 (run 'hg heads' to see heads, 'hg merge' to merge)
834 834
835 835 $ hg log -G
836 836 o 8:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> H
837 837 |
838 838 | o 7:eea13746799a draft Nicolas Dumazet <nicdumz.commits@gmail.com> G
839 839 |/|
840 840 o | 6:24b6387c8c8c draft Nicolas Dumazet <nicdumz.commits@gmail.com> F
841 841 | |
842 842 | o 5:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
843 843 |/
844 844 | o 4:32af7686d403 draft Nicolas Dumazet <nicdumz.commits@gmail.com> D
845 845 | |
846 846 | o 3:5fddd98957c8 draft Nicolas Dumazet <nicdumz.commits@gmail.com> C
847 847 | |
848 848 | o 2:42ccdea3bb16 draft Nicolas Dumazet <nicdumz.commits@gmail.com> B
849 849 |/
850 850 o 1:cd010b8cd998 draft Nicolas Dumazet <nicdumz.commits@gmail.com> A
851 851
852 852 @ 0:3903775176ed draft test a
853 853
854 854
855 855 $ hg bundle2 --debug --config progress.debug=true --config devel.bundle2.debug=true --rev '8+7+5+4' ../rev.hg2
856 856 4 changesets found
857 857 list of changesets:
858 858 32af7686d403cf45b5d95f2d70cebea587ac806a
859 859 9520eea781bcca16c1e15acc0ba14335a0e8e5ba
860 860 eea13746799a9e0bfd88f29d3c2e9dc9389f524f
861 861 02de42196ebee42ef284b6780a87cdc96e8eaab6
862 862 bundle2-output-bundle: "HG20", 1 parts total
863 863 bundle2-output: start emission of HG20 stream
864 864 bundle2-output: bundle parameter:
865 865 bundle2-output: start of parts
866 866 bundle2-output: bundle part: "changegroup"
867 867 bundle2-output-part: "changegroup" (advisory) streamed payload
868 868 bundle2-output: part 0: "changegroup"
869 869 bundle2-output: header chunk size: 18
870 870 bundling: 1/4 changesets (25.00%)
871 871 bundling: 2/4 changesets (50.00%)
872 872 bundling: 3/4 changesets (75.00%)
873 873 bundling: 4/4 changesets (100.00%)
874 874 bundling: 1/4 manifests (25.00%)
875 875 bundling: 2/4 manifests (50.00%)
876 876 bundling: 3/4 manifests (75.00%)
877 877 bundling: 4/4 manifests (100.00%)
878 878 bundling: D 1/3 files (33.33%)
879 879 bundling: E 2/3 files (66.67%)
880 880 bundling: H 3/3 files (100.00%)
881 881 bundle2-output: payload chunk size: 1555
882 882 bundle2-output: closing payload chunk
883 883 bundle2-output: end of bundle
884 884
885 885 $ f --hexdump ../rev.hg2
886 886 ../rev.hg2:
887 887 0000: 48 47 32 30 00 00 00 00 00 00 00 12 0b 63 68 61 |HG20.........cha|
888 888 0010: 6e 67 65 67 72 6f 75 70 00 00 00 00 00 00 00 00 |ngegroup........|
889 889 0020: 06 13 00 00 00 a4 32 af 76 86 d4 03 cf 45 b5 d9 |......2.v....E..|
890 890 0030: 5f 2d 70 ce be a5 87 ac 80 6a 5f dd d9 89 57 c8 |_-p......j_...W.|
891 891 0040: a5 4a 4d 43 6d fe 1d a9 d8 7f 21 a1 b9 7b 00 00 |.JMCm.....!..{..|
892 892 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
893 893 0060: 00 00 32 af 76 86 d4 03 cf 45 b5 d9 5f 2d 70 ce |..2.v....E.._-p.|
894 894 0070: be a5 87 ac 80 6a 00 00 00 00 00 00 00 29 00 00 |.....j.......)..|
895 895 0080: 00 29 36 65 31 66 34 63 34 37 65 63 62 35 33 33 |.)6e1f4c47ecb533|
896 896 0090: 66 66 64 30 63 38 65 35 32 63 64 63 38 38 61 66 |ffd0c8e52cdc88af|
897 897 00a0: 62 36 63 64 33 39 65 32 30 63 0a 00 00 00 66 00 |b6cd39e20c....f.|
898 898 00b0: 00 00 68 00 00 00 02 44 0a 00 00 00 69 00 00 00 |..h....D....i...|
899 899 00c0: 6a 00 00 00 01 44 00 00 00 a4 95 20 ee a7 81 bc |j....D..... ....|
900 900 00d0: ca 16 c1 e1 5a cc 0b a1 43 35 a0 e8 e5 ba cd 01 |....Z...C5......|
901 901 00e0: 0b 8c d9 98 f3 98 1a 5a 81 15 f9 4f 8d a4 ab 50 |.......Z...O...P|
902 902 00f0: 60 89 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |`...............|
903 903 0100: 00 00 00 00 00 00 95 20 ee a7 81 bc ca 16 c1 e1 |....... ........|
904 904 0110: 5a cc 0b a1 43 35 a0 e8 e5 ba 00 00 00 00 00 00 |Z...C5..........|
905 905 0120: 00 29 00 00 00 29 34 64 65 63 65 39 63 38 32 36 |.)...)4dece9c826|
906 906 0130: 66 36 39 34 39 30 35 30 37 62 39 38 63 36 33 38 |f69490507b98c638|
907 907 0140: 33 61 33 30 30 39 62 32 39 35 38 33 37 64 0a 00 |3a3009b295837d..|
908 908 0150: 00 00 66 00 00 00 68 00 00 00 02 45 0a 00 00 00 |..f...h....E....|
909 909 0160: 69 00 00 00 6a 00 00 00 01 45 00 00 00 a2 ee a1 |i...j....E......|
910 910 0170: 37 46 79 9a 9e 0b fd 88 f2 9d 3c 2e 9d c9 38 9f |7Fy.......<...8.|
911 911 0180: 52 4f 24 b6 38 7c 8c 8c ae 37 17 88 80 f3 fa 95 |RO$.8|...7......|
912 912 0190: de d3 cb 1c f7 85 95 20 ee a7 81 bc ca 16 c1 e1 |....... ........|
913 913 01a0: 5a cc 0b a1 43 35 a0 e8 e5 ba ee a1 37 46 79 9a |Z...C5......7Fy.|
914 914 01b0: 9e 0b fd 88 f2 9d 3c 2e 9d c9 38 9f 52 4f 00 00 |......<...8.RO..|
915 915 01c0: 00 00 00 00 00 29 00 00 00 29 33 36 35 62 39 33 |.....)...)365b93|
916 916 01d0: 64 35 37 66 64 66 34 38 31 34 65 32 62 35 39 31 |d57fdf4814e2b591|
917 917 01e0: 31 64 36 62 61 63 66 66 32 62 31 32 30 31 34 34 |1d6bacff2b120144|
918 918 01f0: 34 31 0a 00 00 00 66 00 00 00 68 00 00 00 00 00 |41....f...h.....|
919 919 0200: 00 00 69 00 00 00 6a 00 00 00 01 47 00 00 00 a4 |..i...j....G....|
920 920 0210: 02 de 42 19 6e be e4 2e f2 84 b6 78 0a 87 cd c9 |..B.n......x....|
921 921 0220: 6e 8e aa b6 24 b6 38 7c 8c 8c ae 37 17 88 80 f3 |n...$.8|...7....|
922 922 0230: fa 95 de d3 cb 1c f7 85 00 00 00 00 00 00 00 00 |................|
923 923 0240: 00 00 00 00 00 00 00 00 00 00 00 00 02 de 42 19 |..............B.|
924 924 0250: 6e be e4 2e f2 84 b6 78 0a 87 cd c9 6e 8e aa b6 |n......x....n...|
925 925 0260: 00 00 00 00 00 00 00 29 00 00 00 29 38 62 65 65 |.......)...)8bee|
926 926 0270: 34 38 65 64 63 37 33 31 38 35 34 31 66 63 30 30 |48edc7318541fc00|
927 927 0280: 31 33 65 65 34 31 62 30 38 39 32 37 36 61 38 63 |13ee41b089276a8c|
928 928 0290: 32 34 62 66 0a 00 00 00 66 00 00 00 66 00 00 00 |24bf....f...f...|
929 929 02a0: 02 48 0a 00 00 00 67 00 00 00 68 00 00 00 01 48 |.H....g...h....H|
930 930 02b0: 00 00 00 00 00 00 00 8b 6e 1f 4c 47 ec b5 33 ff |........n.LG..3.|
931 931 02c0: d0 c8 e5 2c dc 88 af b6 cd 39 e2 0c 66 a5 a0 18 |...,.....9..f...|
932 932 02d0: 17 fd f5 23 9c 27 38 02 b5 b7 61 8d 05 1c 89 e4 |...#.'8...a.....|
933 933 02e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
934 934 02f0: 00 00 00 00 32 af 76 86 d4 03 cf 45 b5 d9 5f 2d |....2.v....E.._-|
935 935 0300: 70 ce be a5 87 ac 80 6a 00 00 00 81 00 00 00 81 |p......j........|
936 936 0310: 00 00 00 2b 44 00 63 33 66 31 63 61 32 39 32 34 |...+D.c3f1ca2924|
937 937 0320: 63 31 36 61 31 39 62 30 36 35 36 61 38 34 39 30 |c16a19b0656a8490|
938 938 0330: 30 65 35 30 34 65 35 62 30 61 65 63 32 64 0a 00 |0e504e5b0aec2d..|
939 939 0340: 00 00 8b 4d ec e9 c8 26 f6 94 90 50 7b 98 c6 38 |...M...&...P{..8|
940 940 0350: 3a 30 09 b2 95 83 7d 00 7d 8c 9d 88 84 13 25 f5 |:0....}.}.....%.|
941 941 0360: c6 b0 63 71 b3 5b 4e 8a 2b 1a 83 00 00 00 00 00 |..cq.[N.+.......|
942 942 0370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 95 |................|
943 943 0380: 20 ee a7 81 bc ca 16 c1 e1 5a cc 0b a1 43 35 a0 | ........Z...C5.|
944 944 0390: e8 e5 ba 00 00 00 2b 00 00 00 ac 00 00 00 2b 45 |......+.......+E|
945 945 03a0: 00 39 63 36 66 64 30 33 35 30 61 36 63 30 64 30 |.9c6fd0350a6c0d0|
946 946 03b0: 63 34 39 64 34 61 39 63 35 30 31 37 63 66 30 37 |c49d4a9c5017cf07|
947 947 03c0: 30 34 33 66 35 34 65 35 38 0a 00 00 00 8b 36 5b |043f54e58.....6[|
948 948 03d0: 93 d5 7f df 48 14 e2 b5 91 1d 6b ac ff 2b 12 01 |....H.....k..+..|
949 949 03e0: 44 41 28 a5 84 c6 5e f1 21 f8 9e b6 6a b7 d0 bc |DA(...^.!...j...|
950 950 03f0: 15 3d 80 99 e7 ce 4d ec e9 c8 26 f6 94 90 50 7b |.=....M...&...P{|
951 951 0400: 98 c6 38 3a 30 09 b2 95 83 7d ee a1 37 46 79 9a |..8:0....}..7Fy.|
952 952 0410: 9e 0b fd 88 f2 9d 3c 2e 9d c9 38 9f 52 4f 00 00 |......<...8.RO..|
953 953 0420: 00 56 00 00 00 56 00 00 00 2b 46 00 32 32 62 66 |.V...V...+F.22bf|
954 954 0430: 63 66 64 36 32 61 32 31 61 33 32 38 37 65 64 62 |cfd62a21a3287edb|
955 955 0440: 64 34 64 36 35 36 32 31 38 64 30 66 35 32 35 65 |d4d656218d0f525e|
956 956 0450: 64 37 36 61 0a 00 00 00 97 8b ee 48 ed c7 31 85 |d76a.......H..1.|
957 957 0460: 41 fc 00 13 ee 41 b0 89 27 6a 8c 24 bf 28 a5 84 |A....A..'j.$.(..|
958 958 0470: c6 5e f1 21 f8 9e b6 6a b7 d0 bc 15 3d 80 99 e7 |.^.!...j....=...|
959 959 0480: ce 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
960 960 0490: 00 00 00 00 00 02 de 42 19 6e be e4 2e f2 84 b6 |.......B.n......|
961 961 04a0: 78 0a 87 cd c9 6e 8e aa b6 00 00 00 2b 00 00 00 |x....n......+...|
962 962 04b0: 56 00 00 00 00 00 00 00 81 00 00 00 81 00 00 00 |V...............|
963 963 04c0: 2b 48 00 38 35 30 30 31 38 39 65 37 34 61 39 65 |+H.8500189e74a9e|
964 964 04d0: 30 34 37 35 65 38 32 32 30 39 33 62 63 37 64 62 |0475e822093bc7db|
965 965 04e0: 30 64 36 33 31 61 65 62 30 62 34 0a 00 00 00 00 |0d631aeb0b4.....|
966 966 04f0: 00 00 00 05 44 00 00 00 62 c3 f1 ca 29 24 c1 6a |....D...b...)$.j|
967 967 0500: 19 b0 65 6a 84 90 0e 50 4e 5b 0a ec 2d 00 00 00 |..ej...PN[..-...|
968 968 0510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
969 969 0520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
970 970 0530: 00 00 00 00 00 32 af 76 86 d4 03 cf 45 b5 d9 5f |.....2.v....E.._|
971 971 0540: 2d 70 ce be a5 87 ac 80 6a 00 00 00 00 00 00 00 |-p......j.......|
972 972 0550: 00 00 00 00 02 44 0a 00 00 00 00 00 00 00 05 45 |.....D.........E|
973 973 0560: 00 00 00 62 9c 6f d0 35 0a 6c 0d 0c 49 d4 a9 c5 |...b.o.5.l..I...|
974 974 0570: 01 7c f0 70 43 f5 4e 58 00 00 00 00 00 00 00 00 |.|.pC.NX........|
975 975 0580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
976 976 0590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
977 977 05a0: 95 20 ee a7 81 bc ca 16 c1 e1 5a cc 0b a1 43 35 |. ........Z...C5|
978 978 05b0: a0 e8 e5 ba 00 00 00 00 00 00 00 00 00 00 00 02 |................|
979 979 05c0: 45 0a 00 00 00 00 00 00 00 05 48 00 00 00 62 85 |E.........H...b.|
980 980 05d0: 00 18 9e 74 a9 e0 47 5e 82 20 93 bc 7d b0 d6 31 |...t..G^. ..}..1|
981 981 05e0: ae b0 b4 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
982 982 05f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
983 983 0600: 00 00 00 00 00 00 00 00 00 00 00 02 de 42 19 6e |.............B.n|
984 984 0610: be e4 2e f2 84 b6 78 0a 87 cd c9 6e 8e aa b6 00 |......x....n....|
985 985 0620: 00 00 00 00 00 00 00 00 00 00 02 48 0a 00 00 00 |...........H....|
986 986 0630: 00 00 00 00 00 00 00 00 00 00 00 00 00 |.............|
987 987
988 988 $ hg debugbundle ../rev.hg2
989 989 Stream params: {}
990 990 changegroup -- '{}'
991 991 32af7686d403cf45b5d95f2d70cebea587ac806a
992 992 9520eea781bcca16c1e15acc0ba14335a0e8e5ba
993 993 eea13746799a9e0bfd88f29d3c2e9dc9389f524f
994 994 02de42196ebee42ef284b6780a87cdc96e8eaab6
995 995 $ hg unbundle ../rev.hg2
996 996 adding changesets
997 997 adding manifests
998 998 adding file changes
999 999 added 0 changesets with 0 changes to 3 files
1000 1000 (run 'hg update' to get a working copy)
1001 1001
1002 1002 with reply
1003 1003
1004 1004 $ hg bundle2 --rev '8+7+5+4' --reply ../rev-rr.hg2
1005 1005 $ hg unbundle2 ../rev-reply.hg2 < ../rev-rr.hg2
1006 1006 0 unread bytes
1007 1007 addchangegroup return: 1
1008 1008
1009 1009 $ f --hexdump ../rev-reply.hg2
1010 1010 ../rev-reply.hg2:
1011 1011 0000: 48 47 32 30 00 00 00 00 00 00 00 2f 11 72 65 70 |HG20......./.rep|
1012 1012 0010: 6c 79 3a 63 68 61 6e 67 65 67 72 6f 75 70 00 00 |ly:changegroup..|
1013 1013 0020: 00 00 00 02 0b 01 06 01 69 6e 2d 72 65 70 6c 79 |........in-reply|
1014 1014 0030: 2d 74 6f 31 72 65 74 75 72 6e 31 00 00 00 00 00 |-to1return1.....|
1015 1015 0040: 00 00 1b 06 6f 75 74 70 75 74 00 00 00 01 00 01 |....output......|
1016 1016 0050: 0b 01 69 6e 2d 72 65 70 6c 79 2d 74 6f 31 00 00 |..in-reply-to1..|
1017 1017 0060: 00 64 61 64 64 69 6e 67 20 63 68 61 6e 67 65 73 |.dadding changes|
1018 1018 0070: 65 74 73 0a 61 64 64 69 6e 67 20 6d 61 6e 69 66 |ets.adding manif|
1019 1019 0080: 65 73 74 73 0a 61 64 64 69 6e 67 20 66 69 6c 65 |ests.adding file|
1020 1020 0090: 20 63 68 61 6e 67 65 73 0a 61 64 64 65 64 20 30 | changes.added 0|
1021 1021 00a0: 20 63 68 61 6e 67 65 73 65 74 73 20 77 69 74 68 | changesets with|
1022 1022 00b0: 20 30 20 63 68 61 6e 67 65 73 20 74 6f 20 33 20 | 0 changes to 3 |
1023 1023 00c0: 66 69 6c 65 73 0a 00 00 00 00 00 00 00 00 |files.........|
1024 1024
1025 1025 Check handling of exception during generation.
1026 1026 ----------------------------------------------
1027 1027
1028 1028 $ hg bundle2 --genraise > ../genfailed.hg2
1029 1029 abort: Someone set up us the bomb!
1030 1030 [255]
1031 1031
1032 1032 Should still be a valid bundle
1033 1033
1034 1034 $ f --hexdump ../genfailed.hg2
1035 1035 ../genfailed.hg2:
1036 1036 0000: 48 47 32 30 00 00 00 00 00 00 00 0d 06 6f 75 74 |HG20.........out|
1037 1037 0010: 70 75 74 00 00 00 00 00 00 ff ff ff ff 00 00 00 |put.............|
1038 1038 0020: 48 0b 65 72 72 6f 72 3a 61 62 6f 72 74 00 00 00 |H.error:abort...|
1039 1039 0030: 00 01 00 07 2d 6d 65 73 73 61 67 65 75 6e 65 78 |....-messageunex|
1040 1040 0040: 70 65 63 74 65 64 20 65 72 72 6f 72 3a 20 53 6f |pected error: So|
1041 1041 0050: 6d 65 6f 6e 65 20 73 65 74 20 75 70 20 75 73 20 |meone set up us |
1042 1042 0060: 74 68 65 20 62 6f 6d 62 21 00 00 00 00 00 00 00 |the bomb!.......|
1043 1043 0070: 00 |.|
1044 1044
1045 1045 And its handling on the other size raise a clean exception
1046 1046
1047 1047 $ cat ../genfailed.hg2 | hg unbundle2
1048 1048 0 unread bytes
1049 1049 abort: unexpected error: Someone set up us the bomb!
1050 1050 [255]
1051 1051
1052 1052 Test compression
1053 1053 ================
1054 1054
1055 1055 Simple case where it just work: GZ
1056 1056 ----------------------------------
1057 1057
1058 1058 $ hg bundle2 --compress GZ --rev '8+7+5+4' ../rev.hg2.bz
1059 1059 $ f --hexdump ../rev.hg2.bz
1060 1060 ../rev.hg2.bz:
1061 1061 0000: 48 47 32 30 00 00 00 0e 43 6f 6d 70 72 65 73 73 |HG20....Compress|
1062 1062 0010: 69 6f 6e 3d 47 5a 78 9c 95 94 7d 68 95 55 1c c7 |ion=GZx...}h.U..|
1063 1063 0020: 9f 3b 31 e8 ce fa c3 65 be a0 a4 b4 52 b9 29 e7 |.;1....e....R.).|
1064 1064 0030: f5 79 ce 89 fa 63 ed 5e 77 8b 9c c3 3f 2a 1c 68 |.y...c.^w...?*.h|
1065 1065 0040: cf 79 9b dd 6a ae b0 28 74 b8 e5 96 5b bb 86 61 |.y..j..(t...[..a|
1066 1066 0050: a3 15 6e 3a 71 c8 6a e8 a5 da 95 64 28 22 ce 69 |..n:q.j....d(".i|
1067 1067 0060: cd 06 59 34 28 2b 51 2a 58 c3 17 56 2a 9a 9d 67 |..Y4(+Q*X..V*..g|
1068 1068 0070: dc c6 35 9e c4 1d f8 9e 87 f3 9c f3 3b bf 0f bf |..5.........;...|
1069 1069 0080: 97 e3 38 ce f4 42 b9 d6 af ae d2 55 af ae 7b ad |..8..B.....U..{.|
1070 1070 0090: c6 c9 8d bb 8a ec b4 07 ed 7f fd ed d3 53 be 4e |.............S.N|
1071 1071 00a0: f4 0e af 59 52 73 ea 50 d7 96 9e ba d4 9a 1f 87 |...YRs.P........|
1072 1072 00b0: 9b 9f 1d e8 7a 6a 79 e9 cb 7f cf eb fe 7e d3 82 |....zjy......~..|
1073 1073 00c0: ce 2f 36 38 21 23 cc 36 b7 b5 38 90 ab a1 21 92 |./68!#.6..8...!.|
1074 1074 00d0: 78 5a 0a 8a b1 31 0a 48 a6 29 92 4a 32 e6 1b e1 |xZ...1.H.).J2...|
1075 1075 00e0: 4a 85 b9 46 40 46 ed 61 63 b5 d6 aa 20 1e ac 5e |J..F@F.ac... ..^|
1076 1076 00f0: b0 0a ae 8a c4 03 c6 d6 f9 a3 7b eb fb 4e de 7f |..........{..N..|
1077 1077 0100: e4 97 55 5f 15 76 96 d2 5d bf 9d 3f 38 18 29 4c |..U_.v..]..?8.)L|
1078 1078 0110: 0f b7 5d 6e 9b b3 aa 7e c6 d5 15 5b f7 7c 52 f1 |..]n...~...[.|R.|
1079 1079 0120: 7c 73 18 63 98 6d 3e 23 51 5a 6a 2e 19 72 8d cb ||s.c.m>#QZj..r..|
1080 1080 0130: 09 07 14 78 82 33 e9 62 86 7d 0c 00 17 88 53 86 |...x.3.b.}....S.|
1081 1081 0140: 3d 75 0b 63 e2 16 c6 84 9d 76 8f 76 7a cb de fc |=u.c.....v.vz...|
1082 1082 0150: a8 a3 f0 46 d3 a5 f6 c7 96 b6 9f 60 3b 57 ae 28 |...F.......`;W.(|
1083 1083 0160: ce b2 8d e9 f4 3e 6f 66 53 dd e5 6b ad 67 be f9 |.....>ofS..k.g..|
1084 1084 0170: 72 ee 5f 8d 61 3c 61 b6 f9 8c d8 a5 82 63 45 3d |r._.a<a......cE=|
1085 1085 0180: a3 0c 61 90 68 24 28 87 50 b9 c2 97 c6 20 01 11 |..a.h$(.P.... ..|
1086 1086 0190: 80 84 10 98 cf e8 e4 13 96 05 51 2c 38 f3 c4 ec |..........Q,8...|
1087 1087 01a0: ea 43 e7 96 5e 6a c8 be 11 dd 32 78 a2 fa dd 8f |.C..^j....2x....|
1088 1088 01b0: b3 61 84 61 51 0c b3 cd 27 64 42 6b c2 b4 92 1e |.a.aQ...'dBk....|
1089 1089 01c0: 86 8c 12 68 24 00 10 db 7f 50 00 c6 91 e7 fa 4c |...h$....P.....L|
1090 1090 01d0: 22 22 cc bf 84 81 0a 92 c1 aa 2a c7 1b 49 e6 ee |""........*..I..|
1091 1091 01e0: 6b a9 7e e0 e9 b2 91 5e 7c 73 68 e0 fc 23 3f 34 |k.~....^|sh..#?4|
1092 1092 01f0: ed cf 0e f2 b3 d3 4c d7 ae 59 33 6f 8c 3d b8 63 |......L..Y3o.=.c|
1093 1093 0200: 21 2b e8 3d e0 6f 9d 3a b7 f9 dc 24 2a b2 3e a7 |!+.=.o.:...$*.>.|
1094 1094 0210: 58 dc 91 d8 40 e9 23 8e 88 84 ae 0f b9 00 2e b5 |X...@.#.........|
1095 1095 0220: 74 36 f3 40 53 40 34 15 c0 d7 12 8d e7 bb 65 f9 |t6.@S@4.......e.|
1096 1096 0230: c8 ef 03 0f ff f9 fe b6 8a 0d 6d fd ec 51 70 f7 |..........m..Qp.|
1097 1097 0240: a7 ad 9b 6b 9d da 74 7b 53 43 d1 43 63 fd 19 f9 |...k..t{SC.Cc...|
1098 1098 0250: ca 67 95 e5 ef c4 e6 6c 9e 44 e1 c5 ac 7a 82 6f |.g.....l.D...z.o|
1099 1099 0260: c2 e1 d2 b5 2d 81 29 f0 5d 09 6c 6f 10 ae 88 cf |....-.).].lo....|
1100 1100 0270: 25 05 d0 93 06 78 80 60 43 2d 10 1b 47 71 2b b7 |%....x.`C-..Gq+.|
1101 1101 0280: 7f bb e9 a7 e4 7d 67 7b df 9b f7 62 cf cd d8 f4 |.....}g{...b....|
1102 1102 0290: 48 bc 64 51 57 43 ff ea 8b 0b ae 74 64 53 07 86 |H.dQWC.....tdS..|
1103 1103 02a0: fa 66 3c 5e f7 e1 af a7 c2 90 ff a7 be 9e c9 29 |.f<^...........)|
1104 1104 02b0: b6 cc 41 48 18 69 94 8b 7c 04 7d 8c 98 a7 95 50 |..AH.i..|.}....P|
1105 1105 02c0: 44 d9 d0 20 c8 14 30 14 51 ad 6c 16 03 94 0f 5a |D.. ..0.Q.l....Z|
1106 1106 02d0: 46 93 7f 1c 87 8d 25 d7 9d a2 d1 92 4c f3 c2 54 |F.....%.....L..T|
1107 1107 02e0: ba f8 70 18 ca 24 0a 29 96 43 71 f2 93 95 74 18 |..p..$.).Cq...t.|
1108 1108 02f0: b5 65 c4 b8 f6 6c 5c 34 20 1e d5 0c 21 c0 b1 90 |.e...l\4 ...!...|
1109 1109 0300: 9e 12 40 b9 18 fa 5a 00 41 a2 39 d3 a9 c1 73 21 |..@...Z.A.9...s!|
1110 1110 0310: 8e 5e 3c b9 b8 f8 48 6a 76 46 a7 1a b6 dd 5b 51 |.^<...HjvF....[Q|
1111 1111 0320: 5e 19 1d 59 12 c6 32 89 02 9a c0 8f 4f b8 0a ba |^..Y..2.....O...|
1112 1112 0330: 5e ec 58 37 44 a3 2f dd 33 ed c9 d3 dd c7 22 1b |^.X7D./.3.....".|
1113 1113 0340: 2f d4 94 8e 95 3f 77 a7 ae 6e f3 32 8d bb 4a 4c |/....?w..n.2..JL|
1114 1114 0350: b8 0a 5a 43 34 3a b3 3a d6 77 ff 5c b6 fa ad f9 |..ZC4:.:.w.\....|
1115 1115 0360: db fb 6a 33 df c1 7d 99 cf ef d4 d5 6d da 77 7c |..j3..}.....m.w||
1116 1116 0370: 3b 19 fd af c5 3f f1 60 c3 17 |;....?.`..|
1117 1117 $ hg debugbundle ../rev.hg2.bz
1118 1118 Stream params: {'Compression': 'GZ'}
1119 1119 changegroup -- '{}'
1120 1120 32af7686d403cf45b5d95f2d70cebea587ac806a
1121 1121 9520eea781bcca16c1e15acc0ba14335a0e8e5ba
1122 1122 eea13746799a9e0bfd88f29d3c2e9dc9389f524f
1123 1123 02de42196ebee42ef284b6780a87cdc96e8eaab6
1124 1124 $ hg unbundle ../rev.hg2.bz
1125 1125 adding changesets
1126 1126 adding manifests
1127 1127 adding file changes
1128 1128 added 0 changesets with 0 changes to 3 files
1129 1129 (run 'hg update' to get a working copy)
1130 1130 Simple case where it just work: BZ
1131 1131 ----------------------------------
1132 1132
1133 1133 $ hg bundle2 --compress BZ --rev '8+7+5+4' ../rev.hg2.bz
1134 1134 $ f --hexdump ../rev.hg2.bz
1135 1135 ../rev.hg2.bz:
1136 1136 0000: 48 47 32 30 00 00 00 0e 43 6f 6d 70 72 65 73 73 |HG20....Compress|
1137 1137 0010: 69 6f 6e 3d 42 5a 42 5a 68 39 31 41 59 26 53 59 |ion=BZBZh91AY&SY|
1138 1138 0020: a3 4b 18 3d 00 00 1a 7f ff ff bf 5f f6 ef ef 7f |.K.=......._....|
1139 1139 0030: f6 3f f7 d1 d9 ff ff f7 6e ff ff 6e f7 f6 bd df |.?......n..n....|
1140 1140 0040: b5 ab ff cf 67 f6 e7 7b f7 c0 02 d7 33 82 8b 51 |....g..{....3..Q|
1141 1141 0050: 04 a5 53 d5 3d 27 a0 99 18 4d 0d 34 00 d1 a1 e8 |..S.='...M.4....|
1142 1142 0060: 80 c8 7a 87 a9 a3 43 6a 3d 46 86 26 80 34 3d 40 |..z...Cj=F.&.4=@|
1143 1143 0070: c8 c9 b5 34 f4 8f 48 0f 51 ea 34 34 fd 4d aa 19 |...4..H.Q.44.M..|
1144 1144 0080: 03 40 0c 08 da 86 43 d4 f5 0f 42 1e a0 f3 54 33 |.@....C...B...T3|
1145 1145 0090: 54 d3 13 4d 03 40 32 00 00 32 03 26 80 0d 00 0d |T..M.@2..2.&....|
1146 1146 00a0: 00 68 c8 c8 03 20 32 30 98 8c 80 00 00 03 4d 00 |.h... 20......M.|
1147 1147 00b0: c8 00 00 0d 00 00 22 99 a1 34 c2 64 a6 d5 34 1a |......"..4.d..4.|
1148 1148 00c0: 00 00 06 86 83 4d 07 a8 d1 a0 68 01 a0 00 00 00 |.....M....h.....|
1149 1149 00d0: 00 0d 06 80 00 00 00 0d 00 03 40 00 00 04 a4 a1 |..........@.....|
1150 1150 00e0: 4d a9 89 89 b4 9a 32 0c 43 46 86 87 a9 8d 41 9a |M.....2.CF....A.|
1151 1151 00f0: 98 46 9a 0d 31 32 1a 34 0d 0c 8d a2 0c 98 4d 06 |.F..12.4......M.|
1152 1152 0100: 8c 40 c2 60 8d 0d 0c 20 c9 89 fa a0 d0 d3 21 a1 |.@.`... ......!.|
1153 1153 0110: ea 34 d3 68 9e a6 d1 74 05 33 cb 66 96 93 28 64 |.4.h...t.3.f..(d|
1154 1154 0120: 40 91 22 ac 55 9b ea 40 7b 38 94 e2 f8 06 00 cb |@.".U..@{8......|
1155 1155 0130: 28 02 00 4d ab 40 24 10 43 18 cf 64 b4 06 83 0c |(..M.@$.C..d....|
1156 1156 0140: 34 6c b4 a3 d4 0a 0a e4 a8 5c 4e 23 c0 c9 7a 31 |4l.......\N#..z1|
1157 1157 0150: 97 87 77 7a 64 88 80 8e 60 97 20 93 0f 8e eb c4 |..wzd...`. .....|
1158 1158 0160: 62 a4 44 a3 52 20 b2 99 a9 2e e1 d7 29 4a 54 ac |b.D.R ......)JT.|
1159 1159 0170: 44 7a bb cc 04 3d e0 aa bd 6a 33 5e 9b a2 57 36 |Dz...=...j3^..W6|
1160 1160 0180: fa cb 45 bb 6d 3e c1 d9 d9 f5 83 69 8a d0 e0 e2 |..E.m>.....i....|
1161 1161 0190: e7 ae 90 55 24 da 3f ab 78 c0 4c b4 56 a3 9e a4 |...U$.?.x.L.V...|
1162 1162 01a0: af 9c 65 74 86 ec 6d dc 62 dc 33 ca c8 50 dd 9d |..et..m.b.3..P..|
1163 1163 01b0: 98 8e 9e 59 20 f3 f0 42 91 4a 09 f5 75 8d 3d a5 |...Y ..B.J..u.=.|
1164 1164 01c0: a5 15 cb 8d 10 63 b0 c2 2e b2 81 f7 c1 76 0e 53 |.....c.......v.S|
1165 1165 01d0: 6c 0e 46 73 b5 ae 67 f9 4c 0b 45 6b a8 32 2a 2f |l.Fs..g.L.Ek.2*/|
1166 1166 01e0: a2 54 a4 44 05 20 a1 38 d1 a4 c6 09 a8 2b 08 99 |.T.D. .8.....+..|
1167 1167 01f0: a4 14 ae 8d a3 e3 aa 34 27 d8 44 ca c3 5d 21 8b |.......4'.D..]!.|
1168 1168 0200: 1a 1e 97 29 71 2b 09 4a 4a 55 55 94 58 65 b2 bc |...)q+.JJUU.Xe..|
1169 1169 0210: f3 a5 90 26 36 76 67 7a 51 98 d6 8a 4a 99 50 b5 |...&6vgzQ...J.P.|
1170 1170 0220: 99 8f 94 21 17 a9 8b f3 ad 4c 33 d4 2e 40 c8 0c |...!.....L3..@..|
1171 1171 0230: 3b 90 53 39 db 48 02 34 83 48 d6 b3 99 13 d2 58 |;.S9.H.4.H.....X|
1172 1172 0240: 65 8e 71 ac a9 06 95 f2 c4 8e b4 08 6b d3 0c ae |e.q.........k...|
1173 1173 0250: d9 90 56 71 43 a7 a2 62 16 3e 50 63 d3 57 3c 2d |..VqC..b.>Pc.W<-|
1174 1174 0260: 9f 0f 34 05 08 d8 a6 4b 59 31 54 66 3a 45 0c 8a |..4....KY1Tf:E..|
1175 1175 0270: c7 90 3a f0 6a 83 1b f5 ca fb 80 2b 50 06 fb 51 |..:.j......+P..Q|
1176 1176 0280: 7e a6 a4 d4 81 44 82 21 54 00 5b 1a 30 83 62 a3 |~....D.!T.[.0.b.|
1177 1177 0290: 18 b6 24 19 1e 45 df 4d 5c db a6 af 5b ac 90 fa |..$..E.M\...[...|
1178 1178 02a0: 3e ed f9 ec 4c ba 36 ee d8 60 20 a7 c7 3b cb d1 |>...L.6..` ..;..|
1179 1179 02b0: 90 43 7d 27 16 50 5d ad f4 14 07 0b 90 5c cc 6b |.C}'.P]......\.k|
1180 1180 02c0: 8d 3f a6 88 f4 34 37 a8 cf 14 63 36 19 f7 3e 28 |.?...47...c6..>(|
1181 1181 02d0: de 99 e8 16 a4 9d 0d 40 a1 a7 24 52 14 a6 72 62 |.......@..$R..rb|
1182 1182 02e0: 59 5a ca 2d e5 51 90 78 88 d9 c6 c7 21 d0 f7 46 |YZ.-.Q.x....!..F|
1183 1183 02f0: b2 04 46 44 4e 20 9c 12 b1 03 4e 25 e0 a9 0c 58 |..FDN ....N%...X|
1184 1184 0300: 5b 1d 3c 93 20 01 51 de a9 1c 69 23 32 46 14 b4 |[.<. .Q...i#2F..|
1185 1185 0310: 90 db 17 98 98 50 03 90 29 aa 40 b0 13 d8 43 d2 |.....P..).@...C.|
1186 1186 0320: 5f c5 9d eb f3 f2 ad 41 e8 7a a9 ed a1 58 84 a6 |_......A.z...X..|
1187 1187 0330: 42 bf d6 fc 24 82 c1 20 32 26 4a 15 a6 1d 29 7f |B...$.. 2&J...).|
1188 1188 0340: 7e f4 3d 07 bc 62 9a 5b ec 44 3d 72 1d 41 8b 5c |~.=..b.[.D=r.A.\|
1189 1189 0350: 80 de 0e 62 9a 2e f8 83 00 d5 07 a0 9c c6 74 98 |...b..........t.|
1190 1190 0360: 11 b2 5e a9 38 02 03 ee fd 86 5c f4 86 b3 ae da |..^.8.....\.....|
1191 1191 0370: 05 94 01 c5 c6 ea 18 e6 ba 2a ba b3 04 5c 96 89 |.........*...\..|
1192 1192 0380: 72 63 5b 10 11 f6 67 34 98 cb e4 c0 4e fa e6 99 |rc[...g4....N...|
1193 1193 0390: 19 6e 50 e8 26 8d 0c 17 e0 be ef e1 8e 02 6f 32 |.nP.&.........o2|
1194 1194 03a0: 82 dc 26 f8 a1 08 f3 8a 0d f3 c4 75 00 48 73 b8 |..&........u.Hs.|
1195 1195 03b0: be 3b 0d 7f d0 fd c7 78 96 ec e0 03 80 68 4d 8d |.;.....x.....hM.|
1196 1196 03c0: 43 8c d7 68 58 f9 50 f0 18 cb 21 58 1b 60 cd 1f |C..hX.P...!X.`..|
1197 1197 03d0: 84 36 2e 16 1f 0a f7 4e 8f eb df 01 2d c2 79 0b |.6.....N....-.y.|
1198 1198 03e0: f7 24 ea 0d e8 59 86 51 6e 1c 30 a3 ad 2f ee 8c |.$...Y.Qn.0../..|
1199 1199 03f0: 90 c8 84 d5 e8 34 c1 95 b2 c9 f6 4d 87 1c 7d 19 |.....4.....M..}.|
1200 1200 0400: d6 41 58 56 7a e0 6c ba 10 c7 e8 33 39 36 96 e7 |.AXVz.l....396..|
1201 1201 0410: d2 f9 59 9a 08 95 48 38 e7 0b b7 0a 24 67 c4 39 |..Y...H8....$g.9|
1202 1202 0420: 8b 43 88 57 9c 01 f5 61 b5 e1 27 41 7e af 83 fe |.C.W...a..'A~...|
1203 1203 0430: 2e e4 8a 70 a1 21 46 96 30 7a |...p.!F.0z|
1204 1204 $ hg debugbundle ../rev.hg2.bz
1205 1205 Stream params: {'Compression': 'BZ'}
1206 1206 changegroup -- '{}'
1207 1207 32af7686d403cf45b5d95f2d70cebea587ac806a
1208 1208 9520eea781bcca16c1e15acc0ba14335a0e8e5ba
1209 1209 eea13746799a9e0bfd88f29d3c2e9dc9389f524f
1210 1210 02de42196ebee42ef284b6780a87cdc96e8eaab6
1211 1211 $ hg unbundle ../rev.hg2.bz
1212 1212 adding changesets
1213 1213 adding manifests
1214 1214 adding file changes
1215 1215 added 0 changesets with 0 changes to 3 files
1216 1216 (run 'hg update' to get a working copy)
1217 1217
1218 1218 unknown compression while unbundling
1219 1219 -----------------------------
1220 1220
1221 1221 $ hg bundle2 --param Compression=FooBarUnknown --rev '8+7+5+4' ../rev.hg2.bz
1222 1222 $ cat ../rev.hg2.bz | hg statbundle2
1223 1223 abort: unknown parameters: Stream Parameter - Compression='FooBarUnknown'
1224 1224 [255]
1225 1225 $ hg unbundle ../rev.hg2.bz
1226 1226 abort: ../rev.hg2.bz: unknown bundle feature, Stream Parameter - Compression='FooBarUnknown'
1227 1227 (see https://mercurial-scm.org/wiki/BundleFeature for more information)
1228 1228 [255]
1229 1229
1230 1230 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now