Mercurial > hg
comparison tests/test-wireproto-command-changesetdata.t @ 39814:d059cb669632
wireprotov2: allow multiple fields to follow revision maps
The *data wire protocol commands emit a series of CBOR values.
Because revision/delta data may be large, their data is emitted
outside the map as a top-level bytestring value.
Before this commit, we'd emit a single optional bytestring
value after the revision descriptor map. This got the job done.
But it was limiting in that we could only send a single field.
And, it required the consumer to know that the presence of a
key in the map implied the existence of a following bytestring
value.
This commit changes the encoding strategy so top-level bytestring
values in the stream are explicitly denoted in a "fieldsfollowing"
key. This key contains an array defining what fields that follow
and the expected size of each field.
By defining things this way, we can easily send N bytestring
values without any ambiguity about their order. In addition,
clients only need to know how to parse ``fieldsfollowing`` to
know if extra values are present.
Because this breaks backwards compatibility, we've bumped the version
number of the wire protocol version 2 API endpoint.
Differential Revision: https://phab.mercurial-scm.org/D4620
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 20 Sep 2018 12:57:23 -0700 |
parents | 9dffa99f9158 |
children | d3d333ab167a |
comparison
equal
deleted
inserted
replaced
39813:c30faea8d02d | 39814:d059cb669632 |
---|---|
42 $ sendhttpv2peer << EOF | 42 $ sendhttpv2peer << EOF |
43 > command changesetdata | 43 > command changesetdata |
44 > EOF | 44 > EOF |
45 creating http peer for wire protocol version 2 | 45 creating http peer for wire protocol version 2 |
46 sending changesetdata command | 46 sending changesetdata command |
47 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 47 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
48 s> Accept-Encoding: identity\r\n | 48 s> Accept-Encoding: identity\r\n |
49 s> accept: application/mercurial-exp-framing-0005\r\n | 49 s> accept: application/mercurial-exp-framing-0005\r\n |
50 s> content-type: application/mercurial-exp-framing-0005\r\n | 50 s> content-type: application/mercurial-exp-framing-0005\r\n |
51 s> content-length: 28\r\n | 51 s> content-length: 28\r\n |
52 s> host: $LOCALIP:$HGPORT\r\n (glob) | 52 s> host: $LOCALIP:$HGPORT\r\n (glob) |
76 > command changesetdata | 76 > command changesetdata |
77 > noderange eval:[[],[]] | 77 > noderange eval:[[],[]] |
78 > EOF | 78 > EOF |
79 creating http peer for wire protocol version 2 | 79 creating http peer for wire protocol version 2 |
80 sending changesetdata command | 80 sending changesetdata command |
81 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 81 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
82 s> Accept-Encoding: identity\r\n | 82 s> Accept-Encoding: identity\r\n |
83 s> accept: application/mercurial-exp-framing-0005\r\n | 83 s> accept: application/mercurial-exp-framing-0005\r\n |
84 s> content-type: application/mercurial-exp-framing-0005\r\n | 84 s> content-type: application/mercurial-exp-framing-0005\r\n |
85 s> content-length: 47\r\n | 85 s> content-length: 47\r\n |
86 s> host: $LOCALIP:$HGPORT\r\n (glob) | 86 s> host: $LOCALIP:$HGPORT\r\n (glob) |
110 > command changesetdata | 110 > command changesetdata |
111 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 111 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] |
112 > EOF | 112 > EOF |
113 creating http peer for wire protocol version 2 | 113 creating http peer for wire protocol version 2 |
114 sending changesetdata command | 114 sending changesetdata command |
115 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 115 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
116 s> Accept-Encoding: identity\r\n | 116 s> Accept-Encoding: identity\r\n |
117 s> accept: application/mercurial-exp-framing-0005\r\n | 117 s> accept: application/mercurial-exp-framing-0005\r\n |
118 s> content-type: application/mercurial-exp-framing-0005\r\n | 118 s> content-type: application/mercurial-exp-framing-0005\r\n |
119 s> content-length: 89\r\n | 119 s> content-length: 89\r\n |
120 s> host: $LOCALIP:$HGPORT\r\n (glob) | 120 s> host: $LOCALIP:$HGPORT\r\n (glob) |
168 > command changesetdata | 168 > command changesetdata |
169 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] | 169 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] |
170 > EOF | 170 > EOF |
171 creating http peer for wire protocol version 2 | 171 creating http peer for wire protocol version 2 |
172 sending changesetdata command | 172 sending changesetdata command |
173 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 173 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
174 s> Accept-Encoding: identity\r\n | 174 s> Accept-Encoding: identity\r\n |
175 s> accept: application/mercurial-exp-framing-0005\r\n | 175 s> accept: application/mercurial-exp-framing-0005\r\n |
176 s> content-type: application/mercurial-exp-framing-0005\r\n | 176 s> content-type: application/mercurial-exp-framing-0005\r\n |
177 s> content-length: 89\r\n | 177 s> content-length: 89\r\n |
178 s> host: $LOCALIP:$HGPORT\r\n (glob) | 178 s> host: $LOCALIP:$HGPORT\r\n (glob) |
220 > command changesetdata | 220 > command changesetdata |
221 > nodes eval:[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'] | 221 > nodes eval:[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'] |
222 > EOF | 222 > EOF |
223 creating http peer for wire protocol version 2 | 223 creating http peer for wire protocol version 2 |
224 sending changesetdata command | 224 sending changesetdata command |
225 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 225 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
226 s> Accept-Encoding: identity\r\n | 226 s> Accept-Encoding: identity\r\n |
227 s> accept: application/mercurial-exp-framing-0005\r\n | 227 s> accept: application/mercurial-exp-framing-0005\r\n |
228 s> content-type: application/mercurial-exp-framing-0005\r\n | 228 s> content-type: application/mercurial-exp-framing-0005\r\n |
229 s> content-length: 62\r\n | 229 s> content-length: 62\r\n |
230 s> host: $LOCALIP:$HGPORT\r\n (glob) | 230 s> host: $LOCALIP:$HGPORT\r\n (glob) |
270 > noderange eval:[[b'\x75\x92\x91\x7e\x1c\x3e\x82\x67\x7c\xb0\xa4\xbc\x71\x5c\xa2\x5d\xd1\x2d\x28\xc1'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] | 270 > noderange eval:[[b'\x75\x92\x91\x7e\x1c\x3e\x82\x67\x7c\xb0\xa4\xbc\x71\x5c\xa2\x5d\xd1\x2d\x28\xc1'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] |
271 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 271 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] |
272 > EOF | 272 > EOF |
273 creating http peer for wire protocol version 2 | 273 creating http peer for wire protocol version 2 |
274 sending changesetdata command | 274 sending changesetdata command |
275 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 275 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
276 s> Accept-Encoding: identity\r\n | 276 s> Accept-Encoding: identity\r\n |
277 s> accept: application/mercurial-exp-framing-0005\r\n | 277 s> accept: application/mercurial-exp-framing-0005\r\n |
278 s> content-type: application/mercurial-exp-framing-0005\r\n | 278 s> content-type: application/mercurial-exp-framing-0005\r\n |
279 s> content-length: 117\r\n | 279 s> content-length: 117\r\n |
280 s> host: $LOCALIP:$HGPORT\r\n (glob) | 280 s> host: $LOCALIP:$HGPORT\r\n (glob) |
323 > fields eval:[b'parents'] | 323 > fields eval:[b'parents'] |
324 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 324 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] |
325 > EOF | 325 > EOF |
326 creating http peer for wire protocol version 2 | 326 creating http peer for wire protocol version 2 |
327 sending changesetdata command | 327 sending changesetdata command |
328 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 328 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
329 s> Accept-Encoding: identity\r\n | 329 s> Accept-Encoding: identity\r\n |
330 s> accept: application/mercurial-exp-framing-0005\r\n | 330 s> accept: application/mercurial-exp-framing-0005\r\n |
331 s> content-type: application/mercurial-exp-framing-0005\r\n | 331 s> content-type: application/mercurial-exp-framing-0005\r\n |
332 s> content-length: 78\r\n | 332 s> content-length: 78\r\n |
333 s> host: $LOCALIP:$HGPORT\r\n (glob) | 333 s> host: $LOCALIP:$HGPORT\r\n (glob) |
377 > fields eval:[b'phase'] | 377 > fields eval:[b'phase'] |
378 > nodes eval:[b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd'] | 378 > nodes eval:[b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd'] |
379 > EOF | 379 > EOF |
380 creating http peer for wire protocol version 2 | 380 creating http peer for wire protocol version 2 |
381 sending changesetdata command | 381 sending changesetdata command |
382 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 382 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
383 s> Accept-Encoding: identity\r\n | 383 s> Accept-Encoding: identity\r\n |
384 s> accept: application/mercurial-exp-framing-0005\r\n | 384 s> accept: application/mercurial-exp-framing-0005\r\n |
385 s> content-type: application/mercurial-exp-framing-0005\r\n | 385 s> content-type: application/mercurial-exp-framing-0005\r\n |
386 s> content-length: 76\r\n | 386 s> content-length: 76\r\n |
387 s> host: $LOCALIP:$HGPORT\r\n (glob) | 387 s> host: $LOCALIP:$HGPORT\r\n (glob) |
428 > fields eval:[b'revision'] | 428 > fields eval:[b'revision'] |
429 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 429 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] |
430 > EOF | 430 > EOF |
431 creating http peer for wire protocol version 2 | 431 creating http peer for wire protocol version 2 |
432 sending changesetdata command | 432 sending changesetdata command |
433 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 433 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
434 s> Accept-Encoding: identity\r\n | 434 s> Accept-Encoding: identity\r\n |
435 s> accept: application/mercurial-exp-framing-0005\r\n | 435 s> accept: application/mercurial-exp-framing-0005\r\n |
436 s> content-type: application/mercurial-exp-framing-0005\r\n | 436 s> content-type: application/mercurial-exp-framing-0005\r\n |
437 s> content-length: 79\r\n | 437 s> content-length: 79\r\n |
438 s> host: $LOCALIP:$HGPORT\r\n (glob) | 438 s> host: $LOCALIP:$HGPORT\r\n (glob) |
449 s> 13\r\n | 449 s> 13\r\n |
450 s> \x0b\x00\x00\x01\x00\x02\x011 | 450 s> \x0b\x00\x00\x01\x00\x02\x011 |
451 s> \xa1FstatusBok | 451 s> \xa1FstatusBok |
452 s> \r\n | 452 s> \r\n |
453 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) | 453 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) |
454 s> 7e\r\n | 454 s> 8c\r\n |
455 s> v\x00\x00\x01\x00\x02\x001 | 455 s> \x84\x00\x00\x01\x00\x02\x001 |
456 s> \xa1Jtotalitems\x01\xa2DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Lrevisionsize\x18=X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n | 456 s> \xa1Jtotalitems\x01\xa2Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n |
457 s> test\n | 457 s> test\n |
458 s> 0 0\n | 458 s> 0 0\n |
459 s> a\n | 459 s> a\n |
460 s> \n | 460 s> \n |
461 s> commit 3 | 461 s> commit 3 |
462 s> \r\n | 462 s> \r\n |
463 received frame(size=118; request=1; stream=2; streamflags=; type=command-response; flags=continuation) | 463 received frame(size=132; request=1; stream=2; streamflags=; type=command-response; flags=continuation) |
464 s> 8\r\n | 464 s> 8\r\n |
465 s> \x00\x00\x00\x01\x00\x02\x002 | 465 s> \x00\x00\x00\x01\x00\x02\x002 |
466 s> \r\n | 466 s> \r\n |
467 s> 0\r\n | 467 s> 0\r\n |
468 s> \r\n | 468 s> \r\n |
470 response: gen[ | 470 response: gen[ |
471 { | 471 { |
472 b'totalitems': 1 | 472 b'totalitems': 1 |
473 }, | 473 }, |
474 { | 474 { |
475 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', | 475 b'fieldsfollowing': [ |
476 b'revisionsize': 61 | 476 [ |
477 b'revision', | |
478 61 | |
479 ] | |
480 ], | |
481 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11' | |
477 }, | 482 }, |
478 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' | 483 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' |
479 ] | 484 ] |
480 | 485 |
481 Bookmarks key isn't present if no bookmarks data | 486 Bookmarks key isn't present if no bookmarks data |
485 > fields eval:[b'bookmarks'] | 490 > fields eval:[b'bookmarks'] |
486 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 491 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] |
487 > EOF | 492 > EOF |
488 creating http peer for wire protocol version 2 | 493 creating http peer for wire protocol version 2 |
489 sending changesetdata command | 494 sending changesetdata command |
490 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 495 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
491 s> Accept-Encoding: identity\r\n | 496 s> Accept-Encoding: identity\r\n |
492 s> accept: application/mercurial-exp-framing-0005\r\n | 497 s> accept: application/mercurial-exp-framing-0005\r\n |
493 s> content-type: application/mercurial-exp-framing-0005\r\n | 498 s> content-type: application/mercurial-exp-framing-0005\r\n |
494 s> content-length: 107\r\n | 499 s> content-length: 107\r\n |
495 s> host: $LOCALIP:$HGPORT\r\n (glob) | 500 s> host: $LOCALIP:$HGPORT\r\n (glob) |
548 > fields eval:[b'bookmarks'] | 553 > fields eval:[b'bookmarks'] |
549 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 554 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] |
550 > EOF | 555 > EOF |
551 creating http peer for wire protocol version 2 | 556 creating http peer for wire protocol version 2 |
552 sending changesetdata command | 557 sending changesetdata command |
553 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 558 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
554 s> Accept-Encoding: identity\r\n | 559 s> Accept-Encoding: identity\r\n |
555 s> accept: application/mercurial-exp-framing-0005\r\n | 560 s> accept: application/mercurial-exp-framing-0005\r\n |
556 s> content-type: application/mercurial-exp-framing-0005\r\n | 561 s> content-type: application/mercurial-exp-framing-0005\r\n |
557 s> content-length: 107\r\n | 562 s> content-length: 107\r\n |
558 s> host: $LOCALIP:$HGPORT\r\n (glob) | 563 s> host: $LOCALIP:$HGPORT\r\n (glob) |
614 > fields eval:[b'bookmarks', b'revision'] | 619 > fields eval:[b'bookmarks', b'revision'] |
615 > noderange eval:[[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 620 > noderange eval:[[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] |
616 > EOF | 621 > EOF |
617 creating http peer for wire protocol version 2 | 622 creating http peer for wire protocol version 2 |
618 sending changesetdata command | 623 sending changesetdata command |
619 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 624 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
620 s> Accept-Encoding: identity\r\n | 625 s> Accept-Encoding: identity\r\n |
621 s> accept: application/mercurial-exp-framing-0005\r\n | 626 s> accept: application/mercurial-exp-framing-0005\r\n |
622 s> content-type: application/mercurial-exp-framing-0005\r\n | 627 s> content-type: application/mercurial-exp-framing-0005\r\n |
623 s> content-length: 137\r\n | 628 s> content-length: 137\r\n |
624 s> host: $LOCALIP:$HGPORT\r\n (glob) | 629 s> host: $LOCALIP:$HGPORT\r\n (glob) |
635 s> 13\r\n | 640 s> 13\r\n |
636 s> \x0b\x00\x00\x01\x00\x02\x011 | 641 s> \x0b\x00\x00\x01\x00\x02\x011 |
637 s> \xa1FstatusBok | 642 s> \xa1FstatusBok |
638 s> \r\n | 643 s> \r\n |
639 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) | 644 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) |
640 s> 12f\r\n | 645 s> 14b\r\n |
641 s> \'\x01\x00\x01\x00\x02\x001 | 646 s> C\x01\x00\x01\x00\x02\x001 |
642 s> \xa1Jtotalitems\x02\xa2DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1Lrevisionsize\x18?X?7f144aea0ba742713887b564d57e9d12f12ff382\n | 647 s> \xa1Jtotalitems\x02\xa2Ofieldsfollowing\x81\x82Hrevision\x18?DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1X?7f144aea0ba742713887b564d57e9d12f12ff382\n |
643 s> test\n | 648 s> test\n |
644 s> 0 0\n | 649 s> 0 0\n |
645 s> a\n | 650 s> a\n |
646 s> b\n | 651 s> b\n |
647 s> \n | 652 s> \n |
648 s> commit 1\xa3Ibookmarks\x81Fbook-1DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddLrevisionsize\x18=X=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n | 653 s> commit 1\xa3Ibookmarks\x81Fbook-1Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddX=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n |
649 s> test\n | 654 s> test\n |
650 s> 0 0\n | 655 s> 0 0\n |
651 s> b\n | 656 s> b\n |
652 s> \n | 657 s> \n |
653 s> commit 2\xa2Ibookmarks\x82Fbook-2Fbook-3DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11 | 658 s> commit 2\xa2Ibookmarks\x82Fbook-2Fbook-3DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11 |
654 s> \r\n | 659 s> \r\n |
655 received frame(size=295; request=1; stream=2; streamflags=; type=command-response; flags=continuation) | 660 received frame(size=323; request=1; stream=2; streamflags=; type=command-response; flags=continuation) |
656 s> 8\r\n | 661 s> 8\r\n |
657 s> \x00\x00\x00\x01\x00\x02\x002 | 662 s> \x00\x00\x00\x01\x00\x02\x002 |
658 s> \r\n | 663 s> \r\n |
659 s> 0\r\n | 664 s> 0\r\n |
660 s> \r\n | 665 s> \r\n |
662 response: gen[ | 667 response: gen[ |
663 { | 668 { |
664 b'totalitems': 2 | 669 b'totalitems': 2 |
665 }, | 670 }, |
666 { | 671 { |
667 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', | 672 b'fieldsfollowing': [ |
668 b'revisionsize': 63 | 673 [ |
674 b'revision', | |
675 63 | |
676 ] | |
677 ], | |
678 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1' | |
669 }, | 679 }, |
670 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1', | 680 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1', |
671 { | 681 { |
672 b'bookmarks': [ | 682 b'bookmarks': [ |
673 b'book-1' | 683 b'book-1' |
674 ], | 684 ], |
675 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd', | 685 b'fieldsfollowing': [ |
676 b'revisionsize': 61 | 686 [ |
687 b'revision', | |
688 61 | |
689 ] | |
690 ], | |
691 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd' | |
677 }, | 692 }, |
678 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2', | 693 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2', |
679 { | 694 { |
680 b'bookmarks': [ | 695 b'bookmarks': [ |
681 b'book-2', | 696 b'book-2', |
692 > fields eval:[b'parents', b'revision'] | 707 > fields eval:[b'parents', b'revision'] |
693 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 708 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] |
694 > EOF | 709 > EOF |
695 creating http peer for wire protocol version 2 | 710 creating http peer for wire protocol version 2 |
696 sending changesetdata command | 711 sending changesetdata command |
697 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 712 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
698 s> Accept-Encoding: identity\r\n | 713 s> Accept-Encoding: identity\r\n |
699 s> accept: application/mercurial-exp-framing-0005\r\n | 714 s> accept: application/mercurial-exp-framing-0005\r\n |
700 s> content-type: application/mercurial-exp-framing-0005\r\n | 715 s> content-type: application/mercurial-exp-framing-0005\r\n |
701 s> content-length: 87\r\n | 716 s> content-length: 87\r\n |
702 s> host: $LOCALIP:$HGPORT\r\n (glob) | 717 s> host: $LOCALIP:$HGPORT\r\n (glob) |
713 s> 13\r\n | 728 s> 13\r\n |
714 s> \x0b\x00\x00\x01\x00\x02\x011 | 729 s> \x0b\x00\x00\x01\x00\x02\x011 |
715 s> \xa1FstatusBok | 730 s> \xa1FstatusBok |
716 s> \r\n | 731 s> \r\n |
717 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) | 732 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) |
718 s> b1\r\n | 733 s> bf\r\n |
719 s> \xa9\x00\x00\x01\x00\x02\x001 | 734 s> \xb7\x00\x00\x01\x00\x02\x001 |
720 s> \xa1Jtotalitems\x01\xa3DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Lrevisionsize\x18=X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n | 735 s> \xa1Jtotalitems\x01\xa3Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n |
721 s> test\n | 736 s> test\n |
722 s> 0 0\n | 737 s> 0 0\n |
723 s> a\n | 738 s> a\n |
724 s> \n | 739 s> \n |
725 s> commit 3 | 740 s> commit 3 |
726 s> \r\n | 741 s> \r\n |
727 received frame(size=169; request=1; stream=2; streamflags=; type=command-response; flags=continuation) | 742 received frame(size=183; request=1; stream=2; streamflags=; type=command-response; flags=continuation) |
728 s> 8\r\n | 743 s> 8\r\n |
729 s> \x00\x00\x00\x01\x00\x02\x002 | 744 s> \x00\x00\x00\x01\x00\x02\x002 |
730 s> \r\n | 745 s> \r\n |
731 s> 0\r\n | 746 s> 0\r\n |
732 s> \r\n | 747 s> \r\n |
734 response: gen[ | 749 response: gen[ |
735 { | 750 { |
736 b'totalitems': 1 | 751 b'totalitems': 1 |
737 }, | 752 }, |
738 { | 753 { |
754 b'fieldsfollowing': [ | |
755 [ | |
756 b'revision', | |
757 61 | |
758 ] | |
759 ], | |
739 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', | 760 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', |
740 b'parents': [ | 761 b'parents': [ |
741 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', | 762 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', |
742 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 763 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
743 ], | 764 ] |
744 b'revisionsize': 61 | |
745 }, | 765 }, |
746 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' | 766 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' |
747 ] | 767 ] |
748 | 768 |
749 Base nodes have just their metadata (e.g. phase) transferred | 769 Base nodes have just their metadata (e.g. phase) transferred |
753 > fields eval:[b'phase', b'parents', b'revision'] | 773 > fields eval:[b'phase', b'parents', b'revision'] |
754 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 774 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] |
755 > EOF | 775 > EOF |
756 creating http peer for wire protocol version 2 | 776 creating http peer for wire protocol version 2 |
757 sending changesetdata command | 777 sending changesetdata command |
758 s> POST /api/exp-http-v2-0001/ro/changesetdata HTTP/1.1\r\n | 778 s> POST /api/exp-http-v2-0002/ro/changesetdata HTTP/1.1\r\n |
759 s> Accept-Encoding: identity\r\n | 779 s> Accept-Encoding: identity\r\n |
760 s> accept: application/mercurial-exp-framing-0005\r\n | 780 s> accept: application/mercurial-exp-framing-0005\r\n |
761 s> content-type: application/mercurial-exp-framing-0005\r\n | 781 s> content-type: application/mercurial-exp-framing-0005\r\n |
762 s> content-length: 141\r\n | 782 s> content-length: 141\r\n |
763 s> host: $LOCALIP:$HGPORT\r\n (glob) | 783 s> host: $LOCALIP:$HGPORT\r\n (glob) |
774 s> 13\r\n | 794 s> 13\r\n |
775 s> \x0b\x00\x00\x01\x00\x02\x011 | 795 s> \x0b\x00\x00\x01\x00\x02\x011 |
776 s> \xa1FstatusBok | 796 s> \xa1FstatusBok |
777 s> \r\n | 797 s> \r\n |
778 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) | 798 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) |
779 s> 239\r\n | 799 s> 263\r\n |
780 s> 1\x02\x00\x01\x00\x02\x001 | 800 s> [\x02\x00\x01\x00\x02\x001 |
781 s> \xa1Jtotalitems\x03\xa2DnodeT3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:EphaseFpublic\xa4DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicLrevisionsize\x18?X?7f144aea0ba742713887b564d57e9d12f12ff382\n | 801 s> \xa1Jtotalitems\x03\xa2DnodeT3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:EphaseFpublic\xa4Ofieldsfollowing\x81\x82Hrevision\x18?DnodeTu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicX?7f144aea0ba742713887b564d57e9d12f12ff382\n |
782 s> test\n | 802 s> test\n |
783 s> 0 0\n | 803 s> 0 0\n |
784 s> a\n | 804 s> a\n |
785 s> b\n | 805 s> b\n |
786 s> \n | 806 s> \n |
787 s> commit 1\xa4DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddGparents\x82Tu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicLrevisionsize\x18=X=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n | 807 s> commit 1\xa4Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xddGparents\x82Tu\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseFpublicX=37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\n |
788 s> test\n | 808 s> test\n |
789 s> 0 0\n | 809 s> 0 0\n |
790 s> b\n | 810 s> b\n |
791 s> \n | 811 s> \n |
792 s> commit 2\xa4DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseEdraftLrevisionsize\x18=X=1b74476799ec8318045db759b1b4bcc9b839d0aa\n | 812 s> commit 2\xa4Ofieldsfollowing\x81\x82Hrevision\x18=DnodeT\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11Gparents\x82T3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00EphaseEdraftX=1b74476799ec8318045db759b1b4bcc9b839d0aa\n |
793 s> test\n | 813 s> test\n |
794 s> 0 0\n | 814 s> 0 0\n |
795 s> a\n | 815 s> a\n |
796 s> \n | 816 s> \n |
797 s> commit 3 | 817 s> commit 3 |
798 s> \r\n | 818 s> \r\n |
799 received frame(size=561; request=1; stream=2; streamflags=; type=command-response; flags=continuation) | 819 received frame(size=603; request=1; stream=2; streamflags=; type=command-response; flags=continuation) |
800 s> 8\r\n | 820 s> 8\r\n |
801 s> \x00\x00\x00\x01\x00\x02\x002 | 821 s> \x00\x00\x00\x01\x00\x02\x002 |
802 s> \r\n | 822 s> \r\n |
803 s> 0\r\n | 823 s> 0\r\n |
804 s> \r\n | 824 s> \r\n |
810 { | 830 { |
811 b'node': b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', | 831 b'node': b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', |
812 b'phase': b'public' | 832 b'phase': b'public' |
813 }, | 833 }, |
814 { | 834 { |
835 b'fieldsfollowing': [ | |
836 [ | |
837 b'revision', | |
838 63 | |
839 ] | |
840 ], | |
815 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', | 841 b'node': b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', |
816 b'parents': [ | 842 b'parents': [ |
817 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', | 843 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', |
818 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 844 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
819 ], | 845 ], |
820 b'phase': b'public', | 846 b'phase': b'public' |
821 b'revisionsize': 63 | |
822 }, | 847 }, |
823 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1', | 848 b'7f144aea0ba742713887b564d57e9d12f12ff382\ntest\n0 0\na\nb\n\ncommit 1', |
824 { | 849 { |
850 b'fieldsfollowing': [ | |
851 [ | |
852 b'revision', | |
853 61 | |
854 ] | |
855 ], | |
825 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd', | 856 b'node': b'\x0b\xb8\xad\x89J\x15\xb1S\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f*K(\xdd', |
826 b'parents': [ | 857 b'parents': [ |
827 b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', | 858 b'u\x92\x91~\x1c>\x82g|\xb0\xa4\xbcq\\\xa2]\xd1-(\xc1', |
828 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 859 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
829 ], | 860 ], |
830 b'phase': b'public', | 861 b'phase': b'public' |
831 b'revisionsize': 61 | |
832 }, | 862 }, |
833 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2', | 863 b'37f0a2d1c28ffe4b879109a7d1bbf8f07b3c763b\ntest\n0 0\nb\n\ncommit 2', |
834 { | 864 { |
865 b'fieldsfollowing': [ | |
866 [ | |
867 b'revision', | |
868 61 | |
869 ] | |
870 ], | |
835 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', | 871 b'node': b'\xea\xe5\xf8,.b#h\xd2}\xae\xcbv\xb7\xe3\x93\xd0\xf2B\x11', |
836 b'parents': [ | 872 b'parents': [ |
837 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', | 873 b'3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:', |
838 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 874 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
839 ], | 875 ], |
840 b'phase': b'draft', | 876 b'phase': b'draft' |
841 b'revisionsize': 61 | |
842 }, | 877 }, |
843 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' | 878 b'1b74476799ec8318045db759b1b4bcc9b839d0aa\ntest\n0 0\na\n\ncommit 3' |
844 ] | 879 ] |
845 | 880 |
846 $ cat error.log | 881 $ cat error.log |