|
1 $ . $TESTDIR/wireprotohelpers.sh |
|
2 |
|
3 $ hg init server |
|
4 $ enablehttpv2 server |
|
5 $ cd server |
|
6 $ cat >> .hg/hgrc << EOF |
|
7 > [extensions] |
|
8 > simplecache = $TESTDIR/wireprotosimplecache.py |
|
9 > EOF |
|
10 |
|
11 $ echo a0 > a |
|
12 $ echo b0 > b |
|
13 $ hg -q commit -A -m 'commit 0' |
|
14 $ echo a1 > a |
|
15 $ hg commit -m 'commit 1' |
|
16 |
|
17 $ hg --debug debugindex -m |
|
18 rev linkrev nodeid p1 p2 |
|
19 0 0 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 |
|
20 1 1 a988fb43583e871d1ed5750ee074c6d840bbbfc8 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000 |
|
21 |
|
22 $ hg --config simplecache.redirectsfile=redirects.py serve -p $HGPORT -d --pid-file hg.pid -E error.log |
|
23 $ cat hg.pid > $DAEMON_PIDS |
|
24 |
|
25 $ cat > redirects.py << EOF |
|
26 > [ |
|
27 > { |
|
28 > b'name': b'target-a', |
|
29 > b'protocol': b'http', |
|
30 > b'snirequired': False, |
|
31 > b'tlsversions': [b'1.2', b'1.3'], |
|
32 > b'uris': [b'http://example.com/'], |
|
33 > }, |
|
34 > ] |
|
35 > EOF |
|
36 |
|
37 Redirect targets advertised when configured |
|
38 |
|
39 $ sendhttpv2peerhandshake << EOF |
|
40 > command capabilities |
|
41 > EOF |
|
42 creating http peer for wire protocol version 2 |
|
43 s> GET /?cmd=capabilities HTTP/1.1\r\n |
|
44 s> Accept-Encoding: identity\r\n |
|
45 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n |
|
46 s> x-hgproto-1: cbor\r\n |
|
47 s> x-hgupgrade-1: exp-http-v2-0002\r\n |
|
48 s> accept: application/mercurial-0.1\r\n |
|
49 s> host: $LOCALIP:$HGPORT\r\n (glob) |
|
50 s> user-agent: Mercurial debugwireproto\r\n |
|
51 s> \r\n |
|
52 s> makefile('rb', None) |
|
53 s> HTTP/1.1 200 OK\r\n |
|
54 s> Server: testing stub value\r\n |
|
55 s> Date: $HTTP_DATE$\r\n |
|
56 s> Content-Type: application/mercurial-cbor\r\n |
|
57 s> Content-Length: 1970\r\n |
|
58 s> \r\n |
|
59 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa6Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushKcompression\x82\xa1DnameDzstd\xa1DnameDzlibQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/Nv1capabilitiesY\x01\xd8batch 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 |
|
60 sending capabilities command |
|
61 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n |
|
62 s> Accept-Encoding: identity\r\n |
|
63 s> accept: application/mercurial-exp-framing-0005\r\n |
|
64 s> content-type: application/mercurial-exp-framing-0005\r\n |
|
65 s> content-length: 27\r\n |
|
66 s> host: $LOCALIP:$HGPORT\r\n (glob) |
|
67 s> user-agent: Mercurial debugwireproto\r\n |
|
68 s> \r\n |
|
69 s> \x13\x00\x00\x01\x00\x01\x01\x11\xa1DnameLcapabilities |
|
70 s> makefile('rb', None) |
|
71 s> HTTP/1.1 200 OK\r\n |
|
72 s> Server: testing stub value\r\n |
|
73 s> Date: $HTTP_DATE$\r\n |
|
74 s> Content-Type: application/mercurial-exp-framing-0005\r\n |
|
75 s> Transfer-Encoding: chunked\r\n |
|
76 s> \r\n |
|
77 s> 13\r\n |
|
78 s> \x0b\x00\x00\x01\x00\x02\x011 |
|
79 s> \xa1FstatusBok |
|
80 s> \r\n |
|
81 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) |
|
82 s> 5ab\r\n |
|
83 s> \xa3\x05\x00\x01\x00\x02\x001 |
|
84 s> \xa6Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushKcompression\x82\xa1DnameDzstd\xa1DnameDzlibQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x81\xa5DnameHtarget-aHprotocolDhttpKsnirequired\xf4Ktlsversions\x82C1.2C1.3Duris\x81Shttp://example.com/ |
|
85 s> \r\n |
|
86 received frame(size=1443; request=1; stream=2; streamflags=; type=command-response; flags=continuation) |
|
87 s> 8\r\n |
|
88 s> \x00\x00\x00\x01\x00\x02\x002 |
|
89 s> \r\n |
|
90 s> 0\r\n |
|
91 s> \r\n |
|
92 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) |
|
93 response: gen[ |
|
94 { |
|
95 b'commands': { |
|
96 b'branchmap': { |
|
97 b'args': {}, |
|
98 b'permissions': [ |
|
99 b'pull' |
|
100 ] |
|
101 }, |
|
102 b'capabilities': { |
|
103 b'args': {}, |
|
104 b'permissions': [ |
|
105 b'pull' |
|
106 ] |
|
107 }, |
|
108 b'changesetdata': { |
|
109 b'args': { |
|
110 b'fields': { |
|
111 b'default': set([]), |
|
112 b'required': False, |
|
113 b'type': b'set', |
|
114 b'validvalues': set([ |
|
115 b'bookmarks', |
|
116 b'parents', |
|
117 b'phase', |
|
118 b'revision' |
|
119 ]) |
|
120 }, |
|
121 b'noderange': { |
|
122 b'default': None, |
|
123 b'required': False, |
|
124 b'type': b'list' |
|
125 }, |
|
126 b'nodes': { |
|
127 b'default': None, |
|
128 b'required': False, |
|
129 b'type': b'list' |
|
130 }, |
|
131 b'nodesdepth': { |
|
132 b'default': None, |
|
133 b'required': False, |
|
134 b'type': b'int' |
|
135 } |
|
136 }, |
|
137 b'permissions': [ |
|
138 b'pull' |
|
139 ] |
|
140 }, |
|
141 b'filedata': { |
|
142 b'args': { |
|
143 b'fields': { |
|
144 b'default': set([]), |
|
145 b'required': False, |
|
146 b'type': b'set', |
|
147 b'validvalues': set([ |
|
148 b'parents', |
|
149 b'revision' |
|
150 ]) |
|
151 }, |
|
152 b'haveparents': { |
|
153 b'default': False, |
|
154 b'required': False, |
|
155 b'type': b'bool' |
|
156 }, |
|
157 b'nodes': { |
|
158 b'required': True, |
|
159 b'type': b'list' |
|
160 }, |
|
161 b'path': { |
|
162 b'required': True, |
|
163 b'type': b'bytes' |
|
164 } |
|
165 }, |
|
166 b'permissions': [ |
|
167 b'pull' |
|
168 ] |
|
169 }, |
|
170 b'heads': { |
|
171 b'args': { |
|
172 b'publiconly': { |
|
173 b'default': False, |
|
174 b'required': False, |
|
175 b'type': b'bool' |
|
176 } |
|
177 }, |
|
178 b'permissions': [ |
|
179 b'pull' |
|
180 ] |
|
181 }, |
|
182 b'known': { |
|
183 b'args': { |
|
184 b'nodes': { |
|
185 b'default': [], |
|
186 b'required': False, |
|
187 b'type': b'list' |
|
188 } |
|
189 }, |
|
190 b'permissions': [ |
|
191 b'pull' |
|
192 ] |
|
193 }, |
|
194 b'listkeys': { |
|
195 b'args': { |
|
196 b'namespace': { |
|
197 b'required': True, |
|
198 b'type': b'bytes' |
|
199 } |
|
200 }, |
|
201 b'permissions': [ |
|
202 b'pull' |
|
203 ] |
|
204 }, |
|
205 b'lookup': { |
|
206 b'args': { |
|
207 b'key': { |
|
208 b'required': True, |
|
209 b'type': b'bytes' |
|
210 } |
|
211 }, |
|
212 b'permissions': [ |
|
213 b'pull' |
|
214 ] |
|
215 }, |
|
216 b'manifestdata': { |
|
217 b'args': { |
|
218 b'fields': { |
|
219 b'default': set([]), |
|
220 b'required': False, |
|
221 b'type': b'set', |
|
222 b'validvalues': set([ |
|
223 b'parents', |
|
224 b'revision' |
|
225 ]) |
|
226 }, |
|
227 b'haveparents': { |
|
228 b'default': False, |
|
229 b'required': False, |
|
230 b'type': b'bool' |
|
231 }, |
|
232 b'nodes': { |
|
233 b'required': True, |
|
234 b'type': b'list' |
|
235 }, |
|
236 b'tree': { |
|
237 b'required': True, |
|
238 b'type': b'bytes' |
|
239 } |
|
240 }, |
|
241 b'permissions': [ |
|
242 b'pull' |
|
243 ] |
|
244 }, |
|
245 b'pushkey': { |
|
246 b'args': { |
|
247 b'key': { |
|
248 b'required': True, |
|
249 b'type': b'bytes' |
|
250 }, |
|
251 b'namespace': { |
|
252 b'required': True, |
|
253 b'type': b'bytes' |
|
254 }, |
|
255 b'new': { |
|
256 b'required': True, |
|
257 b'type': b'bytes' |
|
258 }, |
|
259 b'old': { |
|
260 b'required': True, |
|
261 b'type': b'bytes' |
|
262 } |
|
263 }, |
|
264 b'permissions': [ |
|
265 b'push' |
|
266 ] |
|
267 } |
|
268 }, |
|
269 b'compression': [ |
|
270 { |
|
271 b'name': b'zstd' |
|
272 }, |
|
273 { |
|
274 b'name': b'zlib' |
|
275 } |
|
276 ], |
|
277 b'framingmediatypes': [ |
|
278 b'application/mercurial-exp-framing-0005' |
|
279 ], |
|
280 b'pathfilterprefixes': set([ |
|
281 b'path:', |
|
282 b'rootfilesin:' |
|
283 ]), |
|
284 b'rawrepoformats': [ |
|
285 b'generaldelta', |
|
286 b'revlogv1' |
|
287 ], |
|
288 b'redirect': { |
|
289 b'hashes': [ |
|
290 b'sha256', |
|
291 b'sha1' |
|
292 ], |
|
293 b'targets': [ |
|
294 { |
|
295 b'name': b'target-a', |
|
296 b'protocol': b'http', |
|
297 b'snirequired': False, |
|
298 b'tlsversions': [ |
|
299 b'1.2', |
|
300 b'1.3' |
|
301 ], |
|
302 b'uris': [ |
|
303 b'http://example.com/' |
|
304 ] |
|
305 } |
|
306 ] |
|
307 } |
|
308 } |
|
309 ] |
|
310 |
|
311 $ cat > redirects.py << EOF |
|
312 > [ |
|
313 > { |
|
314 > b'name': b'target-a', |
|
315 > b'protocol': b'http', |
|
316 > b'uris': [b'http://example.com/'], |
|
317 > }, |
|
318 > { |
|
319 > b'name': b'target-b', |
|
320 > b'protocol': b'unknown', |
|
321 > b'uris': [b'unknown://example.com/'], |
|
322 > }, |
|
323 > ] |
|
324 > EOF |
|
325 |
|
326 $ sendhttpv2peerhandshake << EOF |
|
327 > command capabilities |
|
328 > EOF |
|
329 creating http peer for wire protocol version 2 |
|
330 s> GET /?cmd=capabilities HTTP/1.1\r\n |
|
331 s> Accept-Encoding: identity\r\n |
|
332 s> vary: X-HgProto-1,X-HgUpgrade-1\r\n |
|
333 s> x-hgproto-1: cbor\r\n |
|
334 s> x-hgupgrade-1: exp-http-v2-0002\r\n |
|
335 s> accept: application/mercurial-0.1\r\n |
|
336 s> host: $LOCALIP:$HGPORT\r\n (glob) |
|
337 s> user-agent: Mercurial debugwireproto\r\n |
|
338 s> \r\n |
|
339 s> makefile('rb', None) |
|
340 s> HTTP/1.1 200 OK\r\n |
|
341 s> Server: testing stub value\r\n |
|
342 s> Date: $HTTP_DATE$\r\n |
|
343 s> Content-Type: application/mercurial-cbor\r\n |
|
344 s> Content-Length: 1997\r\n |
|
345 s> \r\n |
|
346 s> \xa3GapibaseDapi/Dapis\xa1Pexp-http-v2-0002\xa6Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushKcompression\x82\xa1DnameDzstd\xa1DnameDzlibQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/Nv1capabilitiesY\x01\xd8batch 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 |
|
347 sending capabilities command |
|
348 s> POST /api/exp-http-v2-0002/ro/capabilities HTTP/1.1\r\n |
|
349 s> Accept-Encoding: identity\r\n |
|
350 s> accept: application/mercurial-exp-framing-0005\r\n |
|
351 s> content-type: application/mercurial-exp-framing-0005\r\n |
|
352 s> content-length: 27\r\n |
|
353 s> host: $LOCALIP:$HGPORT\r\n (glob) |
|
354 s> user-agent: Mercurial debugwireproto\r\n |
|
355 s> \r\n |
|
356 s> \x13\x00\x00\x01\x00\x01\x01\x11\xa1DnameLcapabilities |
|
357 s> makefile('rb', None) |
|
358 s> HTTP/1.1 200 OK\r\n |
|
359 s> Server: testing stub value\r\n |
|
360 s> Date: $HTTP_DATE$\r\n |
|
361 s> Content-Type: application/mercurial-exp-framing-0005\r\n |
|
362 s> Transfer-Encoding: chunked\r\n |
|
363 s> \r\n |
|
364 s> 13\r\n |
|
365 s> \x0b\x00\x00\x01\x00\x02\x011 |
|
366 s> \xa1FstatusBok |
|
367 s> \r\n |
|
368 received frame(size=11; request=1; stream=2; streamflags=stream-begin; type=command-response; flags=continuation) |
|
369 s> 5c6\r\n |
|
370 s> \xbe\x05\x00\x01\x00\x02\x001 |
|
371 s> \xa6Hcommands\xaaIbranchmap\xa2Dargs\xa0Kpermissions\x81DpullLcapabilities\xa2Dargs\xa0Kpermissions\x81DpullMchangesetdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x84IbookmarksGparentsEphaseHrevisionInoderange\xa3Gdefault\xf6Hrequired\xf4DtypeDlistEnodes\xa3Gdefault\xf6Hrequired\xf4DtypeDlistJnodesdepth\xa3Gdefault\xf6Hrequired\xf4DtypeCintKpermissions\x81DpullHfiledata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDpath\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullEheads\xa2Dargs\xa1Jpubliconly\xa3Gdefault\xf4Hrequired\xf4DtypeDboolKpermissions\x81DpullEknown\xa2Dargs\xa1Enodes\xa3Gdefault\x80Hrequired\xf4DtypeDlistKpermissions\x81DpullHlistkeys\xa2Dargs\xa1Inamespace\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullFlookup\xa2Dargs\xa1Ckey\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullLmanifestdata\xa2Dargs\xa4Ffields\xa4Gdefault\xd9\x01\x02\x80Hrequired\xf4DtypeCsetKvalidvalues\xd9\x01\x02\x82GparentsHrevisionKhaveparents\xa3Gdefault\xf4Hrequired\xf4DtypeDboolEnodes\xa2Hrequired\xf5DtypeDlistDtree\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpullGpushkey\xa2Dargs\xa4Ckey\xa2Hrequired\xf5DtypeEbytesInamespace\xa2Hrequired\xf5DtypeEbytesCnew\xa2Hrequired\xf5DtypeEbytesCold\xa2Hrequired\xf5DtypeEbytesKpermissions\x81DpushKcompression\x82\xa1DnameDzstd\xa1DnameDzlibQframingmediatypes\x81X&application/mercurial-exp-framing-0005Rpathfilterprefixes\xd9\x01\x02\x82Epath:Lrootfilesin:Nrawrepoformats\x82LgeneraldeltaHrevlogv1Hredirect\xa2Fhashes\x82Fsha256Dsha1Gtargets\x82\xa3DnameHtarget-aHprotocolDhttpDuris\x81Shttp://example.com/\xa3DnameHtarget-bHprotocolGunknownDuris\x81Vunknown://example.com/ |
|
372 s> \r\n |
|
373 received frame(size=1470; request=1; stream=2; streamflags=; type=command-response; flags=continuation) |
|
374 s> 8\r\n |
|
375 s> \x00\x00\x00\x01\x00\x02\x002 |
|
376 s> \r\n |
|
377 s> 0\r\n |
|
378 s> \r\n |
|
379 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) |
|
380 response: gen[ |
|
381 { |
|
382 b'commands': { |
|
383 b'branchmap': { |
|
384 b'args': {}, |
|
385 b'permissions': [ |
|
386 b'pull' |
|
387 ] |
|
388 }, |
|
389 b'capabilities': { |
|
390 b'args': {}, |
|
391 b'permissions': [ |
|
392 b'pull' |
|
393 ] |
|
394 }, |
|
395 b'changesetdata': { |
|
396 b'args': { |
|
397 b'fields': { |
|
398 b'default': set([]), |
|
399 b'required': False, |
|
400 b'type': b'set', |
|
401 b'validvalues': set([ |
|
402 b'bookmarks', |
|
403 b'parents', |
|
404 b'phase', |
|
405 b'revision' |
|
406 ]) |
|
407 }, |
|
408 b'noderange': { |
|
409 b'default': None, |
|
410 b'required': False, |
|
411 b'type': b'list' |
|
412 }, |
|
413 b'nodes': { |
|
414 b'default': None, |
|
415 b'required': False, |
|
416 b'type': b'list' |
|
417 }, |
|
418 b'nodesdepth': { |
|
419 b'default': None, |
|
420 b'required': False, |
|
421 b'type': b'int' |
|
422 } |
|
423 }, |
|
424 b'permissions': [ |
|
425 b'pull' |
|
426 ] |
|
427 }, |
|
428 b'filedata': { |
|
429 b'args': { |
|
430 b'fields': { |
|
431 b'default': set([]), |
|
432 b'required': False, |
|
433 b'type': b'set', |
|
434 b'validvalues': set([ |
|
435 b'parents', |
|
436 b'revision' |
|
437 ]) |
|
438 }, |
|
439 b'haveparents': { |
|
440 b'default': False, |
|
441 b'required': False, |
|
442 b'type': b'bool' |
|
443 }, |
|
444 b'nodes': { |
|
445 b'required': True, |
|
446 b'type': b'list' |
|
447 }, |
|
448 b'path': { |
|
449 b'required': True, |
|
450 b'type': b'bytes' |
|
451 } |
|
452 }, |
|
453 b'permissions': [ |
|
454 b'pull' |
|
455 ] |
|
456 }, |
|
457 b'heads': { |
|
458 b'args': { |
|
459 b'publiconly': { |
|
460 b'default': False, |
|
461 b'required': False, |
|
462 b'type': b'bool' |
|
463 } |
|
464 }, |
|
465 b'permissions': [ |
|
466 b'pull' |
|
467 ] |
|
468 }, |
|
469 b'known': { |
|
470 b'args': { |
|
471 b'nodes': { |
|
472 b'default': [], |
|
473 b'required': False, |
|
474 b'type': b'list' |
|
475 } |
|
476 }, |
|
477 b'permissions': [ |
|
478 b'pull' |
|
479 ] |
|
480 }, |
|
481 b'listkeys': { |
|
482 b'args': { |
|
483 b'namespace': { |
|
484 b'required': True, |
|
485 b'type': b'bytes' |
|
486 } |
|
487 }, |
|
488 b'permissions': [ |
|
489 b'pull' |
|
490 ] |
|
491 }, |
|
492 b'lookup': { |
|
493 b'args': { |
|
494 b'key': { |
|
495 b'required': True, |
|
496 b'type': b'bytes' |
|
497 } |
|
498 }, |
|
499 b'permissions': [ |
|
500 b'pull' |
|
501 ] |
|
502 }, |
|
503 b'manifestdata': { |
|
504 b'args': { |
|
505 b'fields': { |
|
506 b'default': set([]), |
|
507 b'required': False, |
|
508 b'type': b'set', |
|
509 b'validvalues': set([ |
|
510 b'parents', |
|
511 b'revision' |
|
512 ]) |
|
513 }, |
|
514 b'haveparents': { |
|
515 b'default': False, |
|
516 b'required': False, |
|
517 b'type': b'bool' |
|
518 }, |
|
519 b'nodes': { |
|
520 b'required': True, |
|
521 b'type': b'list' |
|
522 }, |
|
523 b'tree': { |
|
524 b'required': True, |
|
525 b'type': b'bytes' |
|
526 } |
|
527 }, |
|
528 b'permissions': [ |
|
529 b'pull' |
|
530 ] |
|
531 }, |
|
532 b'pushkey': { |
|
533 b'args': { |
|
534 b'key': { |
|
535 b'required': True, |
|
536 b'type': b'bytes' |
|
537 }, |
|
538 b'namespace': { |
|
539 b'required': True, |
|
540 b'type': b'bytes' |
|
541 }, |
|
542 b'new': { |
|
543 b'required': True, |
|
544 b'type': b'bytes' |
|
545 }, |
|
546 b'old': { |
|
547 b'required': True, |
|
548 b'type': b'bytes' |
|
549 } |
|
550 }, |
|
551 b'permissions': [ |
|
552 b'push' |
|
553 ] |
|
554 } |
|
555 }, |
|
556 b'compression': [ |
|
557 { |
|
558 b'name': b'zstd' |
|
559 }, |
|
560 { |
|
561 b'name': b'zlib' |
|
562 } |
|
563 ], |
|
564 b'framingmediatypes': [ |
|
565 b'application/mercurial-exp-framing-0005' |
|
566 ], |
|
567 b'pathfilterprefixes': set([ |
|
568 b'path:', |
|
569 b'rootfilesin:' |
|
570 ]), |
|
571 b'rawrepoformats': [ |
|
572 b'generaldelta', |
|
573 b'revlogv1' |
|
574 ], |
|
575 b'redirect': { |
|
576 b'hashes': [ |
|
577 b'sha256', |
|
578 b'sha1' |
|
579 ], |
|
580 b'targets': [ |
|
581 { |
|
582 b'name': b'target-a', |
|
583 b'protocol': b'http', |
|
584 b'uris': [ |
|
585 b'http://example.com/' |
|
586 ] |
|
587 }, |
|
588 { |
|
589 b'name': b'target-b', |
|
590 b'protocol': b'unknown', |
|
591 b'uris': [ |
|
592 b'unknown://example.com/' |
|
593 ] |
|
594 } |
|
595 ] |
|
596 } |
|
597 } |
|
598 ] |
|
599 |
|
600 $ cat error.log |
|
601 $ killdaemons.py |