comparison tests/test-bundle2-format.t @ 24686:e0e28e910fa3

bundle2: rename format, parts and config to final names It is finally time to freeze the bundle2 format! To do so we: - rename HG2Y to HG20, - drop "b2x:" prefix from all part names, - rename capability to "bundle2-exp" to "bundle2" - rename the hook flag from 'bundle2-exp' to 'bundle2'
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 09 Apr 2015 16:25:48 -0400
parents 60fecc5b14a4
children bd625cd4e5e7
comparison
equal deleted inserted replaced
24685:b3d78d82d84c 24686:e0e28e910fa3
90 > except ValueError, exc: 90 > except ValueError, exc:
91 > raise util.Abort('%s' % exc) 91 > raise util.Abort('%s' % exc)
92 > 92 >
93 > if opts['reply']: 93 > if opts['reply']:
94 > capsstring = 'ping-pong\nelephants=babar,celeste\ncity%3D%21=celeste%2Cville' 94 > capsstring = 'ping-pong\nelephants=babar,celeste\ncity%3D%21=celeste%2Cville'
95 > bundler.newpart('b2x:replycaps', data=capsstring) 95 > bundler.newpart('replycaps', data=capsstring)
96 > 96 >
97 > if opts['pushrace']: 97 > if opts['pushrace']:
98 > # also serve to test the assignement of data outside of init 98 > # also serve to test the assignement of data outside of init
99 > part = bundler.newpart('b2x:check:heads') 99 > part = bundler.newpart('check:heads')
100 > part.data = '01234567890123456789' 100 > part.data = '01234567890123456789'
101 > 101 >
102 > revs = opts['rev'] 102 > revs = opts['rev']
103 > if 'rev' in opts: 103 > if 'rev' in opts:
104 > revs = scmutil.revrange(repo, opts['rev']) 104 > revs = scmutil.revrange(repo, opts['rev'])
107 > bundled = repo.revs('%ld::%ld', revs, revs) 107 > bundled = repo.revs('%ld::%ld', revs, revs)
108 > headmissing = [c.node() for c in repo.set('heads(%ld)', revs)] 108 > headmissing = [c.node() for c in repo.set('heads(%ld)', revs)]
109 > headcommon = [c.node() for c in repo.set('parents(%ld) - %ld', revs, revs)] 109 > headcommon = [c.node() for c in repo.set('parents(%ld) - %ld', revs, revs)]
110 > outgoing = discovery.outgoing(repo.changelog, headcommon, headmissing) 110 > outgoing = discovery.outgoing(repo.changelog, headcommon, headmissing)
111 > cg = changegroup.getlocalchangegroup(repo, 'test:bundle2', outgoing, None) 111 > cg = changegroup.getlocalchangegroup(repo, 'test:bundle2', outgoing, None)
112 > bundler.newpart('b2x:changegroup', data=cg.getchunks(), 112 > bundler.newpart('changegroup', data=cg.getchunks(),
113 > mandatory=False) 113 > mandatory=False)
114 > 114 >
115 > if opts['parts']: 115 > if opts['parts']:
116 > bundler.newpart('test:empty', mandatory=False) 116 > bundler.newpart('test:empty', mandatory=False)
117 > # add a second one to make sure we handle multiple parts 117 > # add a second one to make sure we handle multiple parts
134 > bundler.newpart('test:ping', mandatory=False) 134 > bundler.newpart('test:ping', mandatory=False)
135 > if opts['genraise']: 135 > if opts['genraise']:
136 > def genraise(): 136 > def genraise():
137 > yield 'first line\n' 137 > yield 'first line\n'
138 > raise RuntimeError('Someone set up us the bomb!') 138 > raise RuntimeError('Someone set up us the bomb!')
139 > bundler.newpart('b2x:output', data=genraise(), mandatory=False) 139 > bundler.newpart('output', data=genraise(), mandatory=False)
140 > 140 >
141 > if path is None: 141 > if path is None:
142 > file = sys.stdout 142 > file = sys.stdout
143 > else: 143 > else:
144 > file = open(path, 'wb') 144 > file = open(path, 'wb')
235 - no parts 235 - no parts
236 236
237 Test bundling 237 Test bundling
238 238
239 $ hg bundle2 239 $ hg bundle2
240 HG2Y\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc) 240 HG20\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
241 241
242 Test unbundling 242 Test unbundling
243 243
244 $ hg bundle2 | hg statbundle2 244 $ hg bundle2 | hg statbundle2
245 options count: 0 245 options count: 0
265 Simplest possible parameters form 265 Simplest possible parameters form
266 266
267 Test generation simple option 267 Test generation simple option
268 268
269 $ hg bundle2 --param 'caution' 269 $ hg bundle2 --param 'caution'
270 HG2Y\x00\x00\x00\x07caution\x00\x00\x00\x00 (no-eol) (esc) 270 HG20\x00\x00\x00\x07caution\x00\x00\x00\x00 (no-eol) (esc)
271 271
272 Test unbundling 272 Test unbundling
273 273
274 $ hg bundle2 --param 'caution' | hg statbundle2 274 $ hg bundle2 --param 'caution' | hg statbundle2
275 options count: 1 275 options count: 1
277 parts count: 0 277 parts count: 0
278 278
279 Test generation multiple option 279 Test generation multiple option
280 280
281 $ hg bundle2 --param 'caution' --param 'meal' 281 $ hg bundle2 --param 'caution' --param 'meal'
282 HG2Y\x00\x00\x00\x0ccaution meal\x00\x00\x00\x00 (no-eol) (esc) 282 HG20\x00\x00\x00\x0ccaution meal\x00\x00\x00\x00 (no-eol) (esc)
283 283
284 Test unbundling 284 Test unbundling
285 285
286 $ hg bundle2 --param 'caution' --param 'meal' | hg statbundle2 286 $ hg bundle2 --param 'caution' --param 'meal' | hg statbundle2
287 options count: 2 287 options count: 2
293 ------------------------------- 293 -------------------------------
294 294
295 Test generation 295 Test generation
296 296
297 $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 'elephants' 297 $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 'elephants'
298 HG2Y\x00\x00\x00\x1ccaution meal=vegan elephants\x00\x00\x00\x00 (no-eol) (esc) 298 HG20\x00\x00\x00\x1ccaution meal=vegan elephants\x00\x00\x00\x00 (no-eol) (esc)
299 299
300 Test unbundling 300 Test unbundling
301 301
302 $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 'elephants' | hg statbundle2 302 $ hg bundle2 --param 'caution' --param 'meal=vegan' --param 'elephants' | hg statbundle2
303 options count: 3 303 options count: 3
311 --------------------------------------------------- 311 ---------------------------------------------------
312 312
313 Test generation 313 Test generation
314 314
315 $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple 315 $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple
316 HG2Y\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu simple\x00\x00\x00\x00 (no-eol) (esc) 316 HG20\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu simple\x00\x00\x00\x00 (no-eol) (esc)
317 317
318 Test unbundling 318 Test unbundling
319 319
320 $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple | hg statbundle2 320 $ hg bundle2 --param 'e|! 7/=babar%#==tutu' --param simple | hg statbundle2
321 options count: 2 321 options count: 2
335 --------------------------------------------------- 335 ---------------------------------------------------
336 336
337 bundling debug 337 bundling debug
338 338
339 $ hg bundle2 --debug --param 'e|! 7/=babar%#==tutu' --param simple ../out.hg2 339 $ hg bundle2 --debug --param 'e|! 7/=babar%#==tutu' --param simple ../out.hg2
340 start emission of HG2Y stream 340 start emission of HG20 stream
341 bundle parameter: e%7C%21%207/=babar%25%23%3D%3Dtutu simple 341 bundle parameter: e%7C%21%207/=babar%25%23%3D%3Dtutu simple
342 start of parts 342 start of parts
343 end of bundle 343 end of bundle
344 344
345 file content is ok 345 file content is ok
346 346
347 $ cat ../out.hg2 347 $ cat ../out.hg2
348 HG2Y\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu simple\x00\x00\x00\x00 (no-eol) (esc) 348 HG20\x00\x00\x00)e%7C%21%207/=babar%25%23%3D%3Dtutu simple\x00\x00\x00\x00 (no-eol) (esc)
349 349
350 unbundling debug 350 unbundling debug
351 351
352 $ hg statbundle2 --debug < ../out.hg2 352 $ hg statbundle2 --debug < ../out.hg2
353 start processing of HG2Y stream 353 start processing of HG20 stream
354 reading bundle2 stream parameters 354 reading bundle2 stream parameters
355 ignoring unknown parameter 'e|! 7/' 355 ignoring unknown parameter 'e|! 7/'
356 ignoring unknown parameter 'simple' 356 ignoring unknown parameter 'simple'
357 options count: 2 357 options count: 2
358 - e|! 7/ 358 - e|! 7/
382 382
383 Test part 383 Test part
384 ================= 384 =================
385 385
386 $ hg bundle2 --parts ../parts.hg2 --debug 386 $ hg bundle2 --parts ../parts.hg2 --debug
387 start emission of HG2Y stream 387 start emission of HG20 stream
388 bundle parameter: 388 bundle parameter:
389 start of parts 389 start of parts
390 bundle part: "test:empty" 390 bundle part: "test:empty"
391 bundle part: "test:empty" 391 bundle part: "test:empty"
392 bundle part: "test:song" 392 bundle part: "test:song"
395 bundle part: "test:song" 395 bundle part: "test:song"
396 bundle part: "test:ping" 396 bundle part: "test:ping"
397 end of bundle 397 end of bundle
398 398
399 $ cat ../parts.hg2 399 $ cat ../parts.hg2
400 HG2Y\x00\x00\x00\x00\x00\x00\x00\x11 (esc) 400 HG20\x00\x00\x00\x00\x00\x00\x00\x11 (esc)
401 test:empty\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11 (esc) 401 test:empty\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11 (esc)
402 test:empty\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10 test:song\x00\x00\x00\x02\x00\x00\x00\x00\x00\xb2Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko (esc) 402 test:empty\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10 test:song\x00\x00\x00\x02\x00\x00\x00\x00\x00\xb2Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko (esc)
403 Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko 403 Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
404 Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.\x00\x00\x00\x00\x00\x00\x00\x16\x0ftest:debugreply\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00+ test:math\x00\x00\x00\x04\x02\x01\x02\x04\x01\x04\x07\x03pi3.14e2.72cookingraw\x00\x00\x00\x0242\x00\x00\x00\x00\x00\x00\x00\x1d test:song\x00\x00\x00\x05\x01\x00\x0b\x00randomparam\x00\x00\x00\x00\x00\x00\x00\x10 test:ping\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc) 404 Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.\x00\x00\x00\x00\x00\x00\x00\x16\x0ftest:debugreply\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00+ test:math\x00\x00\x00\x04\x02\x01\x02\x04\x01\x04\x07\x03pi3.14e2.72cookingraw\x00\x00\x00\x0242\x00\x00\x00\x00\x00\x00\x00\x1d test:song\x00\x00\x00\x05\x01\x00\x0b\x00randomparam\x00\x00\x00\x00\x00\x00\x00\x10 test:ping\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
405 405
435 advisory: 0 435 advisory: 0
436 payload: 0 bytes 436 payload: 0 bytes
437 parts count: 7 437 parts count: 7
438 438
439 $ hg statbundle2 --debug < ../parts.hg2 439 $ hg statbundle2 --debug < ../parts.hg2
440 start processing of HG2Y stream 440 start processing of HG20 stream
441 reading bundle2 stream parameters 441 reading bundle2 stream parameters
442 options count: 0 442 options count: 0
443 start extraction of bundle2 parts 443 start extraction of bundle2 parts
444 part header size: 17 444 part header size: 17
445 part type: "test:empty" 445 part type: "test:empty"
514 ======================================= 514 =======================================
515 515
516 Process the bundle 516 Process the bundle
517 517
518 $ hg unbundle2 --debug < ../parts.hg2 518 $ hg unbundle2 --debug < ../parts.hg2
519 start processing of HG2Y stream 519 start processing of HG20 stream
520 reading bundle2 stream parameters 520 reading bundle2 stream parameters
521 start extraction of bundle2 parts 521 start extraction of bundle2 parts
522 part header size: 17 522 part header size: 17
523 part type: "test:empty" 523 part type: "test:empty"
524 part id: "0" 524 part id: "0"
608 3 total verses sung 608 3 total verses sung
609 609
610 The reply is a bundle 610 The reply is a bundle
611 611
612 $ cat ../reply.hg2 612 $ cat ../reply.hg2
613 HG2Y\x00\x00\x00\x00\x00\x00\x00\x1f (esc) 613 HG20\x00\x00\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x00\x00\x01\x0b\x01in-reply-to3\x00\x00\x00\xd9The choir starts singing: (esc)
614 b2x:output\x00\x00\x00\x00\x00\x01\x0b\x01in-reply-to3\x00\x00\x00\xd9The choir starts singing: (esc)
615 Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko 614 Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
616 Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko 615 Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
617 Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko. 616 Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.
618 \x00\x00\x00\x00\x00\x00\x00\x1f (esc) 617 \x00\x00\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to4\x00\x00\x00\xc9debugreply: capabilities: (esc)
619 b2x:output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to4\x00\x00\x00\xc9debugreply: capabilities: (esc)
620 debugreply: 'city=!' 618 debugreply: 'city=!'
621 debugreply: 'celeste,ville' 619 debugreply: 'celeste,ville'
622 debugreply: 'elephants' 620 debugreply: 'elephants'
623 debugreply: 'babar' 621 debugreply: 'babar'
624 debugreply: 'celeste' 622 debugreply: 'celeste'
625 debugreply: 'ping-pong' 623 debugreply: 'ping-pong'
626 \x00\x00\x00\x00\x00\x00\x00\x1e test:pong\x00\x00\x00\x02\x01\x00\x0b\x01in-reply-to7\x00\x00\x00\x00\x00\x00\x00\x1f (esc) 624 \x00\x00\x00\x00\x00\x00\x00\x1e test:pong\x00\x00\x00\x02\x01\x00\x0b\x01in-reply-to7\x00\x00\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x03\x00\x01\x0b\x01in-reply-to7\x00\x00\x00=received ping request (id 7) (esc)
627 b2x:output\x00\x00\x00\x03\x00\x01\x0b\x01in-reply-to7\x00\x00\x00=received ping request (id 7) (esc)
628 replying to ping request (id 7) 625 replying to ping request (id 7)
629 \x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc) 626 \x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
630 627
631 The reply is valid 628 The reply is valid
632 629
633 $ hg statbundle2 < ../reply.hg2 630 $ hg statbundle2 < ../reply.hg2
634 options count: 0 631 options count: 0
635 :b2x:output: 632 :output:
636 mandatory: 0 633 mandatory: 0
637 advisory: 1 634 advisory: 1
638 payload: 217 bytes 635 payload: 217 bytes
639 :b2x:output: 636 :output:
640 mandatory: 0 637 mandatory: 0
641 advisory: 1 638 advisory: 1
642 payload: 201 bytes 639 payload: 201 bytes
643 :test:pong: 640 :test:pong:
644 mandatory: 1 641 mandatory: 1
645 advisory: 0 642 advisory: 0
646 payload: 0 bytes 643 payload: 0 bytes
647 :b2x:output: 644 :output:
648 mandatory: 0 645 mandatory: 0
649 advisory: 1 646 advisory: 1
650 payload: 61 bytes 647 payload: 61 bytes
651 parts count: 4 648 parts count: 4
652 649
712 list of changesets: 709 list of changesets:
713 32af7686d403cf45b5d95f2d70cebea587ac806a 710 32af7686d403cf45b5d95f2d70cebea587ac806a
714 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 711 9520eea781bcca16c1e15acc0ba14335a0e8e5ba
715 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 712 eea13746799a9e0bfd88f29d3c2e9dc9389f524f
716 02de42196ebee42ef284b6780a87cdc96e8eaab6 713 02de42196ebee42ef284b6780a87cdc96e8eaab6
717 start emission of HG2Y stream 714 start emission of HG20 stream
718 bundle parameter: 715 bundle parameter:
719 start of parts 716 start of parts
720 bundle part: "b2x:changegroup" 717 bundle part: "changegroup"
721 bundling: 1/4 changesets (25.00%) 718 bundling: 1/4 changesets (25.00%)
722 bundling: 2/4 changesets (50.00%) 719 bundling: 2/4 changesets (50.00%)
723 bundling: 3/4 changesets (75.00%) 720 bundling: 3/4 changesets (75.00%)
724 bundling: 4/4 changesets (100.00%) 721 bundling: 4/4 changesets (100.00%)
725 bundling: 1/4 manifests (25.00%) 722 bundling: 1/4 manifests (25.00%)
730 bundling: E 2/3 files (66.67%) 727 bundling: E 2/3 files (66.67%)
731 bundling: H 3/3 files (100.00%) 728 bundling: H 3/3 files (100.00%)
732 end of bundle 729 end of bundle
733 730
734 $ cat ../rev.hg2 731 $ cat ../rev.hg2
735 HG2Y\x00\x00\x00\x00\x00\x00\x00\x16\x0fb2x:changegroup\x00\x00\x00\x00\x00\x00\x00\x00\x06\x13\x00\x00\x00\xa42\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xce\xbe\xa5\x87\xac\x80j_\xdd\xd9\x89W\xc8\xa5JMCm\xfe\x1d\xa9\xd8\x7f!\xa1\xb9{\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xce\xbe\xa5\x87\xac\x80j\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00)6e1f4c47ecb533ffd0c8e52cdc88afb6cd39e20c (esc) 732 HG20\x00\x00\x00\x00\x00\x00\x00\x12\x0bchangegroup\x00\x00\x00\x00\x00\x00\x00\x00\x06\x13\x00\x00\x00\xa42\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xce\xbe\xa5\x87\xac\x80j_\xdd\xd9\x89W\xc8\xa5JMCm\xfe\x1d\xa9\xd8\x7f!\xa1\xb9{\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\xafv\x86\xd4\x03\xcfE\xb5\xd9_-p\xce\xbe\xa5\x87\xac\x80j\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00)6e1f4c47ecb533ffd0c8e52cdc88afb6cd39e20c (esc)
736 \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x02D (esc) 733 \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x02D (esc)
737 \x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01D\x00\x00\x00\xa4\x95 \xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\xcd\x01\x0b\x8c\xd9\x98\xf3\x98\x1aZ\x81\x15\xf9O\x8d\xa4\xabP`\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95 \xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00)4dece9c826f69490507b98c6383a3009b295837d (esc) 734 \x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01D\x00\x00\x00\xa4\x95 \xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\xcd\x01\x0b\x8c\xd9\x98\xf3\x98\x1aZ\x81\x15\xf9O\x8d\xa4\xabP`\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95 \xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00)4dece9c826f69490507b98c6383a3009b295837d (esc)
738 \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x02E (esc) 735 \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x02E (esc)
739 \x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01E\x00\x00\x00\xa2\xee\xa17Fy\x9a\x9e\x0b\xfd\x88\xf2\x9d<.\x9d\xc98\x9fRO$\xb68|\x8c\x8c\xae7\x17\x88\x80\xf3\xfa\x95\xde\xd3\xcb\x1c\xf7\x85\x95 \xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\xee\xa17Fy\x9a\x9e\x0b\xfd\x88\xf2\x9d<.\x9d\xc98\x9fRO\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00)365b93d57fdf4814e2b5911d6bacff2b12014441 (esc) 736 \x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01E\x00\x00\x00\xa2\xee\xa17Fy\x9a\x9e\x0b\xfd\x88\xf2\x9d<.\x9d\xc98\x9fRO$\xb68|\x8c\x8c\xae7\x17\x88\x80\xf3\xfa\x95\xde\xd3\xcb\x1c\xf7\x85\x95 \xee\xa7\x81\xbc\xca\x16\xc1\xe1Z\xcc\x0b\xa1C5\xa0\xe8\xe5\xba\xee\xa17Fy\x9a\x9e\x0b\xfd\x88\xf2\x9d<.\x9d\xc98\x9fRO\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00)365b93d57fdf4814e2b5911d6bacff2b12014441 (esc)
740 \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01G\x00\x00\x00\xa4\x02\xdeB\x19n\xbe\xe4.\xf2\x84\xb6x (esc) 737 \x00\x00\x00f\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00i\x00\x00\x00j\x00\x00\x00\x01G\x00\x00\x00\xa4\x02\xdeB\x19n\xbe\xe4.\xf2\x84\xb6x (esc)
755 \x87\xcd\xc9n\x8e\xaa\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02H (esc) 752 \x87\xcd\xc9n\x8e\xaa\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02H (esc)
756 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc) 753 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
757 754
758 $ hg debugbundle ../rev.hg2 755 $ hg debugbundle ../rev.hg2
759 Stream params: {} 756 Stream params: {}
760 b2x:changegroup -- '{}' 757 changegroup -- '{}'
761 32af7686d403cf45b5d95f2d70cebea587ac806a 758 32af7686d403cf45b5d95f2d70cebea587ac806a
762 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 759 9520eea781bcca16c1e15acc0ba14335a0e8e5ba
763 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 760 eea13746799a9e0bfd88f29d3c2e9dc9389f524f
764 02de42196ebee42ef284b6780a87cdc96e8eaab6 761 02de42196ebee42ef284b6780a87cdc96e8eaab6
765 $ hg unbundle ../rev.hg2 762 $ hg unbundle ../rev.hg2
774 $ hg unbundle2 ../rev-reply.hg2 < ../rev-rr.hg2 771 $ hg unbundle2 ../rev-reply.hg2 < ../rev-rr.hg2
775 0 unread bytes 772 0 unread bytes
776 addchangegroup return: 1 773 addchangegroup return: 1
777 774
778 $ cat ../rev-reply.hg2 775 $ cat ../rev-reply.hg2
779 HG2Y\x00\x00\x00\x00\x00\x00\x003\x15b2x:reply:changegroup\x00\x00\x00\x00\x00\x02\x0b\x01\x06\x01in-reply-to1return1\x00\x00\x00\x00\x00\x00\x00\x1f (esc) 776 HG20\x00\x00\x00\x00\x00\x00\x00/\x11reply:changegroup\x00\x00\x00\x00\x00\x02\x0b\x01\x06\x01in-reply-to1return1\x00\x00\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to1\x00\x00\x00dadding changesets (esc)
780 b2x:output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to1\x00\x00\x00dadding changesets (esc)
781 adding manifests 777 adding manifests
782 adding file changes 778 adding file changes
783 added 0 changesets with 0 changes to 3 files 779 added 0 changesets with 0 changes to 3 files
784 \x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc) 780 \x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
785 781
791 [255] 787 [255]
792 788
793 Should still be a valid bundle 789 Should still be a valid bundle
794 790
795 $ cat ../genfailed.hg2 791 $ cat ../genfailed.hg2
796 HG2Y\x00\x00\x00\x00\x00\x00\x00\x11 (esc) 792 HG20\x00\x00\x00\x00\x00\x00\x00\r (no-eol) (esc)
797 b2x:output\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00L\x0fb2x:error:abort\x00\x00\x00\x00\x01\x00\x07-messageunexpected error: Someone set up us the bomb!\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc) 793 \x06output\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00H\x0berror:abort\x00\x00\x00\x00\x01\x00\x07-messageunexpected error: Someone set up us the bomb!\x00\x00\x00\x00\x00\x00\x00\x00 (no-eol) (esc)
798 794
799 And its handling on the other size raise a clean exception 795 And its handling on the other size raise a clean exception
800 796
801 $ cat ../genfailed.hg2 | hg unbundle2 797 $ cat ../genfailed.hg2 | hg unbundle2
802 0 unread bytes 798 0 unread bytes