Show More
This diff has been collapsed as it changes many lines, (1058 lines changed) Show them Hide them | |||
@@ -0,0 +1,1058 b'' | |||
|
1 | $ . $TESTDIR/wireprotohelpers.sh | |
|
2 | ||
|
3 | $ hg init server | |
|
4 | $ enablehttpv2 server | |
|
5 | $ cd server | |
|
6 | $ cat > a << EOF | |
|
7 | > a0 | |
|
8 | > 00000000000000000000000000000000000000 | |
|
9 | > 11111111111111111111111111111111111111 | |
|
10 | > EOF | |
|
11 | $ cat > b << EOF | |
|
12 | > b0 | |
|
13 | > aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | |
|
14 | > bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | |
|
15 | > EOF | |
|
16 | $ mkdir -p dir0/child0 dir0/child1 dir1 | |
|
17 | $ echo c0 > dir0/c | |
|
18 | $ echo d0 > dir0/d | |
|
19 | $ echo e0 > dir0/child0/e | |
|
20 | $ echo f0 > dir0/child1/f | |
|
21 | $ hg -q commit -A -m 'commit 0' | |
|
22 | ||
|
23 | $ echo a1 >> a | |
|
24 | $ echo d1 > dir0/d | |
|
25 | $ echo g0 > g | |
|
26 | $ echo h0 > h | |
|
27 | $ hg -q commit -A -m 'commit 1' | |
|
28 | $ echo f1 > dir0/child1/f | |
|
29 | $ echo i0 > dir0/i | |
|
30 | $ hg -q commit -A -m 'commit 2' | |
|
31 | ||
|
32 | $ hg -q up -r 0 | |
|
33 | $ echo a2 >> a | |
|
34 | $ hg commit -m 'commit 3' | |
|
35 | created new head | |
|
36 | ||
|
37 | $ hg log -G -T '{rev}:{node} {desc}\n' | |
|
38 | @ 3:476fbf122cd82f6726f0191ff146f67140946abc commit 3 | |
|
39 | | | |
|
40 | | o 2:b91c03cbba3519ab149b6cd0a0afbdb5cf1b5c8a commit 2 | |
|
41 | | | | |
|
42 | | o 1:5b0b1a23577e205ea240e39c9704e28d7697cbd8 commit 1 | |
|
43 | |/ | |
|
44 | o 0:6e875ff18c227659ad6143bb3580c65700734884 commit 0 | |
|
45 | ||
|
46 | ||
|
47 | $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log | |
|
48 | $ cat hg.pid > $DAEMON_PIDS | |
|
49 | ||
|
50 | Missing arguments is an error | |
|
51 | ||
|
52 | $ sendhttpv2peer << EOF | |
|
53 | > command filesdata | |
|
54 | > EOF | |
|
55 | creating http peer for wire protocol version 2 | |
|
56 | sending filesdata command | |
|
57 | abort: missing required arguments: revisions! | |
|
58 | [255] | |
|
59 | ||
|
60 | Bad pattern to pathfilter is rejected | |
|
61 | ||
|
62 | $ sendhttpv2peer << EOF | |
|
63 | > command filesdata | |
|
64 | > revisions eval:[{ | |
|
65 | > b'type': b'changesetexplicit', | |
|
66 | > b'nodes': [ | |
|
67 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
68 | > ]}] | |
|
69 | > pathfilter eval:{b'include': [b'bad:foo']} | |
|
70 | > EOF | |
|
71 | creating http peer for wire protocol version 2 | |
|
72 | sending filesdata command | |
|
73 | abort: include pattern must begin with `path:` or `rootfilesin:`; got bad:foo! | |
|
74 | [255] | |
|
75 | ||
|
76 | $ sendhttpv2peer << EOF | |
|
77 | > command filesdata | |
|
78 | > revisions eval:[{ | |
|
79 | > b'type': b'changesetexplicit', | |
|
80 | > b'nodes': [ | |
|
81 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
82 | > ]}] | |
|
83 | > pathfilter eval:{b'exclude': [b'glob:foo']} | |
|
84 | > EOF | |
|
85 | creating http peer for wire protocol version 2 | |
|
86 | sending filesdata command | |
|
87 | abort: exclude pattern must begin with `path:` or `rootfilesin:`; got glob:foo! | |
|
88 | [255] | |
|
89 | ||
|
90 | Fetching a single changeset without parents fetches all files | |
|
91 | ||
|
92 | $ sendhttpv2peer << EOF | |
|
93 | > command filesdata | |
|
94 | > revisions eval:[{ | |
|
95 | > b'type': b'changesetexplicit', | |
|
96 | > b'nodes': [ | |
|
97 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
98 | > ]}] | |
|
99 | > EOF | |
|
100 | creating http peer for wire protocol version 2 | |
|
101 | sending filesdata command | |
|
102 | response: gen[ | |
|
103 | { | |
|
104 | b'totalitems': 8, | |
|
105 | b'totalpaths': 8 | |
|
106 | }, | |
|
107 | { | |
|
108 | b'path': b'a', | |
|
109 | b'totalitems': 1 | |
|
110 | }, | |
|
111 | { | |
|
112 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
113 | }, | |
|
114 | { | |
|
115 | b'path': b'b', | |
|
116 | b'totalitems': 1 | |
|
117 | }, | |
|
118 | { | |
|
119 | b'node': b'\x88\xbac\xb8\xd8\xc6 :\xc6z\xc9\x98\xac\xd9\x17K\xf7\x05!\xb2' | |
|
120 | }, | |
|
121 | { | |
|
122 | b'path': b'dir0/c', | |
|
123 | b'totalitems': 1 | |
|
124 | }, | |
|
125 | { | |
|
126 | b'node': b'\x91DE4j\x0c\xa0b\x9b\xd4|\xeb]\xfe\x07\xe4\xd4\xcf%\x01' | |
|
127 | }, | |
|
128 | { | |
|
129 | b'path': b'dir0/child0/e', | |
|
130 | b'totalitems': 1 | |
|
131 | }, | |
|
132 | { | |
|
133 | b'node': b'\xbb\xbal\x06\xb3\x0fD=4\xff\x84\x1b\xc9\x85\xc4\xd0\x82|k\xe4' | |
|
134 | }, | |
|
135 | { | |
|
136 | b'path': b'dir0/child1/f', | |
|
137 | b'totalitems': 1 | |
|
138 | }, | |
|
139 | { | |
|
140 | b'node': b'\x12\xfc}\xcdw;Z\n\x92\x9c\xe1\x95"\x80\x83\xc6\xdd\xc9\xce\xc4' | |
|
141 | }, | |
|
142 | { | |
|
143 | b'path': b'dir0/d', | |
|
144 | b'totalitems': 1 | |
|
145 | }, | |
|
146 | { | |
|
147 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
148 | }, | |
|
149 | { | |
|
150 | b'path': b'g', | |
|
151 | b'totalitems': 1 | |
|
152 | }, | |
|
153 | { | |
|
154 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
155 | }, | |
|
156 | { | |
|
157 | b'path': b'h', | |
|
158 | b'totalitems': 1 | |
|
159 | }, | |
|
160 | { | |
|
161 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
162 | } | |
|
163 | ] | |
|
164 | ||
|
165 | Fetching a single changeset saying parents data is available fetches just new files | |
|
166 | ||
|
167 | $ sendhttpv2peer << EOF | |
|
168 | > command filesdata | |
|
169 | > revisions eval:[{ | |
|
170 | > b'type': b'changesetexplicit', | |
|
171 | > b'nodes': [ | |
|
172 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
173 | > ]}] | |
|
174 | > haveparents eval:True | |
|
175 | > EOF | |
|
176 | creating http peer for wire protocol version 2 | |
|
177 | sending filesdata command | |
|
178 | response: gen[ | |
|
179 | { | |
|
180 | b'totalitems': 4, | |
|
181 | b'totalpaths': 4 | |
|
182 | }, | |
|
183 | { | |
|
184 | b'path': b'a', | |
|
185 | b'totalitems': 1 | |
|
186 | }, | |
|
187 | { | |
|
188 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
189 | }, | |
|
190 | { | |
|
191 | b'path': b'dir0/d', | |
|
192 | b'totalitems': 1 | |
|
193 | }, | |
|
194 | { | |
|
195 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
196 | }, | |
|
197 | { | |
|
198 | b'path': b'g', | |
|
199 | b'totalitems': 1 | |
|
200 | }, | |
|
201 | { | |
|
202 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
203 | }, | |
|
204 | { | |
|
205 | b'path': b'h', | |
|
206 | b'totalitems': 1 | |
|
207 | }, | |
|
208 | { | |
|
209 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
210 | } | |
|
211 | ] | |
|
212 | ||
|
213 | A path filter for a sub-directory is honored | |
|
214 | ||
|
215 | $ sendhttpv2peer << EOF | |
|
216 | > command filesdata | |
|
217 | > revisions eval:[{ | |
|
218 | > b'type': b'changesetexplicit', | |
|
219 | > b'nodes': [ | |
|
220 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
221 | > ]}] | |
|
222 | > haveparents eval:True | |
|
223 | > pathfilter eval:{b'include': [b'path:dir0']} | |
|
224 | > EOF | |
|
225 | creating http peer for wire protocol version 2 | |
|
226 | sending filesdata command | |
|
227 | response: gen[ | |
|
228 | { | |
|
229 | b'totalitems': 1, | |
|
230 | b'totalpaths': 1 | |
|
231 | }, | |
|
232 | { | |
|
233 | b'path': b'dir0/d', | |
|
234 | b'totalitems': 1 | |
|
235 | }, | |
|
236 | { | |
|
237 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
238 | } | |
|
239 | ] | |
|
240 | ||
|
241 | $ sendhttpv2peer << EOF | |
|
242 | > command filesdata | |
|
243 | > revisions eval:[{ | |
|
244 | > b'type': b'changesetexplicit', | |
|
245 | > b'nodes': [ | |
|
246 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
247 | > ]}] | |
|
248 | > haveparents eval:True | |
|
249 | > pathfilter eval:{b'exclude': [b'path:a', b'path:g']} | |
|
250 | > EOF | |
|
251 | creating http peer for wire protocol version 2 | |
|
252 | sending filesdata command | |
|
253 | response: gen[ | |
|
254 | { | |
|
255 | b'totalitems': 2, | |
|
256 | b'totalpaths': 2 | |
|
257 | }, | |
|
258 | { | |
|
259 | b'path': b'dir0/d', | |
|
260 | b'totalitems': 1 | |
|
261 | }, | |
|
262 | { | |
|
263 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
264 | }, | |
|
265 | { | |
|
266 | b'path': b'h', | |
|
267 | b'totalitems': 1 | |
|
268 | }, | |
|
269 | { | |
|
270 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
271 | } | |
|
272 | ] | |
|
273 | ||
|
274 | Requesting multiple changeset nodes without haveparents sends all data for both | |
|
275 | ||
|
276 | $ sendhttpv2peer << EOF | |
|
277 | > command filesdata | |
|
278 | > revisions eval:[{ | |
|
279 | > b'type': b'changesetexplicit', | |
|
280 | > b'nodes': [ | |
|
281 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
282 | > b'\xb9\x1c\x03\xcb\xba\x35\x19\xab\x14\x9b\x6c\xd0\xa0\xaf\xbd\xb5\xcf\x1b\x5c\x8a', | |
|
283 | > ]}] | |
|
284 | > EOF | |
|
285 | creating http peer for wire protocol version 2 | |
|
286 | sending filesdata command | |
|
287 | response: gen[ | |
|
288 | { | |
|
289 | b'totalitems': 10, | |
|
290 | b'totalpaths': 9 | |
|
291 | }, | |
|
292 | { | |
|
293 | b'path': b'a', | |
|
294 | b'totalitems': 1 | |
|
295 | }, | |
|
296 | { | |
|
297 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
298 | }, | |
|
299 | { | |
|
300 | b'path': b'b', | |
|
301 | b'totalitems': 1 | |
|
302 | }, | |
|
303 | { | |
|
304 | b'node': b'\x88\xbac\xb8\xd8\xc6 :\xc6z\xc9\x98\xac\xd9\x17K\xf7\x05!\xb2' | |
|
305 | }, | |
|
306 | { | |
|
307 | b'path': b'dir0/c', | |
|
308 | b'totalitems': 1 | |
|
309 | }, | |
|
310 | { | |
|
311 | b'node': b'\x91DE4j\x0c\xa0b\x9b\xd4|\xeb]\xfe\x07\xe4\xd4\xcf%\x01' | |
|
312 | }, | |
|
313 | { | |
|
314 | b'path': b'dir0/child0/e', | |
|
315 | b'totalitems': 1 | |
|
316 | }, | |
|
317 | { | |
|
318 | b'node': b'\xbb\xbal\x06\xb3\x0fD=4\xff\x84\x1b\xc9\x85\xc4\xd0\x82|k\xe4' | |
|
319 | }, | |
|
320 | { | |
|
321 | b'path': b'dir0/child1/f', | |
|
322 | b'totalitems': 2 | |
|
323 | }, | |
|
324 | { | |
|
325 | b'node': b'\x12\xfc}\xcdw;Z\n\x92\x9c\xe1\x95"\x80\x83\xc6\xdd\xc9\xce\xc4' | |
|
326 | }, | |
|
327 | { | |
|
328 | b'node': b'(\xc7v\xae\x08\xd0\xd5^\xb4\x06H\xb4\x01\xb9\x0f\xf5DH4\x8e' | |
|
329 | }, | |
|
330 | { | |
|
331 | b'path': b'dir0/d', | |
|
332 | b'totalitems': 1 | |
|
333 | }, | |
|
334 | { | |
|
335 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
336 | }, | |
|
337 | { | |
|
338 | b'path': b'dir0/i', | |
|
339 | b'totalitems': 1 | |
|
340 | }, | |
|
341 | { | |
|
342 | b'node': b'\xd7t\xb5\x80Jq\xfd1\xe1\xae\x05\xea\x8e2\xdd\x9b\xa3\xd8S\xd7' | |
|
343 | }, | |
|
344 | { | |
|
345 | b'path': b'g', | |
|
346 | b'totalitems': 1 | |
|
347 | }, | |
|
348 | { | |
|
349 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
350 | }, | |
|
351 | { | |
|
352 | b'path': b'h', | |
|
353 | b'totalitems': 1 | |
|
354 | }, | |
|
355 | { | |
|
356 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
357 | } | |
|
358 | ] | |
|
359 | ||
|
360 | Requesting multiple changeset nodes with haveparents sends incremental data for both | |
|
361 | ||
|
362 | $ sendhttpv2peer << EOF | |
|
363 | > command filesdata | |
|
364 | > revisions eval:[{ | |
|
365 | > b'type': b'changesetexplicit', | |
|
366 | > b'nodes': [ | |
|
367 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
368 | > b'\xb9\x1c\x03\xcb\xba\x35\x19\xab\x14\x9b\x6c\xd0\xa0\xaf\xbd\xb5\xcf\x1b\x5c\x8a', | |
|
369 | > ]}] | |
|
370 | > haveparents eval:True | |
|
371 | > EOF | |
|
372 | creating http peer for wire protocol version 2 | |
|
373 | sending filesdata command | |
|
374 | response: gen[ | |
|
375 | { | |
|
376 | b'totalitems': 6, | |
|
377 | b'totalpaths': 6 | |
|
378 | }, | |
|
379 | { | |
|
380 | b'path': b'a', | |
|
381 | b'totalitems': 1 | |
|
382 | }, | |
|
383 | { | |
|
384 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
385 | }, | |
|
386 | { | |
|
387 | b'path': b'dir0/child1/f', | |
|
388 | b'totalitems': 1 | |
|
389 | }, | |
|
390 | { | |
|
391 | b'node': b'(\xc7v\xae\x08\xd0\xd5^\xb4\x06H\xb4\x01\xb9\x0f\xf5DH4\x8e' | |
|
392 | }, | |
|
393 | { | |
|
394 | b'path': b'dir0/d', | |
|
395 | b'totalitems': 1 | |
|
396 | }, | |
|
397 | { | |
|
398 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
399 | }, | |
|
400 | { | |
|
401 | b'path': b'dir0/i', | |
|
402 | b'totalitems': 1 | |
|
403 | }, | |
|
404 | { | |
|
405 | b'node': b'\xd7t\xb5\x80Jq\xfd1\xe1\xae\x05\xea\x8e2\xdd\x9b\xa3\xd8S\xd7' | |
|
406 | }, | |
|
407 | { | |
|
408 | b'path': b'g', | |
|
409 | b'totalitems': 1 | |
|
410 | }, | |
|
411 | { | |
|
412 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
413 | }, | |
|
414 | { | |
|
415 | b'path': b'h', | |
|
416 | b'totalitems': 1 | |
|
417 | }, | |
|
418 | { | |
|
419 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
420 | } | |
|
421 | ] | |
|
422 | ||
|
423 | Requesting parents works | |
|
424 | ||
|
425 | $ sendhttpv2peer << EOF | |
|
426 | > command filesdata | |
|
427 | > revisions eval:[{ | |
|
428 | > b'type': b'changesetexplicit', | |
|
429 | > b'nodes': [ | |
|
430 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
431 | > ]}] | |
|
432 | > fields eval:[b'parents'] | |
|
433 | > EOF | |
|
434 | creating http peer for wire protocol version 2 | |
|
435 | sending filesdata command | |
|
436 | response: gen[ | |
|
437 | { | |
|
438 | b'totalitems': 8, | |
|
439 | b'totalpaths': 8 | |
|
440 | }, | |
|
441 | { | |
|
442 | b'path': b'a', | |
|
443 | b'totalitems': 1 | |
|
444 | }, | |
|
445 | { | |
|
446 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11', | |
|
447 | b'parents': [ | |
|
448 | b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9', | |
|
449 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
450 | ] | |
|
451 | }, | |
|
452 | { | |
|
453 | b'path': b'b', | |
|
454 | b'totalitems': 1 | |
|
455 | }, | |
|
456 | { | |
|
457 | b'node': b'\x88\xbac\xb8\xd8\xc6 :\xc6z\xc9\x98\xac\xd9\x17K\xf7\x05!\xb2', | |
|
458 | b'parents': [ | |
|
459 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', | |
|
460 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
461 | ] | |
|
462 | }, | |
|
463 | { | |
|
464 | b'path': b'dir0/c', | |
|
465 | b'totalitems': 1 | |
|
466 | }, | |
|
467 | { | |
|
468 | b'node': b'\x91DE4j\x0c\xa0b\x9b\xd4|\xeb]\xfe\x07\xe4\xd4\xcf%\x01', | |
|
469 | b'parents': [ | |
|
470 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', | |
|
471 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
472 | ] | |
|
473 | }, | |
|
474 | { | |
|
475 | b'path': b'dir0/child0/e', | |
|
476 | b'totalitems': 1 | |
|
477 | }, | |
|
478 | { | |
|
479 | b'node': b'\xbb\xbal\x06\xb3\x0fD=4\xff\x84\x1b\xc9\x85\xc4\xd0\x82|k\xe4', | |
|
480 | b'parents': [ | |
|
481 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', | |
|
482 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
483 | ] | |
|
484 | }, | |
|
485 | { | |
|
486 | b'path': b'dir0/child1/f', | |
|
487 | b'totalitems': 1 | |
|
488 | }, | |
|
489 | { | |
|
490 | b'node': b'\x12\xfc}\xcdw;Z\n\x92\x9c\xe1\x95"\x80\x83\xc6\xdd\xc9\xce\xc4', | |
|
491 | b'parents': [ | |
|
492 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', | |
|
493 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
494 | ] | |
|
495 | }, | |
|
496 | { | |
|
497 | b'path': b'dir0/d', | |
|
498 | b'totalitems': 1 | |
|
499 | }, | |
|
500 | { | |
|
501 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G', | |
|
502 | b'parents': [ | |
|
503 | b'S\x82\x06\xdc\x97\x1eR\x15@\xd6\x84:\xbf\xe6\xd1`2\xf6\xd4&', | |
|
504 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
505 | ] | |
|
506 | }, | |
|
507 | { | |
|
508 | b'path': b'g', | |
|
509 | b'totalitems': 1 | |
|
510 | }, | |
|
511 | { | |
|
512 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c', | |
|
513 | b'parents': [ | |
|
514 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', | |
|
515 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
516 | ] | |
|
517 | }, | |
|
518 | { | |
|
519 | b'path': b'h', | |
|
520 | b'totalitems': 1 | |
|
521 | }, | |
|
522 | { | |
|
523 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K', | |
|
524 | b'parents': [ | |
|
525 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', | |
|
526 | b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | |
|
527 | ] | |
|
528 | } | |
|
529 | ] | |
|
530 | ||
|
531 | Requesting revision data works | |
|
532 | (haveparents defaults to False, so fulltext is emitted) | |
|
533 | ||
|
534 | $ sendhttpv2peer << EOF | |
|
535 | > command filesdata | |
|
536 | > revisions eval:[{ | |
|
537 | > b'type': b'changesetexplicit', | |
|
538 | > b'nodes': [ | |
|
539 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
540 | > ]}] | |
|
541 | > fields eval:[b'revision'] | |
|
542 | > EOF | |
|
543 | creating http peer for wire protocol version 2 | |
|
544 | sending filesdata command | |
|
545 | response: gen[ | |
|
546 | { | |
|
547 | b'totalitems': 8, | |
|
548 | b'totalpaths': 8 | |
|
549 | }, | |
|
550 | { | |
|
551 | b'path': b'a', | |
|
552 | b'totalitems': 1 | |
|
553 | }, | |
|
554 | { | |
|
555 | b'fieldsfollowing': [ | |
|
556 | [ | |
|
557 | b'revision', | |
|
558 | 84 | |
|
559 | ] | |
|
560 | ], | |
|
561 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
562 | }, | |
|
563 | b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\na1\n', | |
|
564 | { | |
|
565 | b'path': b'b', | |
|
566 | b'totalitems': 1 | |
|
567 | }, | |
|
568 | { | |
|
569 | b'fieldsfollowing': [ | |
|
570 | [ | |
|
571 | b'revision', | |
|
572 | 81 | |
|
573 | ] | |
|
574 | ], | |
|
575 | b'node': b'\x88\xbac\xb8\xd8\xc6 :\xc6z\xc9\x98\xac\xd9\x17K\xf7\x05!\xb2' | |
|
576 | }, | |
|
577 | b'b0\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n', | |
|
578 | { | |
|
579 | b'path': b'dir0/c', | |
|
580 | b'totalitems': 1 | |
|
581 | }, | |
|
582 | { | |
|
583 | b'fieldsfollowing': [ | |
|
584 | [ | |
|
585 | b'revision', | |
|
586 | 3 | |
|
587 | ] | |
|
588 | ], | |
|
589 | b'node': b'\x91DE4j\x0c\xa0b\x9b\xd4|\xeb]\xfe\x07\xe4\xd4\xcf%\x01' | |
|
590 | }, | |
|
591 | b'c0\n', | |
|
592 | { | |
|
593 | b'path': b'dir0/child0/e', | |
|
594 | b'totalitems': 1 | |
|
595 | }, | |
|
596 | { | |
|
597 | b'fieldsfollowing': [ | |
|
598 | [ | |
|
599 | b'revision', | |
|
600 | 3 | |
|
601 | ] | |
|
602 | ], | |
|
603 | b'node': b'\xbb\xbal\x06\xb3\x0fD=4\xff\x84\x1b\xc9\x85\xc4\xd0\x82|k\xe4' | |
|
604 | }, | |
|
605 | b'e0\n', | |
|
606 | { | |
|
607 | b'path': b'dir0/child1/f', | |
|
608 | b'totalitems': 1 | |
|
609 | }, | |
|
610 | { | |
|
611 | b'fieldsfollowing': [ | |
|
612 | [ | |
|
613 | b'revision', | |
|
614 | 3 | |
|
615 | ] | |
|
616 | ], | |
|
617 | b'node': b'\x12\xfc}\xcdw;Z\n\x92\x9c\xe1\x95"\x80\x83\xc6\xdd\xc9\xce\xc4' | |
|
618 | }, | |
|
619 | b'f0\n', | |
|
620 | { | |
|
621 | b'path': b'dir0/d', | |
|
622 | b'totalitems': 1 | |
|
623 | }, | |
|
624 | { | |
|
625 | b'fieldsfollowing': [ | |
|
626 | [ | |
|
627 | b'revision', | |
|
628 | 3 | |
|
629 | ] | |
|
630 | ], | |
|
631 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
632 | }, | |
|
633 | b'd1\n', | |
|
634 | { | |
|
635 | b'path': b'g', | |
|
636 | b'totalitems': 1 | |
|
637 | }, | |
|
638 | { | |
|
639 | b'fieldsfollowing': [ | |
|
640 | [ | |
|
641 | b'revision', | |
|
642 | 3 | |
|
643 | ] | |
|
644 | ], | |
|
645 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
646 | }, | |
|
647 | b'g0\n', | |
|
648 | { | |
|
649 | b'path': b'h', | |
|
650 | b'totalitems': 1 | |
|
651 | }, | |
|
652 | { | |
|
653 | b'fieldsfollowing': [ | |
|
654 | [ | |
|
655 | b'revision', | |
|
656 | 3 | |
|
657 | ] | |
|
658 | ], | |
|
659 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
660 | }, | |
|
661 | b'h0\n' | |
|
662 | ] | |
|
663 | ||
|
664 | haveparents=False should be same as above | |
|
665 | ||
|
666 | $ sendhttpv2peer << EOF | |
|
667 | > command filesdata | |
|
668 | > revisions eval:[{ | |
|
669 | > b'type': b'changesetexplicit', | |
|
670 | > b'nodes': [ | |
|
671 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
672 | > ]}] | |
|
673 | > fields eval:[b'revision'] | |
|
674 | > haveparents eval:False | |
|
675 | > EOF | |
|
676 | creating http peer for wire protocol version 2 | |
|
677 | sending filesdata command | |
|
678 | response: gen[ | |
|
679 | { | |
|
680 | b'totalitems': 8, | |
|
681 | b'totalpaths': 8 | |
|
682 | }, | |
|
683 | { | |
|
684 | b'path': b'a', | |
|
685 | b'totalitems': 1 | |
|
686 | }, | |
|
687 | { | |
|
688 | b'fieldsfollowing': [ | |
|
689 | [ | |
|
690 | b'revision', | |
|
691 | 84 | |
|
692 | ] | |
|
693 | ], | |
|
694 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
695 | }, | |
|
696 | b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\na1\n', | |
|
697 | { | |
|
698 | b'path': b'b', | |
|
699 | b'totalitems': 1 | |
|
700 | }, | |
|
701 | { | |
|
702 | b'fieldsfollowing': [ | |
|
703 | [ | |
|
704 | b'revision', | |
|
705 | 81 | |
|
706 | ] | |
|
707 | ], | |
|
708 | b'node': b'\x88\xbac\xb8\xd8\xc6 :\xc6z\xc9\x98\xac\xd9\x17K\xf7\x05!\xb2' | |
|
709 | }, | |
|
710 | b'b0\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n', | |
|
711 | { | |
|
712 | b'path': b'dir0/c', | |
|
713 | b'totalitems': 1 | |
|
714 | }, | |
|
715 | { | |
|
716 | b'fieldsfollowing': [ | |
|
717 | [ | |
|
718 | b'revision', | |
|
719 | 3 | |
|
720 | ] | |
|
721 | ], | |
|
722 | b'node': b'\x91DE4j\x0c\xa0b\x9b\xd4|\xeb]\xfe\x07\xe4\xd4\xcf%\x01' | |
|
723 | }, | |
|
724 | b'c0\n', | |
|
725 | { | |
|
726 | b'path': b'dir0/child0/e', | |
|
727 | b'totalitems': 1 | |
|
728 | }, | |
|
729 | { | |
|
730 | b'fieldsfollowing': [ | |
|
731 | [ | |
|
732 | b'revision', | |
|
733 | 3 | |
|
734 | ] | |
|
735 | ], | |
|
736 | b'node': b'\xbb\xbal\x06\xb3\x0fD=4\xff\x84\x1b\xc9\x85\xc4\xd0\x82|k\xe4' | |
|
737 | }, | |
|
738 | b'e0\n', | |
|
739 | { | |
|
740 | b'path': b'dir0/child1/f', | |
|
741 | b'totalitems': 1 | |
|
742 | }, | |
|
743 | { | |
|
744 | b'fieldsfollowing': [ | |
|
745 | [ | |
|
746 | b'revision', | |
|
747 | 3 | |
|
748 | ] | |
|
749 | ], | |
|
750 | b'node': b'\x12\xfc}\xcdw;Z\n\x92\x9c\xe1\x95"\x80\x83\xc6\xdd\xc9\xce\xc4' | |
|
751 | }, | |
|
752 | b'f0\n', | |
|
753 | { | |
|
754 | b'path': b'dir0/d', | |
|
755 | b'totalitems': 1 | |
|
756 | }, | |
|
757 | { | |
|
758 | b'fieldsfollowing': [ | |
|
759 | [ | |
|
760 | b'revision', | |
|
761 | 3 | |
|
762 | ] | |
|
763 | ], | |
|
764 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
765 | }, | |
|
766 | b'd1\n', | |
|
767 | { | |
|
768 | b'path': b'g', | |
|
769 | b'totalitems': 1 | |
|
770 | }, | |
|
771 | { | |
|
772 | b'fieldsfollowing': [ | |
|
773 | [ | |
|
774 | b'revision', | |
|
775 | 3 | |
|
776 | ] | |
|
777 | ], | |
|
778 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
779 | }, | |
|
780 | b'g0\n', | |
|
781 | { | |
|
782 | b'path': b'h', | |
|
783 | b'totalitems': 1 | |
|
784 | }, | |
|
785 | { | |
|
786 | b'fieldsfollowing': [ | |
|
787 | [ | |
|
788 | b'revision', | |
|
789 | 3 | |
|
790 | ] | |
|
791 | ], | |
|
792 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
793 | }, | |
|
794 | b'h0\n' | |
|
795 | ] | |
|
796 | ||
|
797 | haveparents=True should emit a delta | |
|
798 | ||
|
799 | $ sendhttpv2peer << EOF | |
|
800 | > command filesdata | |
|
801 | > revisions eval:[{ | |
|
802 | > b'type': b'changesetexplicit', | |
|
803 | > b'nodes': [ | |
|
804 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
805 | > ]}] | |
|
806 | > fields eval:[b'revision'] | |
|
807 | > haveparents eval:True | |
|
808 | > EOF | |
|
809 | creating http peer for wire protocol version 2 | |
|
810 | sending filesdata command | |
|
811 | response: gen[ | |
|
812 | { | |
|
813 | b'totalitems': 4, | |
|
814 | b'totalpaths': 4 | |
|
815 | }, | |
|
816 | { | |
|
817 | b'path': b'a', | |
|
818 | b'totalitems': 1 | |
|
819 | }, | |
|
820 | { | |
|
821 | b'deltabasenode': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9', | |
|
822 | b'fieldsfollowing': [ | |
|
823 | [ | |
|
824 | b'delta', | |
|
825 | 15 | |
|
826 | ] | |
|
827 | ], | |
|
828 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
829 | }, | |
|
830 | b'\x00\x00\x00Q\x00\x00\x00Q\x00\x00\x00\x03a1\n', | |
|
831 | { | |
|
832 | b'path': b'dir0/d', | |
|
833 | b'totalitems': 1 | |
|
834 | }, | |
|
835 | { | |
|
836 | b'deltabasenode': b'S\x82\x06\xdc\x97\x1eR\x15@\xd6\x84:\xbf\xe6\xd1`2\xf6\xd4&', | |
|
837 | b'fieldsfollowing': [ | |
|
838 | [ | |
|
839 | b'delta', | |
|
840 | 15 | |
|
841 | ] | |
|
842 | ], | |
|
843 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
844 | }, | |
|
845 | b'\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03d1\n', | |
|
846 | { | |
|
847 | b'path': b'g', | |
|
848 | b'totalitems': 1 | |
|
849 | }, | |
|
850 | { | |
|
851 | b'fieldsfollowing': [ | |
|
852 | [ | |
|
853 | b'revision', | |
|
854 | 3 | |
|
855 | ] | |
|
856 | ], | |
|
857 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
858 | }, | |
|
859 | b'g0\n', | |
|
860 | { | |
|
861 | b'path': b'h', | |
|
862 | b'totalitems': 1 | |
|
863 | }, | |
|
864 | { | |
|
865 | b'fieldsfollowing': [ | |
|
866 | [ | |
|
867 | b'revision', | |
|
868 | 3 | |
|
869 | ] | |
|
870 | ], | |
|
871 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
872 | }, | |
|
873 | b'h0\n' | |
|
874 | ] | |
|
875 | ||
|
876 | Requesting multiple revisions works | |
|
877 | (first revision is a fulltext since haveparents=False by default) | |
|
878 | ||
|
879 | $ sendhttpv2peer << EOF | |
|
880 | > command filesdata | |
|
881 | > revisions eval:[{ | |
|
882 | > b'type': b'changesetexplicit', | |
|
883 | > b'nodes': [ | |
|
884 | > b'\x6e\x87\x5f\xf1\x8c\x22\x76\x59\xad\x61\x43\xbb\x35\x80\xc6\x57\x00\x73\x48\x84', | |
|
885 | > b'\x5b\x0b\x1a\x23\x57\x7e\x20\x5e\xa2\x40\xe3\x9c\x97\x04\xe2\x8d\x76\x97\xcb\xd8', | |
|
886 | > b'\xb9\x1c\x03\xcb\xba\x35\x19\xab\x14\x9b\x6c\xd0\xa0\xaf\xbd\xb5\xcf\x1b\x5c\x8a', | |
|
887 | > ]}] | |
|
888 | > fields eval:[b'revision'] | |
|
889 | > EOF | |
|
890 | creating http peer for wire protocol version 2 | |
|
891 | sending filesdata command | |
|
892 | response: gen[ | |
|
893 | { | |
|
894 | b'totalitems': 12, | |
|
895 | b'totalpaths': 9 | |
|
896 | }, | |
|
897 | { | |
|
898 | b'path': b'a', | |
|
899 | b'totalitems': 2 | |
|
900 | }, | |
|
901 | { | |
|
902 | b'fieldsfollowing': [ | |
|
903 | [ | |
|
904 | b'revision', | |
|
905 | 81 | |
|
906 | ] | |
|
907 | ], | |
|
908 | b'node': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9' | |
|
909 | }, | |
|
910 | b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\n', | |
|
911 | { | |
|
912 | b'deltabasenode': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9', | |
|
913 | b'fieldsfollowing': [ | |
|
914 | [ | |
|
915 | b'delta', | |
|
916 | 15 | |
|
917 | ] | |
|
918 | ], | |
|
919 | b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11' | |
|
920 | }, | |
|
921 | b'\x00\x00\x00Q\x00\x00\x00Q\x00\x00\x00\x03a1\n', | |
|
922 | { | |
|
923 | b'path': b'b', | |
|
924 | b'totalitems': 1 | |
|
925 | }, | |
|
926 | { | |
|
927 | b'fieldsfollowing': [ | |
|
928 | [ | |
|
929 | b'revision', | |
|
930 | 81 | |
|
931 | ] | |
|
932 | ], | |
|
933 | b'node': b'\x88\xbac\xb8\xd8\xc6 :\xc6z\xc9\x98\xac\xd9\x17K\xf7\x05!\xb2' | |
|
934 | }, | |
|
935 | b'b0\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n', | |
|
936 | { | |
|
937 | b'path': b'dir0/c', | |
|
938 | b'totalitems': 1 | |
|
939 | }, | |
|
940 | { | |
|
941 | b'fieldsfollowing': [ | |
|
942 | [ | |
|
943 | b'revision', | |
|
944 | 3 | |
|
945 | ] | |
|
946 | ], | |
|
947 | b'node': b'\x91DE4j\x0c\xa0b\x9b\xd4|\xeb]\xfe\x07\xe4\xd4\xcf%\x01' | |
|
948 | }, | |
|
949 | b'c0\n', | |
|
950 | { | |
|
951 | b'path': b'dir0/child0/e', | |
|
952 | b'totalitems': 1 | |
|
953 | }, | |
|
954 | { | |
|
955 | b'fieldsfollowing': [ | |
|
956 | [ | |
|
957 | b'revision', | |
|
958 | 3 | |
|
959 | ] | |
|
960 | ], | |
|
961 | b'node': b'\xbb\xbal\x06\xb3\x0fD=4\xff\x84\x1b\xc9\x85\xc4\xd0\x82|k\xe4' | |
|
962 | }, | |
|
963 | b'e0\n', | |
|
964 | { | |
|
965 | b'path': b'dir0/child1/f', | |
|
966 | b'totalitems': 2 | |
|
967 | }, | |
|
968 | { | |
|
969 | b'fieldsfollowing': [ | |
|
970 | [ | |
|
971 | b'revision', | |
|
972 | 3 | |
|
973 | ] | |
|
974 | ], | |
|
975 | b'node': b'\x12\xfc}\xcdw;Z\n\x92\x9c\xe1\x95"\x80\x83\xc6\xdd\xc9\xce\xc4' | |
|
976 | }, | |
|
977 | b'f0\n', | |
|
978 | { | |
|
979 | b'deltabasenode': b'\x12\xfc}\xcdw;Z\n\x92\x9c\xe1\x95"\x80\x83\xc6\xdd\xc9\xce\xc4', | |
|
980 | b'fieldsfollowing': [ | |
|
981 | [ | |
|
982 | b'delta', | |
|
983 | 15 | |
|
984 | ] | |
|
985 | ], | |
|
986 | b'node': b'(\xc7v\xae\x08\xd0\xd5^\xb4\x06H\xb4\x01\xb9\x0f\xf5DH4\x8e' | |
|
987 | }, | |
|
988 | b'\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03f1\n', | |
|
989 | { | |
|
990 | b'path': b'dir0/d', | |
|
991 | b'totalitems': 2 | |
|
992 | }, | |
|
993 | { | |
|
994 | b'fieldsfollowing': [ | |
|
995 | [ | |
|
996 | b'revision', | |
|
997 | 3 | |
|
998 | ] | |
|
999 | ], | |
|
1000 | b'node': b'S\x82\x06\xdc\x97\x1eR\x15@\xd6\x84:\xbf\xe6\xd1`2\xf6\xd4&' | |
|
1001 | }, | |
|
1002 | b'd0\n', | |
|
1003 | { | |
|
1004 | b'deltabasenode': b'S\x82\x06\xdc\x97\x1eR\x15@\xd6\x84:\xbf\xe6\xd1`2\xf6\xd4&', | |
|
1005 | b'fieldsfollowing': [ | |
|
1006 | [ | |
|
1007 | b'delta', | |
|
1008 | 15 | |
|
1009 | ] | |
|
1010 | ], | |
|
1011 | b'node': b'\x93\x88)\xad\x01R}2\xba\x06_\x81#6\xfe\xc7\x9d\xdd9G' | |
|
1012 | }, | |
|
1013 | b'\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03d1\n', | |
|
1014 | { | |
|
1015 | b'path': b'dir0/i', | |
|
1016 | b'totalitems': 1 | |
|
1017 | }, | |
|
1018 | { | |
|
1019 | b'fieldsfollowing': [ | |
|
1020 | [ | |
|
1021 | b'revision', | |
|
1022 | 3 | |
|
1023 | ] | |
|
1024 | ], | |
|
1025 | b'node': b'\xd7t\xb5\x80Jq\xfd1\xe1\xae\x05\xea\x8e2\xdd\x9b\xa3\xd8S\xd7' | |
|
1026 | }, | |
|
1027 | b'i0\n', | |
|
1028 | { | |
|
1029 | b'path': b'g', | |
|
1030 | b'totalitems': 1 | |
|
1031 | }, | |
|
1032 | { | |
|
1033 | b'fieldsfollowing': [ | |
|
1034 | [ | |
|
1035 | b'revision', | |
|
1036 | 3 | |
|
1037 | ] | |
|
1038 | ], | |
|
1039 | b'node': b'\xde\xca\xba5DFjI\x95r\xe9\x0f\xac\xe6\xfa\x0c!k\xba\x8c' | |
|
1040 | }, | |
|
1041 | b'g0\n', | |
|
1042 | { | |
|
1043 | b'path': b'h', | |
|
1044 | b'totalitems': 1 | |
|
1045 | }, | |
|
1046 | { | |
|
1047 | b'fieldsfollowing': [ | |
|
1048 | [ | |
|
1049 | b'revision', | |
|
1050 | 3 | |
|
1051 | ] | |
|
1052 | ], | |
|
1053 | b'node': b'\x03A\xfc\x84\x1b\xb5\xb4\xba\x93\xb2mM\xdaa\xf7y6]\xb3K' | |
|
1054 | }, | |
|
1055 | b'h0\n' | |
|
1056 | ] | |
|
1057 | ||
|
1058 | $ cat error.log |
@@ -604,6 +604,9 b" coreconfigitem('experimental', 'revlogv2" | |||
|
604 | 604 | coreconfigitem('experimental', 'revisions.disambiguatewithin', |
|
605 | 605 | default=None, |
|
606 | 606 | ) |
|
607 | coreconfigitem('experimental', 'server.filesdata.recommended-batch-size', | |
|
608 | default=50000, | |
|
609 | ) | |
|
607 | 610 | coreconfigitem('experimental', 'server.manifestdata.recommended-batch-size', |
|
608 | 611 | default=100000, |
|
609 | 612 | ) |
@@ -340,6 +340,89 b' revision data or a delta. What the serve' | |||
|
340 | 340 | for the presence of the ``delta`` or ``revision`` keys in the |
|
341 | 341 | ``fieldsfollowing`` array. |
|
342 | 342 | |
|
343 | filesdata | |
|
344 | --------- | |
|
345 | ||
|
346 | Obtain various data related to multiple tracked files for specific changesets. | |
|
347 | ||
|
348 | This command is similar to ``filedata`` with the main difference being that | |
|
349 | individual requests operate on multiple file paths. This allows clients to | |
|
350 | request data for multiple paths by issuing a single command. | |
|
351 | ||
|
352 | The command accepts the following arguments: | |
|
353 | ||
|
354 | fields | |
|
355 | (set of bytestring) Which data associated with a file to fetch. | |
|
356 | The following values are recognized: | |
|
357 | ||
|
358 | parents | |
|
359 | Parent nodes for the revision. | |
|
360 | ||
|
361 | revision | |
|
362 | The raw revision data for a file. | |
|
363 | ||
|
364 | haveparents | |
|
365 | (bool) Whether the client has the parent revisions of all requested | |
|
366 | nodes. | |
|
367 | ||
|
368 | pathfilter | |
|
369 | (map) Defines a filter that determines what file paths are relevant. | |
|
370 | ||
|
371 | See the *Path Filters* section for more. | |
|
372 | ||
|
373 | If the argument is omitted, it is assumed that all paths are relevant. | |
|
374 | ||
|
375 | revisions | |
|
376 | (array of maps) Specifies revisions whose data is being requested. Each value | |
|
377 | in the array is a map describing revisions. See the *Revisions Specifiers* | |
|
378 | section below for the format of this map. | |
|
379 | ||
|
380 | Data will be sent for the union of all revisions resolved by all revision | |
|
381 | specifiers. | |
|
382 | ||
|
383 | Only revision specifiers operating on changeset revisions are allowed. | |
|
384 | ||
|
385 | The response bytestream starts with a CBOR map describing the data that | |
|
386 | follows. This map has the following bytestring keys: | |
|
387 | ||
|
388 | totalpaths | |
|
389 | (unsigned integer) Total number of paths whose data is being transferred. | |
|
390 | ||
|
391 | totalitems | |
|
392 | (unsigned integer) Total number of file revisions whose data is being | |
|
393 | transferred. | |
|
394 | ||
|
395 | Following the map header are 0 or more sequences of CBOR values. Each sequence | |
|
396 | represents data for a specific tracked path. Each sequence begins with a CBOR | |
|
397 | map describing the file data that follows. Following that map is N CBOR values | |
|
398 | describing file revision data. The format of this data is identical to that | |
|
399 | returned by the ``filedata`` command. | |
|
400 | ||
|
401 | Each sequence's map header has the following bytestring keys: | |
|
402 | ||
|
403 | path | |
|
404 | (bytestring) The tracked file path whose data follows. | |
|
405 | ||
|
406 | totalitems | |
|
407 | (unsigned integer) Total number of file revisions whose data is being | |
|
408 | transferred. | |
|
409 | ||
|
410 | The ``haveparents`` argument has significant implications on the data | |
|
411 | transferred. | |
|
412 | ||
|
413 | When ``haveparents`` is true, the command MAY only emit data for file | |
|
414 | revisions introduced by the set of changeset revisions whose data is being | |
|
415 | requested. In other words, the command may assume that all file revisions | |
|
416 | for all relevant paths for ancestors of the requested changeset revisions | |
|
417 | are present on the receiver. | |
|
418 | ||
|
419 | When ``haveparents`` is false, the command MUST assume that the receiver | |
|
420 | has no file revisions data. This means that all referenced file revisions | |
|
421 | in the queried set of changeset revisions will be sent. | |
|
422 | ||
|
423 | TODO we'll probably want a more complicated mechanism for the client to | |
|
424 | specify which ancestor revisions are known. | |
|
425 | ||
|
343 | 426 | heads |
|
344 | 427 | ----- |
|
345 | 428 | |
@@ -559,3 +642,27 b' changesetdagrange' | |||
|
559 | 642 | revisions between will be used. Nodes in ``roots`` are not part of the |
|
560 | 643 | resolved set. Nodes in ``heads`` are. The ``roots`` array may be empty. |
|
561 | 644 | The ``heads`` array MUST be defined. |
|
645 | ||
|
646 | Path Filters | |
|
647 | ============ | |
|
648 | ||
|
649 | Various commands accept a *path filter* argument that defines the set of file | |
|
650 | paths relevant to the request. | |
|
651 | ||
|
652 | A *path filter* is defined as a map with the bytestring keys ``include`` and | |
|
653 | ``exclude``. Each is an array of bytestring values. Each value defines a pattern | |
|
654 | rule (see :hg:`help patterns`) that is used to match file paths. | |
|
655 | ||
|
656 | A path matches the path filter if it is matched by a rule in the ``include`` | |
|
657 | set but doesn't match a rule in the ``exclude`` set. In other words, a path | |
|
658 | matcher takes the union of all ``include`` patterns and then substracts the | |
|
659 | union of all ``exclude`` patterns. | |
|
660 | ||
|
661 | Patterns MUST be prefixed with their pattern type. Only the following pattern | |
|
662 | types are allowed: ``path:``, ``rootfilesin:``. | |
|
663 | ||
|
664 | If the ``include`` key is omitted, it is assumed that all paths are | |
|
665 | relevant. The patterns from ``exclude`` will still be used, if defined. | |
|
666 | ||
|
667 | An example value is ``path:tests/foo``, which would match a file named | |
|
668 | ``tests/foo`` or a directory ``tests/foo`` and all files under it. |
@@ -6,6 +6,7 b'' | |||
|
6 | 6 | |
|
7 | 7 | from __future__ import absolute_import |
|
8 | 8 | |
|
9 | import collections | |
|
9 | 10 | import contextlib |
|
10 | 11 | import hashlib |
|
11 | 12 | |
@@ -18,6 +19,7 b' from . import (' | |||
|
18 | 19 | discovery, |
|
19 | 20 | encoding, |
|
20 | 21 | error, |
|
22 | match as matchmod, | |
|
21 | 23 | narrowspec, |
|
22 | 24 | pycompat, |
|
23 | 25 | wireprotoframing, |
@@ -1004,6 +1006,29 b' def emitfilerevisions(revisions, fields)' | |||
|
1004 | 1006 | for extra in followingdata: |
|
1005 | 1007 | yield extra |
|
1006 | 1008 | |
|
1009 | def makefilematcher(repo, pathfilter): | |
|
1010 | """Construct a matcher from a path filter dict.""" | |
|
1011 | ||
|
1012 | # Validate values. | |
|
1013 | if pathfilter: | |
|
1014 | for key in (b'include', b'exclude'): | |
|
1015 | for pattern in pathfilter.get(key, []): | |
|
1016 | if not pattern.startswith((b'path:', b'rootfilesin:')): | |
|
1017 | raise error.WireprotoCommandError( | |
|
1018 | '%s pattern must begin with `path:` or `rootfilesin:`; ' | |
|
1019 | 'got %s', (key, pattern)) | |
|
1020 | ||
|
1021 | if pathfilter: | |
|
1022 | matcher = matchmod.match(repo.root, b'', | |
|
1023 | include=pathfilter.get(b'include', []), | |
|
1024 | exclude=pathfilter.get(b'exclude', [])) | |
|
1025 | else: | |
|
1026 | matcher = matchmod.match(repo.root, b'') | |
|
1027 | ||
|
1028 | # Requested patterns could include files not in the local store. So | |
|
1029 | # filter those out. | |
|
1030 | return matchmod.intersectmatchers(repo.narrowmatch(), matcher) | |
|
1031 | ||
|
1007 | 1032 | @wireprotocommand( |
|
1008 | 1033 | 'filedata', |
|
1009 | 1034 | args={ |
@@ -1033,6 +1058,10 b' def emitfilerevisions(revisions, fields)' | |||
|
1033 | 1058 | # the cache key. |
|
1034 | 1059 | cachekeyfn=makecommandcachekeyfn('filedata', 1, allargs=True)) |
|
1035 | 1060 | def filedata(repo, proto, haveparents, nodes, fields, path): |
|
1061 | # TODO this API allows access to file revisions that are attached to | |
|
1062 | # secret changesets. filesdata does not have this problem. Maybe this | |
|
1063 | # API should be deleted? | |
|
1064 | ||
|
1036 | 1065 | try: |
|
1037 | 1066 | # Extensions may wish to access the protocol handler. |
|
1038 | 1067 | store = getfilestore(repo, proto, path) |
@@ -1058,6 +1087,117 b' def filedata(repo, proto, haveparents, n' | |||
|
1058 | 1087 | for o in emitfilerevisions(revisions, fields): |
|
1059 | 1088 | yield o |
|
1060 | 1089 | |
|
1090 | def filesdatacapabilities(repo, proto): | |
|
1091 | batchsize = repo.ui.configint( | |
|
1092 | b'experimental', b'server.filesdata.recommended-batch-size') | |
|
1093 | return { | |
|
1094 | b'recommendedbatchsize': batchsize, | |
|
1095 | } | |
|
1096 | ||
|
1097 | @wireprotocommand( | |
|
1098 | 'filesdata', | |
|
1099 | args={ | |
|
1100 | 'haveparents': { | |
|
1101 | 'type': 'bool', | |
|
1102 | 'default': lambda: False, | |
|
1103 | 'example': True, | |
|
1104 | }, | |
|
1105 | 'fields': { | |
|
1106 | 'type': 'set', | |
|
1107 | 'default': set, | |
|
1108 | 'example': {b'parents', b'revision'}, | |
|
1109 | 'validvalues': {b'firstchangeset', b'parents', b'revision'}, | |
|
1110 | }, | |
|
1111 | 'pathfilter': { | |
|
1112 | 'type': 'dict', | |
|
1113 | 'default': lambda: None, | |
|
1114 | 'example': {b'include': [b'path:tests']}, | |
|
1115 | }, | |
|
1116 | 'revisions': { | |
|
1117 | 'type': 'list', | |
|
1118 | 'example': [{ | |
|
1119 | b'type': b'changesetexplicit', | |
|
1120 | b'nodes': [b'abcdef...'], | |
|
1121 | }], | |
|
1122 | }, | |
|
1123 | }, | |
|
1124 | permission='pull', | |
|
1125 | # TODO censoring a file revision won't invalidate the cache. | |
|
1126 | # Figure out a way to take censoring into account when deriving | |
|
1127 | # the cache key. | |
|
1128 | cachekeyfn=makecommandcachekeyfn('filesdata', 1, allargs=True), | |
|
1129 | extracapabilitiesfn=filesdatacapabilities) | |
|
1130 | def filesdata(repo, proto, haveparents, fields, pathfilter, revisions): | |
|
1131 | # TODO This should operate on a repo that exposes obsolete changesets. There | |
|
1132 | # is a race between a client making a push that obsoletes a changeset and | |
|
1133 | # another client fetching files data for that changeset. If a client has a | |
|
1134 | # changeset, it should probably be allowed to access files data for that | |
|
1135 | # changeset. | |
|
1136 | ||
|
1137 | cl = repo.changelog | |
|
1138 | outgoing = resolvenodes(repo, revisions) | |
|
1139 | filematcher = makefilematcher(repo, pathfilter) | |
|
1140 | ||
|
1141 | # Figure out what needs to be emitted. | |
|
1142 | changedpaths = set() | |
|
1143 | fnodes = collections.defaultdict(set) | |
|
1144 | ||
|
1145 | for node in outgoing: | |
|
1146 | ctx = repo[node] | |
|
1147 | changedpaths.update(ctx.files()) | |
|
1148 | ||
|
1149 | changedpaths = sorted(p for p in changedpaths if filematcher(p)) | |
|
1150 | ||
|
1151 | # If ancestors are known, we send file revisions having a linkrev in the | |
|
1152 | # outgoing set of changeset revisions. | |
|
1153 | if haveparents: | |
|
1154 | outgoingclrevs = set(cl.rev(n) for n in outgoing) | |
|
1155 | ||
|
1156 | for path in changedpaths: | |
|
1157 | try: | |
|
1158 | store = getfilestore(repo, proto, path) | |
|
1159 | except FileAccessError as e: | |
|
1160 | raise error.WireprotoCommandError(e.msg, e.args) | |
|
1161 | ||
|
1162 | for rev in store: | |
|
1163 | linkrev = store.linkrev(rev) | |
|
1164 | ||
|
1165 | if linkrev in outgoingclrevs: | |
|
1166 | fnodes[path].add(store.node(rev)) | |
|
1167 | ||
|
1168 | # If ancestors aren't known, we walk the manifests and send all | |
|
1169 | # encountered file revisions. | |
|
1170 | else: | |
|
1171 | for node in outgoing: | |
|
1172 | mctx = repo[node].manifestctx() | |
|
1173 | ||
|
1174 | for path, fnode in mctx.read().items(): | |
|
1175 | if filematcher(path): | |
|
1176 | fnodes[path].add(fnode) | |
|
1177 | ||
|
1178 | yield { | |
|
1179 | b'totalpaths': len(fnodes), | |
|
1180 | b'totalitems': sum(len(v) for v in fnodes.values()) | |
|
1181 | } | |
|
1182 | ||
|
1183 | for path, filenodes in sorted(fnodes.items()): | |
|
1184 | try: | |
|
1185 | store = getfilestore(repo, proto, path) | |
|
1186 | except FileAccessError as e: | |
|
1187 | raise error.WireprotoCommandError(e.msg, e.args) | |
|
1188 | ||
|
1189 | yield { | |
|
1190 | b'path': path, | |
|
1191 | b'totalitems': len(filenodes), | |
|
1192 | } | |
|
1193 | ||
|
1194 | revisions = store.emitrevisions(filenodes, | |
|
1195 | revisiondata=b'revision' in fields, | |
|
1196 | assumehaveparentrevisions=haveparents) | |
|
1197 | ||
|
1198 | for o in emitfilerevisions(revisions, fields): | |
|
1199 | yield o | |
|
1200 | ||
|
1061 | 1201 | @wireprotocommand( |
|
1062 | 1202 | 'heads', |
|
1063 | 1203 | args={ |
@@ -315,7 +315,7 b' Client with HTTPv2 enabled automatically' | |||
|
315 | 315 | s> Content-Type: application/mercurial-cbor\r\n |
|
316 | 316 | s> Content-Length: *\r\n (glob) |
|
317 | 317 | s> \r\n |
|
318 |
s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa4Hcommands\xa |
|
|
318 | s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa4Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash | |
|
319 | 319 | sending heads command |
|
320 | 320 | s> POST /api/exp-http-v2-0003/ro/heads HTTP/1.1\r\n |
|
321 | 321 | s> Accept-Encoding: identity\r\n |
@@ -273,6 +273,38 b' A non-cacheable command does not instant' | |||
|
273 | 273 | b'pull' |
|
274 | 274 | ] |
|
275 | 275 | }, |
|
276 | b'filesdata': { | |
|
277 | b'args': { | |
|
278 | b'fields': { | |
|
279 | b'default': set([]), | |
|
280 | b'required': False, | |
|
281 | b'type': b'set', | |
|
282 | b'validvalues': set([ | |
|
283 | b'firstchangeset', | |
|
284 | b'parents', | |
|
285 | b'revision' | |
|
286 | ]) | |
|
287 | }, | |
|
288 | b'haveparents': { | |
|
289 | b'default': False, | |
|
290 | b'required': False, | |
|
291 | b'type': b'bool' | |
|
292 | }, | |
|
293 | b'pathfilter': { | |
|
294 | b'default': None, | |
|
295 | b'required': False, | |
|
296 | b'type': b'dict' | |
|
297 | }, | |
|
298 | b'revisions': { | |
|
299 | b'required': True, | |
|
300 | b'type': b'list' | |
|
301 | } | |
|
302 | }, | |
|
303 | b'permissions': [ | |
|
304 | b'pull' | |
|
305 | ], | |
|
306 | b'recommendedbatchsize': 50000 | |
|
307 | }, | |
|
276 | 308 | b'heads': { |
|
277 | 309 | b'args': { |
|
278 | 310 | b'publiconly': { |
@@ -216,7 +216,7 b' Request for HTTPv2 service returns infor' | |||
|
216 | 216 | s> Content-Type: application/mercurial-cbor\r\n |
|
217 | 217 | s> Content-Length: *\r\n (glob) |
|
218 | 218 | s> \r\n |
|
219 |
s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa4Hcommands\xa |
|
|
219 | s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa4Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash | |
|
220 | 220 | cbor> [ |
|
221 | 221 | { |
|
222 | 222 | b'apibase': b'api/', |
@@ -286,6 +286,38 b' Request for HTTPv2 service returns infor' | |||
|
286 | 286 | b'pull' |
|
287 | 287 | ] |
|
288 | 288 | }, |
|
289 | b'filesdata': { | |
|
290 | b'args': { | |
|
291 | b'fields': { | |
|
292 | b'default': set([]), | |
|
293 | b'required': False, | |
|
294 | b'type': b'set', | |
|
295 | b'validvalues': set([ | |
|
296 | b'firstchangeset', | |
|
297 | b'parents', | |
|
298 | b'revision' | |
|
299 | ]) | |
|
300 | }, | |
|
301 | b'haveparents': { | |
|
302 | b'default': False, | |
|
303 | b'required': False, | |
|
304 | b'type': b'bool' | |
|
305 | }, | |
|
306 | b'pathfilter': { | |
|
307 | b'default': None, | |
|
308 | b'required': False, | |
|
309 | b'type': b'dict' | |
|
310 | }, | |
|
311 | b'revisions': { | |
|
312 | b'required': True, | |
|
313 | b'type': b'list' | |
|
314 | } | |
|
315 | }, | |
|
316 | b'permissions': [ | |
|
317 | b'pull' | |
|
318 | ], | |
|
319 | b'recommendedbatchsize': 50000 | |
|
320 | }, | |
|
289 | 321 | b'heads': { |
|
290 | 322 | b'args': { |
|
291 | 323 | b'publiconly': { |
@@ -425,7 +457,7 b' capabilities command returns expected in' | |||
|
425 | 457 | s> Content-Type: application/mercurial-cbor\r\n |
|
426 | 458 | s> Content-Length: *\r\n (glob) |
|
427 | 459 | s> \r\n |
|
428 |
s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa4Hcommands\xa |
|
|
460 | s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa4Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash | |
|
429 | 461 | sending capabilities command |
|
430 | 462 | s> POST /api/exp-http-v2-0003/ro/capabilities HTTP/1.1\r\n |
|
431 | 463 | s> Accept-Encoding: identity\r\n |
@@ -453,11 +485,11 b' capabilities command returns expected in' | |||
|
453 | 485 | s> \xa1FstatusBok |
|
454 | 486 | s> \r\n |
|
455 | 487 | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) |
|
456 |
s> |
|
|
457 |
s> \xc |
|
|
458 |
s> \xa4Hcommands\xa |
|
|
488 | s> 5d1\r\n | |
|
489 | s> \xc9\x05\x00\x01\x00\x02\x041 | |
|
490 | s> \xa4Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1 | |
|
459 | 491 | s> \r\n |
|
460 |
received frame(size=1 |
|
|
492 | received frame(size=1481; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | |
|
461 | 493 | s> 8\r\n |
|
462 | 494 | s> \x00\x00\x00\x01\x00\x02\x002 |
|
463 | 495 | s> \r\n |
@@ -530,6 +562,38 b' capabilities command returns expected in' | |||
|
530 | 562 | b'pull' |
|
531 | 563 | ] |
|
532 | 564 | }, |
|
565 | b'filesdata': { | |
|
566 | b'args': { | |
|
567 | b'fields': { | |
|
568 | b'default': set([]), | |
|
569 | b'required': False, | |
|
570 | b'type': b'set', | |
|
571 | b'validvalues': set([ | |
|
572 | b'firstchangeset', | |
|
573 | b'parents', | |
|
574 | b'revision' | |
|
575 | ]) | |
|
576 | }, | |
|
577 | b'haveparents': { | |
|
578 | b'default': False, | |
|
579 | b'required': False, | |
|
580 | b'type': b'bool' | |
|
581 | }, | |
|
582 | b'pathfilter': { | |
|
583 | b'default': None, | |
|
584 | b'required': False, | |
|
585 | b'type': b'dict' | |
|
586 | }, | |
|
587 | b'revisions': { | |
|
588 | b'required': True, | |
|
589 | b'type': b'list' | |
|
590 | } | |
|
591 | }, | |
|
592 | b'permissions': [ | |
|
593 | b'pull' | |
|
594 | ], | |
|
595 | b'recommendedbatchsize': 50000 | |
|
596 | }, | |
|
533 | 597 | b'heads': { |
|
534 | 598 | b'args': { |
|
535 | 599 | b'publiconly': { |
@@ -65,9 +65,9 b' Redirect targets advertised when configu' | |||
|
65 | 65 | s> Server: testing stub value\r\n |
|
66 | 66 | s> Date: $HTTP_DATE$\r\n |
|
67 | 67 | s> Content-Type: application/mercurial-cbor\r\n |
|
68 |
s> Content-Length: |
|
|
68 | s> Content-Length: 2131\r\n | |
|
69 | 69 | s> \r\n |
|
70 |
s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xa |
|
|
70 | s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash | |
|
71 | 71 | (remote redirect target target-a is compatible) |
|
72 | 72 | sending capabilities command |
|
73 | 73 | s> POST /api/exp-http-v2-0003/ro/capabilities HTTP/1.1\r\n |
@@ -96,11 +96,11 b' Redirect targets advertised when configu' | |||
|
96 | 96 | s> \xa1FstatusBok |
|
97 | 97 | s> \r\n |
|
98 | 98 | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) |
|
99 |
s> |
|
|
100 |
s> |
|
|
101 |
s> \xa5Hcommands\xa |
|
|
99 | s> 651\r\n | |
|
100 | s> I\x06\x00\x01\x00\x02\x041 | |
|
101 | s> \xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/ | |
|
102 | 102 | s> \r\n |
|
103 |
received frame(size=1 |
|
|
103 | received frame(size=1609; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | |
|
104 | 104 | s> 8\r\n |
|
105 | 105 | s> \x00\x00\x00\x01\x00\x02\x002 |
|
106 | 106 | s> \r\n |
@@ -173,6 +173,38 b' Redirect targets advertised when configu' | |||
|
173 | 173 | b'pull' |
|
174 | 174 | ] |
|
175 | 175 | }, |
|
176 | b'filesdata': { | |
|
177 | b'args': { | |
|
178 | b'fields': { | |
|
179 | b'default': set([]), | |
|
180 | b'required': False, | |
|
181 | b'type': b'set', | |
|
182 | b'validvalues': set([ | |
|
183 | b'firstchangeset', | |
|
184 | b'parents', | |
|
185 | b'revision' | |
|
186 | ]) | |
|
187 | }, | |
|
188 | b'haveparents': { | |
|
189 | b'default': False, | |
|
190 | b'required': False, | |
|
191 | b'type': b'bool' | |
|
192 | }, | |
|
193 | b'pathfilter': { | |
|
194 | b'default': None, | |
|
195 | b'required': False, | |
|
196 | b'type': b'dict' | |
|
197 | }, | |
|
198 | b'revisions': { | |
|
199 | b'required': True, | |
|
200 | b'type': b'list' | |
|
201 | } | |
|
202 | }, | |
|
203 | b'permissions': [ | |
|
204 | b'pull' | |
|
205 | ], | |
|
206 | b'recommendedbatchsize': 50000 | |
|
207 | }, | |
|
176 | 208 | b'heads': { |
|
177 | 209 | b'args': { |
|
178 | 210 | b'publiconly': { |
@@ -343,9 +375,9 b' Unknown protocol is filtered from compat' | |||
|
343 | 375 | s> Server: testing stub value\r\n |
|
344 | 376 | s> Date: $HTTP_DATE$\r\n |
|
345 | 377 | s> Content-Type: application/mercurial-cbor\r\n |
|
346 |
s> Content-Length: |
|
|
378 | s> Content-Length: 2158\r\n | |
|
347 | 379 | s> \r\n |
|
348 |
s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xa |
|
|
380 | s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash | |
|
349 | 381 | (remote redirect target target-a is compatible) |
|
350 | 382 | (remote redirect target target-b uses unsupported protocol: unknown) |
|
351 | 383 | sending capabilities command |
@@ -375,11 +407,11 b' Unknown protocol is filtered from compat' | |||
|
375 | 407 | s> \xa1FstatusBok |
|
376 | 408 | s> \r\n |
|
377 | 409 | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) |
|
378 |
s> |
|
|
379 |
s> |
|
|
380 |
s> \xa5Hcommands\xa |
|
|
410 | s> 66c\r\n | |
|
411 | s> d\x06\x00\x01\x00\x02\x041 | |
|
412 | s> \xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/ | |
|
381 | 413 | s> \r\n |
|
382 |
received frame(size=13 |
|
|
414 | received frame(size=1636; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | |
|
383 | 415 | s> 8\r\n |
|
384 | 416 | s> \x00\x00\x00\x01\x00\x02\x002 |
|
385 | 417 | s> \r\n |
@@ -452,6 +484,38 b' Unknown protocol is filtered from compat' | |||
|
452 | 484 | b'pull' |
|
453 | 485 | ] |
|
454 | 486 | }, |
|
487 | b'filesdata': { | |
|
488 | b'args': { | |
|
489 | b'fields': { | |
|
490 | b'default': set([]), | |
|
491 | b'required': False, | |
|
492 | b'type': b'set', | |
|
493 | b'validvalues': set([ | |
|
494 | b'firstchangeset', | |
|
495 | b'parents', | |
|
496 | b'revision' | |
|
497 | ]) | |
|
498 | }, | |
|
499 | b'haveparents': { | |
|
500 | b'default': False, | |
|
501 | b'required': False, | |
|
502 | b'type': b'bool' | |
|
503 | }, | |
|
504 | b'pathfilter': { | |
|
505 | b'default': None, | |
|
506 | b'required': False, | |
|
507 | b'type': b'dict' | |
|
508 | }, | |
|
509 | b'revisions': { | |
|
510 | b'required': True, | |
|
511 | b'type': b'list' | |
|
512 | } | |
|
513 | }, | |
|
514 | b'permissions': [ | |
|
515 | b'pull' | |
|
516 | ], | |
|
517 | b'recommendedbatchsize': 50000 | |
|
518 | }, | |
|
455 | 519 | b'heads': { |
|
456 | 520 | b'args': { |
|
457 | 521 | b'publiconly': { |
@@ -629,9 +693,9 b' Missing SNI support filters targets that' | |||
|
629 | 693 | s> Server: testing stub value\r\n |
|
630 | 694 | s> Date: $HTTP_DATE$\r\n |
|
631 | 695 | s> Content-Type: application/mercurial-cbor\r\n |
|
632 |
s> Content-Length: |
|
|
696 | s> Content-Length: 2118\r\n | |
|
633 | 697 | s> \r\n |
|
634 |
s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xa |
|
|
698 | s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKsnirequired\xf5Duris\x81Thttps://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash | |
|
635 | 699 | (redirect target target-bad-tls requires SNI, which is unsupported) |
|
636 | 700 | sending capabilities command |
|
637 | 701 | s> POST /api/exp-http-v2-0003/ro/capabilities HTTP/1.1\r\n |
@@ -660,11 +724,11 b' Missing SNI support filters targets that' | |||
|
660 | 724 | s> \xa1FstatusBok |
|
661 | 725 | s> \r\n |
|
662 | 726 | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) |
|
663 |
s> |
|
|
664 |
s> |
|
|
665 |
s> \xa5Hcommands\xa |
|
|
727 | s> 644\r\n | |
|
728 | s> <\x06\x00\x01\x00\x02\x041 | |
|
729 | s> \xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKsnirequired\xf5Duris\x81Thttps://example.com/ | |
|
666 | 730 | s> \r\n |
|
667 |
received frame(size=1 |
|
|
731 | received frame(size=1596; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | |
|
668 | 732 | s> 8\r\n |
|
669 | 733 | s> \x00\x00\x00\x01\x00\x02\x002 |
|
670 | 734 | s> \r\n |
@@ -737,6 +801,38 b' Missing SNI support filters targets that' | |||
|
737 | 801 | b'pull' |
|
738 | 802 | ] |
|
739 | 803 | }, |
|
804 | b'filesdata': { | |
|
805 | b'args': { | |
|
806 | b'fields': { | |
|
807 | b'default': set([]), | |
|
808 | b'required': False, | |
|
809 | b'type': b'set', | |
|
810 | b'validvalues': set([ | |
|
811 | b'firstchangeset', | |
|
812 | b'parents', | |
|
813 | b'revision' | |
|
814 | ]) | |
|
815 | }, | |
|
816 | b'haveparents': { | |
|
817 | b'default': False, | |
|
818 | b'required': False, | |
|
819 | b'type': b'bool' | |
|
820 | }, | |
|
821 | b'pathfilter': { | |
|
822 | b'default': None, | |
|
823 | b'required': False, | |
|
824 | b'type': b'dict' | |
|
825 | }, | |
|
826 | b'revisions': { | |
|
827 | b'required': True, | |
|
828 | b'type': b'list' | |
|
829 | } | |
|
830 | }, | |
|
831 | b'permissions': [ | |
|
832 | b'pull' | |
|
833 | ], | |
|
834 | b'recommendedbatchsize': 50000 | |
|
835 | }, | |
|
740 | 836 | b'heads': { |
|
741 | 837 | b'args': { |
|
742 | 838 | b'publiconly': { |
@@ -904,9 +1000,9 b' Unknown tls value is filtered from compa' | |||
|
904 | 1000 | s> Server: testing stub value\r\n |
|
905 | 1001 | s> Date: $HTTP_DATE$\r\n |
|
906 | 1002 | s> Content-Type: application/mercurial-cbor\r\n |
|
907 |
s> Content-Length: |
|
|
1003 | s> Content-Length: 2124\r\n | |
|
908 | 1004 | s> \r\n |
|
909 |
s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xa |
|
|
1005 | s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0003\xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKtlsversions\x82B42B39Duris\x81Thttps://example.com/Nv1capabilitiesY\x01\xd3batch branchmap $USUAL_BUNDLE2_CAPS$ changegroupsubset compression=$BUNDLE2_COMPRESSIONS$ getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash | |
|
910 | 1006 | (remote redirect target target-bad-tls requires unsupported TLS versions: 39, 42) |
|
911 | 1007 | sending capabilities command |
|
912 | 1008 | s> POST /api/exp-http-v2-0003/ro/capabilities HTTP/1.1\r\n |
@@ -935,11 +1031,11 b' Unknown tls value is filtered from compa' | |||
|
935 | 1031 | s> \xa1FstatusBok |
|
936 | 1032 | s> \r\n |
|
937 | 1033 | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) |
|
938 |
s> |
|
|
939 |
s> |
|
|
940 |
s> \xa5Hcommands\xa |
|
|
1034 | s> 64a\r\n | |
|
1035 | s> B\x06\x00\x01\x00\x02\x041 | |
|
1036 | s> \xa5Hcommands\xabIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa2Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullIfilesdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x83NfirstchangesetGparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolJpathfilter\xa3Gdefault\xf6Hrequired\xf4DtypeDdictIrevisions\xa2Hrequired\xf5DtypeDlistKpermissions\x81DpullTrecommendedbatchsize\x19\xc3PEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa3Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullTrecommendedbatchsize\x1a\x00\x01\x86\xa0Gpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushQframingmediatypes\x81X&application/mercurial-exp-framing-0006Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa4DnameNtarget-bad-tlsHprotocolEhttpsKtlsversions\x82B42B39Duris\x81Thttps://example.com/ | |
|
941 | 1037 | s> \r\n |
|
942 |
received frame(size=1 |
|
|
1038 | received frame(size=1602; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | |
|
943 | 1039 | s> 8\r\n |
|
944 | 1040 | s> \x00\x00\x00\x01\x00\x02\x002 |
|
945 | 1041 | s> \r\n |
@@ -1012,6 +1108,38 b' Unknown tls value is filtered from compa' | |||
|
1012 | 1108 | b'pull' |
|
1013 | 1109 | ] |
|
1014 | 1110 | }, |
|
1111 | b'filesdata': { | |
|
1112 | b'args': { | |
|
1113 | b'fields': { | |
|
1114 | b'default': set([]), | |
|
1115 | b'required': False, | |
|
1116 | b'type': b'set', | |
|
1117 | b'validvalues': set([ | |
|
1118 | b'firstchangeset', | |
|
1119 | b'parents', | |
|
1120 | b'revision' | |
|
1121 | ]) | |
|
1122 | }, | |
|
1123 | b'haveparents': { | |
|
1124 | b'default': False, | |
|
1125 | b'required': False, | |
|
1126 | b'type': b'bool' | |
|
1127 | }, | |
|
1128 | b'pathfilter': { | |
|
1129 | b'default': None, | |
|
1130 | b'required': False, | |
|
1131 | b'type': b'dict' | |
|
1132 | }, | |
|
1133 | b'revisions': { | |
|
1134 | b'required': True, | |
|
1135 | b'type': b'list' | |
|
1136 | } | |
|
1137 | }, | |
|
1138 | b'permissions': [ | |
|
1139 | b'pull' | |
|
1140 | ], | |
|
1141 | b'recommendedbatchsize': 50000 | |
|
1142 | }, | |
|
1015 | 1143 | b'heads': { |
|
1016 | 1144 | b'args': { |
|
1017 | 1145 | b'publiconly': { |
General Comments 0
You need to be logged in to leave comments.
Login now