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