Mercurial > hg
comparison tests/test-wireproto-command-changesetdata.t @ 40176:41263df08109
wireprotov2: change how revisions are specified to changesetdata
Right now, we have a handful of arguments for specifying the revisions
whose data should be returned. Defining how all these arguments
interact when various combinations are present is difficult.
This commit establishes a new, generic mechanism for specifying
revisions. Instead of a hodgepodge of arguments defining things, we
have a list of dicts that specify revision selectors. The final set
of revisions is a union of all these selectors.
We implement support for specifying revisions based on:
* An explicit list of changeset revisions
* An explicit list of changeset revisions plus ancestry depth
* A DAG range between changeset roots and heads
If you squint hard enough, this problem has already been solved by
revsets. But I'm reluctant to expose revsets to the wire protocol
because that would require servers to implement a revset parser.
Plus there are security and performance implications: the set
of revision selectors needs to be narrowly and specifically tailored
for what is appropriate to be executing on a server. Perhaps there
would be a way for us to express the "parse tree" of a revset
query, for example. I'm not sure. We can explore this space another
time. For now, the new mechanism should bring sufficient flexibility
while remaining relatively simple.
The selector "types" are prefixed with "changeset" because I plan
to add manifest and file-flavored selectors as well. This will enable
us to e.g. select file revisions based on a range of changeset
revisions.
Differential Revision: https://phab.mercurial-scm.org/D4979
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 08 Oct 2018 18:17:12 -0700 |
parents | 6c42409691ec |
children | 95c4cca641f6 |
comparison
equal
deleted
inserted
replaced
40175:6c42409691ec | 40176:41263df08109 |
---|---|
42 $ sendhttpv2peer << EOF | 42 $ sendhttpv2peer << EOF |
43 > command changesetdata | 43 > command changesetdata |
44 > EOF | 44 > EOF |
45 creating http peer for wire protocol version 2 | 45 creating http peer for wire protocol version 2 |
46 sending changesetdata command | 46 sending changesetdata command |
47 abort: noderange or nodes must be defined! | 47 abort: missing required arguments: revisions! |
48 [255] | 48 [255] |
49 | 49 |
50 Empty noderange heads results in an error | 50 Missing nodes for changesetexplicit results in error |
51 | 51 |
52 $ sendhttpv2peer << EOF | 52 $ sendhttpv2peer << EOF |
53 > command changesetdata | 53 > command changesetdata |
54 > noderange eval:[[],[]] | 54 > revisions eval:[{b'type': b'changesetexplicit'}] |
55 > EOF | 55 > EOF |
56 creating http peer for wire protocol version 2 | 56 creating http peer for wire protocol version 2 |
57 sending changesetdata command | 57 sending changesetdata command |
58 abort: heads in noderange request cannot be empty! | 58 abort: nodes key not present in changesetexplicit revision specifier! |
59 [255] | 59 [255] |
60 | 60 |
61 nodesdepth requires nodes argument | 61 changesetexplicitdepth requires nodes and depth keys |
62 | 62 |
63 $ sendhttpv2peer << EOF | 63 $ sendhttpv2peer << EOF |
64 > command changesetdata | 64 > command changesetdata |
65 > nodesdepth 42 | 65 > revisions eval:[{b'type': b'changesetexplicitdepth'}] |
66 > noderange eval:[[], [b'ignored']] | 66 > EOF |
67 > EOF | 67 creating http peer for wire protocol version 2 |
68 creating http peer for wire protocol version 2 | 68 sending changesetdata command |
69 sending changesetdata command | 69 abort: nodes key not present in changesetexplicitdepth revision specifier! |
70 abort: nodesdepth requires the nodes argument! | 70 [255] |
71 [255] | 71 |
72 | 72 $ sendhttpv2peer << EOF |
73 Sending just noderange heads sends all revisions | 73 > command changesetdata |
74 | 74 > revisions eval:[{b'type': b'changesetexplicitdepth', b'nodes': []}] |
75 $ sendhttpv2peer << EOF | 75 > EOF |
76 > command changesetdata | 76 creating http peer for wire protocol version 2 |
77 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 77 sending changesetdata command |
78 abort: depth key not present in changesetexplicitdepth revision specifier! | |
79 [255] | |
80 | |
81 $ sendhttpv2peer << EOF | |
82 > command changesetdata | |
83 > revisions eval:[{b'type': b'changesetexplicitdepth', b'depth': 42}] | |
84 > EOF | |
85 creating http peer for wire protocol version 2 | |
86 sending changesetdata command | |
87 abort: nodes key not present in changesetexplicitdepth revision specifier! | |
88 [255] | |
89 | |
90 changesetdagrange requires roots and heads keys | |
91 | |
92 $ sendhttpv2peer << EOF | |
93 > command changesetdata | |
94 > revisions eval:[{b'type': b'changesetdagrange'}] | |
95 > EOF | |
96 creating http peer for wire protocol version 2 | |
97 sending changesetdata command | |
98 abort: roots key not present in changesetdagrange revision specifier! | |
99 [255] | |
100 | |
101 $ sendhttpv2peer << EOF | |
102 > command changesetdata | |
103 > revisions eval:[{b'type': b'changesetdagrange', b'roots': []}] | |
104 > EOF | |
105 creating http peer for wire protocol version 2 | |
106 sending changesetdata command | |
107 abort: heads key not present in changesetdagrange revision specifier! | |
108 [255] | |
109 | |
110 $ sendhttpv2peer << EOF | |
111 > command changesetdata | |
112 > revisions eval:[{b'type': b'changesetdagrange', b'heads': [b'dummy']}] | |
113 > EOF | |
114 creating http peer for wire protocol version 2 | |
115 sending changesetdata command | |
116 abort: roots key not present in changesetdagrange revision specifier! | |
117 [255] | |
118 | |
119 Empty changesetdagrange heads results in an error | |
120 | |
121 $ sendhttpv2peer << EOF | |
122 > command changesetdata | |
123 > revisions eval:[{b'type': b'changesetdagrange', b'heads': [], b'roots': []}] | |
124 > EOF | |
125 creating http peer for wire protocol version 2 | |
126 sending changesetdata command | |
127 abort: heads key in changesetdagrange cannot be empty! | |
128 [255] | |
129 | |
130 Sending just dagrange heads sends all revisions | |
131 | |
132 $ sendhttpv2peer << EOF | |
133 > command changesetdata | |
134 > revisions eval:[{ | |
135 > b'type': b'changesetdagrange', | |
136 > b'roots': [], | |
137 > b'heads': [ | |
138 > b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', | |
139 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
140 > ]}] | |
78 > EOF | 141 > EOF |
79 creating http peer for wire protocol version 2 | 142 creating http peer for wire protocol version 2 |
80 sending changesetdata command | 143 sending changesetdata command |
81 response: gen[ | 144 response: gen[ |
82 { | 145 { |
98 | 161 |
99 Sending root nodes limits what data is sent | 162 Sending root nodes limits what data is sent |
100 | 163 |
101 $ sendhttpv2peer << EOF | 164 $ sendhttpv2peer << EOF |
102 > command changesetdata | 165 > command changesetdata |
103 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] | 166 > revisions eval:[{ |
167 > b'type': b'changesetdagrange', | |
168 > b'roots': [b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], | |
169 > b'heads': [ | |
170 > b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', | |
171 > ]}] | |
104 > EOF | 172 > EOF |
105 creating http peer for wire protocol version 2 | 173 creating http peer for wire protocol version 2 |
106 sending changesetdata command | 174 sending changesetdata command |
107 response: gen[ | 175 response: gen[ |
108 { | 176 { |
118 | 186 |
119 Requesting data on a single node by node works | 187 Requesting data on a single node by node works |
120 | 188 |
121 $ sendhttpv2peer << EOF | 189 $ sendhttpv2peer << EOF |
122 > command changesetdata | 190 > command changesetdata |
123 > nodes eval:[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'] | 191 > revisions eval:[{ |
192 > b'type': b'changesetexplicit', | |
193 > b'nodes': [b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a']}] | |
124 > EOF | 194 > EOF |
125 creating http peer for wire protocol version 2 | 195 creating http peer for wire protocol version 2 |
126 sending changesetdata command | 196 sending changesetdata command |
127 response: gen[ | 197 response: gen[ |
128 { | 198 { |
135 | 205 |
136 Specifying a noderange and nodes takes union | 206 Specifying a noderange and nodes takes union |
137 | 207 |
138 $ sendhttpv2peer << EOF | 208 $ sendhttpv2peer << EOF |
139 > command changesetdata | 209 > command changesetdata |
140 > noderange eval:[[b'\x75\x92\x91\x7e\x1c\x3e\x82\x67\x7c\xb0\xa4\xbc\x71\x5c\xa2\x5d\xd1\x2d\x28\xc1'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd']] | 210 > revisions eval:[ |
141 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 211 > { |
212 > b'type': b'changesetexplicit', | |
213 > b'nodes': [b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], | |
214 > }, | |
215 > { | |
216 > b'type': b'changesetdagrange', | |
217 > b'roots': [b'\x75\x92\x91\x7e\x1c\x3e\x82\x67\x7c\xb0\xa4\xbc\x71\x5c\xa2\x5d\xd1\x2d\x28\xc1'], | |
218 > b'heads': [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd'], | |
219 > }] | |
142 > EOF | 220 > EOF |
143 creating http peer for wire protocol version 2 | 221 creating http peer for wire protocol version 2 |
144 sending changesetdata command | 222 sending changesetdata command |
145 response: gen[ | 223 response: gen[ |
146 { | 224 { |
156 | 234 |
157 nodesdepth of 1 limits to exactly requested nodes | 235 nodesdepth of 1 limits to exactly requested nodes |
158 | 236 |
159 $ sendhttpv2peer << EOF | 237 $ sendhttpv2peer << EOF |
160 > command changesetdata | 238 > command changesetdata |
161 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 239 > revisions eval:[{ |
162 > nodesdepth eval:1 | 240 > b'type': b'changesetexplicitdepth', |
241 > b'nodes': [b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], | |
242 > b'depth': 1}] | |
163 > EOF | 243 > EOF |
164 creating http peer for wire protocol version 2 | 244 creating http peer for wire protocol version 2 |
165 sending changesetdata command | 245 sending changesetdata command |
166 response: gen[ | 246 response: gen[ |
167 { | 247 { |
174 | 254 |
175 nodesdepth of 2 limits to first ancestor | 255 nodesdepth of 2 limits to first ancestor |
176 | 256 |
177 $ sendhttpv2peer << EOF | 257 $ sendhttpv2peer << EOF |
178 > command changesetdata | 258 > command changesetdata |
179 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 259 > revisions eval:[{ |
180 > nodesdepth eval:2 | 260 > b'type': b'changesetexplicitdepth', |
261 > b'nodes': [b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], | |
262 > b'depth': 2}] | |
181 > EOF | 263 > EOF |
182 creating http peer for wire protocol version 2 | 264 creating http peer for wire protocol version 2 |
183 sending changesetdata command | 265 sending changesetdata command |
184 response: gen[ | 266 response: gen[ |
185 { | 267 { |
195 | 277 |
196 nodesdepth with multiple nodes | 278 nodesdepth with multiple nodes |
197 | 279 |
198 $ sendhttpv2peer << EOF | 280 $ sendhttpv2peer << EOF |
199 > command changesetdata | 281 > command changesetdata |
200 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd'] | 282 > revisions eval:[{ |
201 > nodesdepth eval:2 | 283 > b'type': b'changesetexplicitdepth', |
284 > b'nodes': [b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd'], | |
285 > b'depth': 2}] | |
202 > EOF | 286 > EOF |
203 creating http peer for wire protocol version 2 | 287 creating http peer for wire protocol version 2 |
204 sending changesetdata command | 288 sending changesetdata command |
205 response: gen[ | 289 response: gen[ |
206 { | 290 { |
223 Parents data is transferred upon request | 307 Parents data is transferred upon request |
224 | 308 |
225 $ sendhttpv2peer << EOF | 309 $ sendhttpv2peer << EOF |
226 > command changesetdata | 310 > command changesetdata |
227 > fields eval:[b'parents'] | 311 > fields eval:[b'parents'] |
228 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 312 > revisions eval:[{ |
313 > b'type': b'changesetexplicit', | |
314 > b'nodes': [ | |
315 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
316 > ]}] | |
229 > EOF | 317 > EOF |
230 creating http peer for wire protocol version 2 | 318 creating http peer for wire protocol version 2 |
231 sending changesetdata command | 319 sending changesetdata command |
232 response: gen[ | 320 response: gen[ |
233 { | 321 { |
245 Phase data is transferred upon request | 333 Phase data is transferred upon request |
246 | 334 |
247 $ sendhttpv2peer << EOF | 335 $ sendhttpv2peer << EOF |
248 > command changesetdata | 336 > command changesetdata |
249 > fields eval:[b'phase'] | 337 > fields eval:[b'phase'] |
250 > nodes eval:[b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd'] | 338 > revisions eval:[{ |
339 > b'type': b'changesetexplicit', | |
340 > b'nodes': [ | |
341 > b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', | |
342 > ]}] | |
251 > EOF | 343 > EOF |
252 creating http peer for wire protocol version 2 | 344 creating http peer for wire protocol version 2 |
253 sending changesetdata command | 345 sending changesetdata command |
254 response: gen[ | 346 response: gen[ |
255 { | 347 { |
264 Revision data is transferred upon request | 356 Revision data is transferred upon request |
265 | 357 |
266 $ sendhttpv2peer << EOF | 358 $ sendhttpv2peer << EOF |
267 > command changesetdata | 359 > command changesetdata |
268 > fields eval:[b'revision'] | 360 > fields eval:[b'revision'] |
269 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 361 > revisions eval:[{ |
362 > b'type': b'changesetexplicit', | |
363 > b'nodes': [ | |
364 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
365 > ]}] | |
270 > EOF | 366 > EOF |
271 creating http peer for wire protocol version 2 | 367 creating http peer for wire protocol version 2 |
272 sending changesetdata command | 368 sending changesetdata command |
273 response: gen[ | 369 response: gen[ |
274 { | 370 { |
289 Bookmarks key isn't present if no bookmarks data | 385 Bookmarks key isn't present if no bookmarks data |
290 | 386 |
291 $ sendhttpv2peer << EOF | 387 $ sendhttpv2peer << EOF |
292 > command changesetdata | 388 > command changesetdata |
293 > fields eval:[b'bookmarks'] | 389 > fields eval:[b'bookmarks'] |
294 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 390 > revisions eval:[{ |
391 > b'type': b'changesetdagrange', | |
392 > b'roots': [], | |
393 > b'heads': [ | |
394 > b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', | |
395 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
396 > ]}] | |
295 > EOF | 397 > EOF |
296 creating http peer for wire protocol version 2 | 398 creating http peer for wire protocol version 2 |
297 sending changesetdata command | 399 sending changesetdata command |
298 response: gen[ | 400 response: gen[ |
299 { | 401 { |
320 $ hg -R ../server bookmark -r eae5f82c2e622368d27daecb76b7e393d0f24211 book-3 | 422 $ hg -R ../server bookmark -r eae5f82c2e622368d27daecb76b7e393d0f24211 book-3 |
321 | 423 |
322 $ sendhttpv2peer << EOF | 424 $ sendhttpv2peer << EOF |
323 > command changesetdata | 425 > command changesetdata |
324 > fields eval:[b'bookmarks'] | 426 > fields eval:[b'bookmarks'] |
325 > noderange eval:[[], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 427 > revisions eval:[{ |
428 > b'type': b'changesetdagrange', | |
429 > b'roots': [], | |
430 > b'heads': [ | |
431 > b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', | |
432 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
433 > ]}] | |
326 > EOF | 434 > EOF |
327 creating http peer for wire protocol version 2 | 435 creating http peer for wire protocol version 2 |
328 sending changesetdata command | 436 sending changesetdata command |
329 response: gen[ | 437 response: gen[ |
330 { | 438 { |
354 Bookmarks are sent when we make a no-new-revisions request | 462 Bookmarks are sent when we make a no-new-revisions request |
355 | 463 |
356 $ sendhttpv2peer << EOF | 464 $ sendhttpv2peer << EOF |
357 > command changesetdata | 465 > command changesetdata |
358 > fields eval:[b'bookmarks', b'revision'] | 466 > fields eval:[b'bookmarks', b'revision'] |
359 > noderange eval:[[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 467 > revisions eval:[{ |
468 > b'type': b'changesetdagrange', | |
469 > b'roots': [b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'], | |
470 > b'heads': [ | |
471 > b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', | |
472 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
473 > ]}] | |
360 > EOF | 474 > EOF |
361 creating http peer for wire protocol version 2 | 475 creating http peer for wire protocol version 2 |
362 sending changesetdata command | 476 sending changesetdata command |
363 response: gen[ | 477 response: gen[ |
364 { | 478 { |
399 Multiple fields can be transferred | 513 Multiple fields can be transferred |
400 | 514 |
401 $ sendhttpv2peer << EOF | 515 $ sendhttpv2peer << EOF |
402 > command changesetdata | 516 > command changesetdata |
403 > fields eval:[b'parents', b'revision'] | 517 > fields eval:[b'parents', b'revision'] |
404 > nodes eval:[b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11'] | 518 > revisions eval:[{ |
519 > b'type': b'changesetexplicit', | |
520 > b'nodes': [ | |
521 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
522 > ]}] | |
405 > EOF | 523 > EOF |
406 creating http peer for wire protocol version 2 | 524 creating http peer for wire protocol version 2 |
407 sending changesetdata command | 525 sending changesetdata command |
408 response: gen[ | 526 response: gen[ |
409 { | 527 { |
429 TODO this doesn't work | 547 TODO this doesn't work |
430 | 548 |
431 $ sendhttpv2peer << EOF | 549 $ sendhttpv2peer << EOF |
432 > command changesetdata | 550 > command changesetdata |
433 > fields eval:[b'phase', b'parents', b'revision'] | 551 > fields eval:[b'phase', b'parents', b'revision'] |
434 > noderange eval:[[b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], [b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11']] | 552 > revisions eval:[{ |
553 > b'type': b'changesetdagrange', | |
554 > b'roots': [b'\x33\x90\xef\x85\x00\x73\xfb\xc2\xf0\xdf\xff\x22\x44\x34\x2c\x8e\x92\x29\x01\x3a'], | |
555 > b'heads': [ | |
556 > b'\x0b\xb8\xad\x89\x4a\x15\xb1\x53\x80\xb2\xa2\xa5\xb1\x83\xe2\x0f\x2a\x4b\x28\xdd', | |
557 > b'\xea\xe5\xf8\x2c\x2e\x62\x23\x68\xd2\x7d\xae\xcb\x76\xb7\xe3\x93\xd0\xf2\x42\x11', | |
558 > ]}] | |
435 > EOF | 559 > EOF |
436 creating http peer for wire protocol version 2 | 560 creating http peer for wire protocol version 2 |
437 sending changesetdata command | 561 sending changesetdata command |
438 response: gen[ | 562 response: gen[ |
439 { | 563 { |