1#require sqlite
2
3Tests for wire protocol version 2 exchange.
4Tests in this file should be folded into existing tests once protocol
5v2 has enough features that it can be enabled via #testcase in existing
6tests.
7
8  $ . $TESTDIR/wireprotohelpers.sh
9  $ enablehttpv2client
10  $ cat >> $HGRCPATH << EOF
11  > [extensions]
12  > sqlitestore =
13  > pullext = $TESTDIR/pullext.py
14  > [storage]
15  > new-repo-backend=sqlite
16  > EOF
17
18Configure a server
19
20  $ hg init server-basic
21  $ enablehttpv2 server-basic
22  $ cd server-basic
23  $ mkdir dir0 dir1
24  $ echo a0 > a
25  $ echo b0 > b
26  $ hg -q commit -A -m 'commit 0'
27  $ echo c0 > dir0/c
28  $ echo d0 > dir0/d
29  $ hg -q commit -A -m 'commit 1'
30  $ echo e0 > dir1/e
31  $ echo f0 > dir1/f
32  $ hg -q commit -A -m 'commit 2'
33  $ echo c1 > dir0/c
34  $ echo e1 > dir1/e
35  $ hg commit -m 'commit 3'
36  $ echo c2 > dir0/c
37  $ echo e2 > dir1/e
38  $ echo f1 > dir1/f
39  $ hg commit -m 'commit 4'
40  $ echo a1 > a
41  $ echo b1 > b
42  $ hg commit -m 'commit 5'
43
44  $ hg log -G -T '{node} {desc}'
45  @  93a8bd067ed2840d9aa810ad598168383a3a2c3a commit 5
46  |
47  o  dc666cf9ecf3d94e6b830f30e5f1272e2a9164d9 commit 4
48  |
49  o  97765fc3cd624fd1fa0176932c21ffd16adf432e commit 3
50  |
51  o  47fe012ab237a8c7fc0c78f9f26d5866eef3f825 commit 2
52  |
53  o  b709380892b193c1091d3a817f706052e346821b commit 1
54  |
55  o  3390ef850073fbc2f0dfff2244342c8e9229013a commit 0
56
57  $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
58  $ cat hg.pid > $DAEMON_PIDS
59
60  $ cd ..
61
62Shallow clone pulls down latest revision of every file
63
64  $ hg --debug clone --depth 1 http://localhost:$HGPORT client-shallow-1
65  using http://localhost:$HGPORT/
66  sending capabilities command
67  query 1; heads
68  sending 2 commands
69  sending command heads: {}
70  sending command known: {
71    'nodes': []
72  }
73  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
74  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
75  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
76  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
77  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
78  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
79  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
80  sending 1 commands
81  sending command changesetdata: {
82    'fields': set([
83      'bookmarks',
84      'parents',
85      'phase',
86      'revision'
87    ]),
88    'revisions': [
89      {
90        'heads': [
91          '\x93\xa8\xbd\x06~\xd2\x84\r\x9a\xa8\x10\xadY\x81h8::,:'
92        ],
93        'roots': [],
94        'type': 'changesetdagrange'
95      }
96    ]
97  }
98  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
99  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
100  received frame(size=1170; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
101  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
102  add changeset 3390ef850073
103  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
104  add changeset b709380892b1
105  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
106  add changeset 47fe012ab237
107  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
108  add changeset 97765fc3cd62
109  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
110  add changeset dc666cf9ecf3
111  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
112  add changeset 93a8bd067ed2
113  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
114  checking for updated bookmarks
115  sending 1 commands
116  sending command manifestdata: {
117    'fields': set([
118      'parents',
119      'revision'
120    ]),
121    'haveparents': True,
122    'nodes': [
123      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
124      '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
125      '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
126      '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3',
127      'H]O\xc2`\xef\\\xb9\xc0p6\x88K\x00k\x11\x0ej\xdby',
128      '\xd9;\xc4\x0b\x0e*GMp\xee\xf7}^\x91/f\x7fSd\x83'
129    ],
130    'tree': ''
131  }
132  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
133  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
134  received frame(size=1515; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
135  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
136  sending 1 commands
137  sending command filesdata: {
138    'fields': set([
139      'linknode',
140      'parents',
141      'revision'
142    ]),
143    'haveparents': False,
144    'revisions': [
145      {
146        'nodes': [
147          '\x93\xa8\xbd\x06~\xd2\x84\r\x9a\xa8\x10\xadY\x81h8::,:'
148        ],
149        'type': 'changesetexplicit'
150      }
151    ]
152  }
153  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
154  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
155  received frame(size=1005; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
156  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
157  updating the branch cache
158  new changesets 3390ef850073:93a8bd067ed2
159  updating to branch default
160  resolving manifests
161   branchmerge: False, force: False, partial: False
162   ancestor: 000000000000, local: 000000000000+, remote: 93a8bd067ed2
163   a: remote created -> g
164  getting a
165   b: remote created -> g
166  getting b
167   dir0/c: remote created -> g
168  getting dir0/c
169   dir0/d: remote created -> g
170  getting dir0/d
171   dir1/e: remote created -> g
172  getting dir1/e
173   dir1/f: remote created -> g
174  getting dir1/f
175  6 files updated, 0 files merged, 0 files removed, 0 files unresolved
176  updating the branch cache
177  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
178
179#if chg
180  $ hg --kill-chg-daemon
181  $ sleep 2
182#endif
183  $ sqlite3 -line client-shallow-1/.hg/store/db.sqlite << EOF
184  > SELECT id, path, revnum, node, p1rev, p2rev, linkrev, flags FROM filedata ORDER BY id ASC;
185  > EOF
186       id = 1
187     path = a
188   revnum = 0
189     node = \x9a8\x12)\x97\xb3\xac\x97\xbe*\x9a\xa2\xe5V\x83\x83A\xfd\xf2\xcc (esc)
190    p1rev = -1
191    p2rev = -1
192  linkrev = 5
193    flags = 2
194
195       id = 2
196     path = b
197   revnum = 0
198     node = \xb1zk\xd3g=\x9a\xb8\xce\xd5\x81\xa2	\xf6/=\xa5\xccEx (esc)
199    p1rev = -1
200    p2rev = -1
201  linkrev = 5
202    flags = 2
203
204       id = 3
205     path = dir0/c
206   revnum = 0
207     node = I\x1d\xa1\xbb\x89\xeax\xc0\xc0\xa2s[\x16\xce}\x93\x1d\xc8\xe2\r (esc)
208    p1rev = -1
209    p2rev = -1
210  linkrev = 5
211    flags = 2
212
213       id = 4
214     path = dir0/d
215   revnum = 0
216     node = S\x82\x06\xdc\x97\x1eR\x15@\xd6\x84:\xbf\xe6\xd1`2\xf6\xd4& (esc)
217    p1rev = -1
218    p2rev = -1
219  linkrev = 5
220    flags = 0
221
222       id = 5
223     path = dir1/e
224   revnum = 0
225     node = ]\xf3\xac\xd8\xd0\xc7\xfaP\x98\xd0'\x9a\x044\xc3\x02\x9e+x\xe1 (esc)
226    p1rev = -1
227    p2rev = -1
228  linkrev = 5
229    flags = 2
230
231       id = 6
232     path = dir1/f
233   revnum = 0
234     node = (\xc7v\xae\x08\xd0\xd5^\xb4\x06H\xb4\x01\xb9\x0f\xf5DH4\x8e (esc)
235    p1rev = -1
236    p2rev = -1
237  linkrev = 5
238    flags = 2
239
240Test a shallow clone with only some files
241
242  $ hg --debug clone --depth 1 --include dir0/ http://localhost:$HGPORT client-shallow-narrow-1
243  using http://localhost:$HGPORT/
244  sending capabilities command
245  query 1; heads
246  sending 2 commands
247  sending command heads: {}
248  sending command known: {
249    'nodes': []
250  }
251  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
252  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
253  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
254  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
255  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
256  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
257  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
258  sending 1 commands
259  sending command changesetdata: {
260    'fields': set([
261      'bookmarks',
262      'parents',
263      'phase',
264      'revision'
265    ]),
266    'revisions': [
267      {
268        'heads': [
269          '\x93\xa8\xbd\x06~\xd2\x84\r\x9a\xa8\x10\xadY\x81h8::,:'
270        ],
271        'roots': [],
272        'type': 'changesetdagrange'
273      }
274    ]
275  }
276  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
277  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
278  received frame(size=1170; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
279  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
280  add changeset 3390ef850073
281  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
282  add changeset b709380892b1
283  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
284  add changeset 47fe012ab237
285  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
286  add changeset 97765fc3cd62
287  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
288  add changeset dc666cf9ecf3
289  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
290  add changeset 93a8bd067ed2
291  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
292  checking for updated bookmarks
293  sending 1 commands
294  sending command manifestdata: {
295    'fields': set([
296      'parents',
297      'revision'
298    ]),
299    'haveparents': True,
300    'nodes': [
301      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
302      '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
303      '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
304      '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3',
305      'H]O\xc2`\xef\\\xb9\xc0p6\x88K\x00k\x11\x0ej\xdby',
306      '\xd9;\xc4\x0b\x0e*GMp\xee\xf7}^\x91/f\x7fSd\x83'
307    ],
308    'tree': ''
309  }
310  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
311  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
312  received frame(size=1515; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
313  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
314  sending 1 commands
315  sending command filesdata: {
316    'fields': set([
317      'linknode',
318      'parents',
319      'revision'
320    ]),
321    'haveparents': False,
322    'pathfilter': {
323      'include': [
324        'path:dir0'
325      ]
326    },
327    'revisions': [
328      {
329        'nodes': [
330          '\x93\xa8\xbd\x06~\xd2\x84\r\x9a\xa8\x10\xadY\x81h8::,:'
331        ],
332        'type': 'changesetexplicit'
333      }
334    ]
335  }
336  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
337  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
338  received frame(size=355; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
339  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
340  updating the branch cache
341  new changesets 3390ef850073:93a8bd067ed2
342  updating to branch default
343  resolving manifests
344   branchmerge: False, force: False, partial: False
345   ancestor: 000000000000, local: 000000000000+, remote: 93a8bd067ed2
346   dir0/c: remote created -> g
347  getting dir0/c
348   dir0/d: remote created -> g
349  getting dir0/d
350  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
351  updating the branch cache
352  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
353
354#if chg
355  $ hg --kill-chg-daemon
356  $ sleep 2
357#endif
358  $ sqlite3 -line client-shallow-narrow-1/.hg/store/db.sqlite << EOF
359  > SELECT id, path, revnum, node, p1rev, p2rev, linkrev, flags FROM filedata ORDER BY id ASC;
360  > EOF
361       id = 1
362     path = dir0/c
363   revnum = 0
364     node = I\x1d\xa1\xbb\x89\xeax\xc0\xc0\xa2s[\x16\xce}\x93\x1d\xc8\xe2\r (esc)
365    p1rev = -1
366    p2rev = -1
367  linkrev = 5
368    flags = 2
369
370       id = 2
371     path = dir0/d
372   revnum = 0
373     node = S\x82\x06\xdc\x97\x1eR\x15@\xd6\x84:\xbf\xe6\xd1`2\xf6\xd4& (esc)
374    p1rev = -1
375    p2rev = -1
376  linkrev = 5
377    flags = 0
378
379Cloning an old revision with depth=1 works
380
381  $ hg --debug clone --depth 1 -r 97765fc3cd624fd1fa0176932c21ffd16adf432e http://localhost:$HGPORT client-shallow-2
382  using http://localhost:$HGPORT/
383  sending capabilities command
384  sending 1 commands
385  sending command lookup: {
386    'key': '97765fc3cd624fd1fa0176932c21ffd16adf432e'
387  }
388  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
389  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
390  received frame(size=21; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
391  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
392  query 1; heads
393  sending 2 commands
394  sending command heads: {}
395  sending command known: {
396    'nodes': []
397  }
398  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
399  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
400  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
401  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
402  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
403  received frame(size=1; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
404  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
405  sending 1 commands
406  sending command changesetdata: {
407    'fields': set([
408      'bookmarks',
409      'parents',
410      'phase',
411      'revision'
412    ]),
413    'revisions': [
414      {
415        'heads': [
416          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
417        ],
418        'roots': [],
419        'type': 'changesetdagrange'
420      }
421    ]
422  }
423  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
424  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
425  received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
426  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
427  add changeset 3390ef850073
428  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
429  add changeset b709380892b1
430  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
431  add changeset 47fe012ab237
432  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
433  add changeset 97765fc3cd62
434  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
435  checking for updated bookmarks
436  sending 1 commands
437  sending command manifestdata: {
438    'fields': set([
439      'parents',
440      'revision'
441    ]),
442    'haveparents': True,
443    'nodes': [
444      '\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
445      '|2 \x1a\xa3\xa1R\xa9\xe6\xa9"+?\xa8\xd0\xe3\x0f\xc2V\xe8',
446      '\x8d\xd0W<\x7f\xaf\xe2\x04F\xcc\xea\xac\x05N\xea\xa4x\x91M\xdb',
447      '113\x85\xf2!\x8b\x08^\xb2Z\x821\x1e*\xdd\x0e\xeb\x8c3'
448    ],
449    'tree': ''
450  }
451  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
452  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
453  received frame(size=967; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
454  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
455  sending 1 commands
456  sending command filesdata: {
457    'fields': set([
458      'linknode',
459      'parents',
460      'revision'
461    ]),
462    'haveparents': False,
463    'revisions': [
464      {
465        'nodes': [
466          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
467        ],
468        'type': 'changesetexplicit'
469      }
470    ]
471  }
472  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
473  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
474  received frame(size=1005; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
475  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
476  updating the branch cache
477  new changesets 3390ef850073:97765fc3cd62
478  updating to branch default
479  resolving manifests
480   branchmerge: False, force: False, partial: False
481   ancestor: 000000000000, local: 000000000000+, remote: 97765fc3cd62
482   a: remote created -> g
483  getting a
484   b: remote created -> g
485  getting b
486   dir0/c: remote created -> g
487  getting dir0/c
488   dir0/d: remote created -> g
489  getting dir0/d
490   dir1/e: remote created -> g
491  getting dir1/e
492   dir1/f: remote created -> g
493  getting dir1/f
494  6 files updated, 0 files merged, 0 files removed, 0 files unresolved
495  updating the branch cache
496  (sent 6 HTTP requests and * bytes; received * bytes in responses) (glob)
497
498Incremental pull of shallow clone fetches new changesets
499
500  $ hg --cwd client-shallow-2 --debug pull http://localhost:$HGPORT
501  pulling from http://localhost:$HGPORT/
502  using http://localhost:$HGPORT/
503  sending capabilities command
504  query 1; heads
505  sending 2 commands
506  sending command heads: {}
507  sending command known: {
508    'nodes': [
509      '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
510    ]
511  }
512  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
513  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
514  received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
515  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
516  received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
517  received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation)
518  received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos)
519  searching for changes
520  all local changesets known remotely
521  sending 1 commands
522  sending command changesetdata: {
523    'fields': set([
524      'bookmarks',
525      'parents',
526      'phase',
527      'revision'
528    ]),
529    'revisions': [
530      {
531        'heads': [
532          '\x93\xa8\xbd\x06~\xd2\x84\r\x9a\xa8\x10\xadY\x81h8::,:'
533        ],
534        'roots': [
535          '\x97v_\xc3\xcdbO\xd1\xfa\x01v\x93,!\xff\xd1j\xdfC.'
536        ],
537        'type': 'changesetdagrange'
538      }
539    ]
540  }
541  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
542  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
543  received frame(size=400; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
544  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
545  add changeset dc666cf9ecf3
546  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
547  add changeset 93a8bd067ed2
548  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?)
549  checking for updated bookmarks
550  sending 1 commands
551  sending command manifestdata: {
552    'fields': set([
553      'parents',
554      'revision'
555    ]),
556    'haveparents': True,
557    'nodes': [
558      'H]O\xc2`\xef\\\xb9\xc0p6\x88K\x00k\x11\x0ej\xdby',
559      '\xd9;\xc4\x0b\x0e*GMp\xee\xf7}^\x91/f\x7fSd\x83'
560    ],
561    'tree': ''
562  }
563  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
564  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
565  received frame(size=561; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
566  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
567  sending 1 commands
568  sending command filesdata: {
569    'fields': set([
570      'linknode',
571      'parents',
572      'revision'
573    ]),
574    'haveparents': False,
575    'revisions': [
576      {
577        'nodes': [
578          '\xdcfl\xf9\xec\xf3\xd9Nk\x83\x0f0\xe5\xf1\'.*\x91d\xd9',
579          '\x93\xa8\xbd\x06~\xd2\x84\r\x9a\xa8\x10\xadY\x81h8::,:'
580        ],
581        'type': 'changesetexplicit'
582      }
583    ]
584  }
585  received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos)
586  received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
587  received frame(size=1373; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation)
588  received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos)
589  updating the branch cache
590  new changesets dc666cf9ecf3:93a8bd067ed2
591  (run 'hg update' to get a working copy)
592  (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob)
593
594  $ hg --cwd client-shallow-2 up tip
595  merging dir0/c
596  merging dir1/e
597  3 files updated, 2 files merged, 0 files removed, 0 files unresolved
598