##// END OF EJS Templates
json: implement {fileannotate} template
Gregory Szorc -
r24715:1439bacf default
parent child Browse files
Show More
@@ -1,154 +1,174 b''
1 1 mimetype = 'application/json'
2 2 filerevision = '"not yet implemented"'
3 3 search = '"not yet implemented"'
4 4 # changelog and shortlog are the same web API but with different
5 5 # number of entries.
6 6 changelog = changelist.tmpl
7 7 shortlog = changelist.tmpl
8 8 changelistentry = '\{
9 9 "node": {node|json},
10 10 "date": {date|json},
11 11 "desc": {desc|json},
12 12 "bookmarks": [{join(bookmarks%changelistentryname, ", ")}],
13 13 "tags": [{join(tags%changelistentryname, ", ")}],
14 14 "user": {author|json}
15 15 }'
16 16 changelistentryname = '{name|json}'
17 17 changeset = '\{
18 18 "node": {node|json},
19 19 "date": {date|json},
20 20 "desc": {desc|json},
21 21 "branch": {if(branch, branch%changesetbranch, "default"|json)},
22 22 "bookmarks": [{join(changesetbookmark, ", ")}],
23 23 "tags": [{join(changesettag, ", ")}],
24 24 "user": {author|json},
25 25 "parents": [{join(parent%changesetparent, ", ")}],
26 26 "phase": {phase|json}
27 27 }'
28 28 changesetbranch = '{name|json}'
29 29 changesetbookmark = '{bookmark|json}'
30 30 changesettag = '{tag|json}'
31 31 changesetparent = '{node|json}'
32 32 manifest = '\{
33 33 "node": {node|json},
34 34 "abspath": {path|json},
35 35 "directories": [{join(dentries%direntry, ", ")}],
36 36 "files": [{join(fentries%fileentry, ", ")}],
37 37 "bookmarks": [{join(bookmarks%name, ", ")}],
38 38 "tags": [{join(tags%name, ", ")}]
39 39 }'
40 40 name = '{name|json}'
41 41 direntry = '\{
42 42 "abspath": {path|json},
43 43 "basename": {basename|json},
44 44 "emptydirs": {emptydirs|json}
45 45 }'
46 46 fileentry = '\{
47 47 "abspath": {file|json},
48 48 "basename": {basename|json},
49 49 "date": {date|json},
50 50 "size": {size|json},
51 51 "flags": {permissions|json}
52 52 }'
53 53 tags = '\{
54 54 "node": {node|json},
55 55 "tags": [{join(entriesnotip%tagentry, ", ")}]
56 56 }'
57 57 tagentry = '\{
58 58 "tag": {tag|json},
59 59 "node": {node|json},
60 60 "date": {date|json}
61 61 }'
62 62 bookmarks = '\{
63 63 "node": {node|json},
64 64 "bookmarks": [{join(entries%bookmarkentry, ", ")}]
65 65 }'
66 66 bookmarkentry = '\{
67 67 "bookmark": {bookmark|json},
68 68 "node": {node|json},
69 69 "date": {date|json}
70 70 }'
71 71 branches = '\{
72 72 "branches": [{join(entries%branchentry, ", ")}]
73 73 }'
74 74 branchentry = '\{
75 75 "branch": {branch|json},
76 76 "node": {node|json},
77 77 "date": {date|json},
78 78 "status": {status|json}
79 79 }'
80 80 summary = '"not yet implemented"'
81 81 filediff = '\{
82 82 "path": {file|json},
83 83 "node": {node|json},
84 84 "date": {date|json},
85 85 "desc": {desc|json},
86 86 "author": {author|json},
87 87 "parents": [{join(parent%changesetparent, ", ")}],
88 88 "children": [{join(child%changesetparent, ", ")}],
89 89 "diff": [{join(diff%diffblock, ", ")}]
90 90 }'
91 91 diffblock = '\{
92 92 "blockno": {blockno|json},
93 93 "lines": [{join(lines, ", ")}]
94 94 }'
95 95 difflineplus = '\{
96 96 "t": "+",
97 97 "n": {lineno|json},
98 98 "l": {line|json}
99 99 }'
100 100 difflineminus = '\{
101 101 "t": "-",
102 102 "n": {lineno|json},
103 103 "l": {line|json}
104 104 }'
105 105 difflineat = '\{
106 106 "t": "@",
107 107 "n": {lineno|json},
108 108 "l": {line|json}
109 109 }'
110 110 diffline = '\{
111 111 "t": "",
112 112 "n": {lineno|json},
113 113 "l": {line|json}
114 114 }'
115 115 filecomparison = '\{
116 116 "path": {file|json},
117 117 "node": {node|json},
118 118 "date": {date|json},
119 119 "desc": {desc|json},
120 120 "author": {author|json},
121 121 "parents": [{join(parent%changesetparent, ", ")}],
122 122 "children": [{join(child%changesetparent, ", ")}],
123 123 "leftnode": {leftnode|json},
124 124 "rightnode": {rightnode|json},
125 125 "comparison": [{join(comparison, ", ")}]
126 126 }'
127 127 comparisonblock = '\{
128 128 "lines": [{join(lines, ", ")}]
129 129 }'
130 130 comparisonline = '\{
131 131 "t": {type|json},
132 132 "ln": {leftlineno|json},
133 133 "ll": {leftline|json},
134 134 "rn": {rightlineno|json},
135 135 "rl": {rightline|json}
136 136 }'
137 fileannotate = '"not yet implemented"'
137 fileannotate = '\{
138 "abspath": {file|json},
139 "node": {node|json},
140 "author": {author|json},
141 "date": {date|json},
142 "desc": {desc|json},
143 "parents": [{join(parent%changesetparent, ", ")}],
144 "children": [{join(child%changesetparent, ", ")}],
145 "permissions": {permissions|json},
146 "annotate": [{join(annotate%fileannotation, ", ")}]
147 }'
148 fileannotation = '\{
149 "node": {node|json},
150 "author": {author|json},
151 "desc": {desc|json},
152 "abspath": {file|json},
153 "targetline": {targetline|json},
154 "line": {line|json},
155 "lineno": {lineno|json},
156 "revdate": {revdate|json}
157 }'
138 158 filelog = '"not yet implemented"'
139 159 graph = '"not yet implemented"'
140 160 helptopics = '\{
141 161 "topics": [{join(topics%helptopicentry, ", ")}],
142 162 "earlycommands": [{join(earlycommands%helptopicentry, ", ")}],
143 163 "othercommands": [{join(othercommands%helptopicentry, ", ")}]
144 164 }'
145 165 helptopicentry = '\{
146 166 "topic": {topic|json},
147 167 "summary": {summary|json}
148 168 }'
149 169 help = '\{
150 170 "topic": {topic|json},
151 171 "rawdoc": {doc|json}
152 172 }'
153 173 filenodelink = ''
154 174 filenolink = ''
@@ -1,1082 +1,1111 b''
1 1 #require json
2 2 #require serve
3 3
4 4 $ request() {
5 5 > $TESTDIR/get-with-headers.py --json localhost:$HGPORT "$1"
6 6 > }
7 7
8 8 $ hg init test
9 9 $ cd test
10 10 $ mkdir da
11 11 $ echo foo > da/foo
12 12 $ echo foo > foo
13 13 $ hg -q ci -A -m initial
14 14 $ echo bar > foo
15 15 $ hg ci -m 'modify foo'
16 16 $ echo bar > da/foo
17 17 $ hg ci -m 'modify da/foo'
18 18 $ hg bookmark bookmark1
19 19 $ hg up default
20 20 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 21 (leaving bookmark bookmark1)
22 22 $ hg mv foo foo-new
23 23 $ hg commit -m 'move foo'
24 24 $ hg tag -m 'create tag' tag1
25 25 $ hg phase --public -r .
26 26 $ echo baz > da/foo
27 27 $ hg commit -m 'another commit to da/foo'
28 28 $ hg tag -m 'create tag2' tag2
29 29 $ hg bookmark bookmark2
30 30 $ hg -q up -r 0
31 31 $ hg -q branch test-branch
32 32 $ echo branch > foo
33 33 $ hg commit -m 'create test branch'
34 34 $ echo branch_commit_2 > foo
35 35 $ hg commit -m 'another commit in test-branch'
36 36 $ hg -q up default
37 37 $ hg merge --tool :local test-branch
38 38 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
39 39 (branch merge, don't forget to commit)
40 40 $ hg commit -m 'merge test-branch into default'
41 41
42 42 $ hg log -G
43 43 @ changeset: 9:cc725e08502a
44 44 |\ tag: tip
45 45 | | parent: 6:ceed296fe500
46 46 | | parent: 8:ed66c30e87eb
47 47 | | user: test
48 48 | | date: Thu Jan 01 00:00:00 1970 +0000
49 49 | | summary: merge test-branch into default
50 50 | |
51 51 | o changeset: 8:ed66c30e87eb
52 52 | | branch: test-branch
53 53 | | user: test
54 54 | | date: Thu Jan 01 00:00:00 1970 +0000
55 55 | | summary: another commit in test-branch
56 56 | |
57 57 | o changeset: 7:6ab967a8ab34
58 58 | | branch: test-branch
59 59 | | parent: 0:06e557f3edf6
60 60 | | user: test
61 61 | | date: Thu Jan 01 00:00:00 1970 +0000
62 62 | | summary: create test branch
63 63 | |
64 64 o | changeset: 6:ceed296fe500
65 65 | | bookmark: bookmark2
66 66 | | user: test
67 67 | | date: Thu Jan 01 00:00:00 1970 +0000
68 68 | | summary: create tag2
69 69 | |
70 70 o | changeset: 5:f2890a05fea4
71 71 | | tag: tag2
72 72 | | user: test
73 73 | | date: Thu Jan 01 00:00:00 1970 +0000
74 74 | | summary: another commit to da/foo
75 75 | |
76 76 o | changeset: 4:93a8ce14f891
77 77 | | user: test
78 78 | | date: Thu Jan 01 00:00:00 1970 +0000
79 79 | | summary: create tag
80 80 | |
81 81 o | changeset: 3:78896eb0e102
82 82 | | tag: tag1
83 83 | | user: test
84 84 | | date: Thu Jan 01 00:00:00 1970 +0000
85 85 | | summary: move foo
86 86 | |
87 87 o | changeset: 2:8d7c456572ac
88 88 | | bookmark: bookmark1
89 89 | | user: test
90 90 | | date: Thu Jan 01 00:00:00 1970 +0000
91 91 | | summary: modify da/foo
92 92 | |
93 93 o | changeset: 1:f8bbb9024b10
94 94 |/ user: test
95 95 | date: Thu Jan 01 00:00:00 1970 +0000
96 96 | summary: modify foo
97 97 |
98 98 o changeset: 0:06e557f3edf6
99 99 user: test
100 100 date: Thu Jan 01 00:00:00 1970 +0000
101 101 summary: initial
102 102
103 103
104 104 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E error.log
105 105 $ cat hg.pid >> $DAEMON_PIDS
106 106
107 107 (Try to keep these in roughly the order they are defined in webcommands.py)
108 108
109 109 (log is handled by filelog/ and changelog/ - ignore it)
110 110
111 111 (rawfile/ doesn't use templating - nothing to test)
112 112
113 113 file/{revision}/{path} shows file revision
114 114
115 115 $ request json-file/06e557f3edf6/foo
116 116 200 Script output follows
117 117
118 118 "not yet implemented"
119 119
120 120 file/{revision} shows root directory info
121 121
122 122 $ request json-file/cc725e08502a
123 123 200 Script output follows
124 124
125 125 {
126 126 "abspath": "/",
127 127 "bookmarks": [],
128 128 "directories": [
129 129 {
130 130 "abspath": "/da",
131 131 "basename": "da",
132 132 "emptydirs": ""
133 133 }
134 134 ],
135 135 "files": [
136 136 {
137 137 "abspath": ".hgtags",
138 138 "basename": ".hgtags",
139 139 "date": [
140 140 0.0,
141 141 0
142 142 ],
143 143 "flags": "",
144 144 "size": 92
145 145 },
146 146 {
147 147 "abspath": "foo-new",
148 148 "basename": "foo-new",
149 149 "date": [
150 150 0.0,
151 151 0
152 152 ],
153 153 "flags": "",
154 154 "size": 4
155 155 }
156 156 ],
157 157 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
158 158 "tags": [
159 159 "tip"
160 160 ]
161 161 }
162 162
163 163 changelog/ shows information about several changesets
164 164
165 165 $ request json-changelog
166 166 200 Script output follows
167 167
168 168 {
169 169 "changeset_count": 10,
170 170 "changesets": [
171 171 {
172 172 "bookmarks": [],
173 173 "date": [
174 174 0.0,
175 175 0
176 176 ],
177 177 "desc": "merge test-branch into default",
178 178 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
179 179 "tags": [
180 180 "tip"
181 181 ],
182 182 "user": "test"
183 183 },
184 184 {
185 185 "bookmarks": [],
186 186 "date": [
187 187 0.0,
188 188 0
189 189 ],
190 190 "desc": "another commit in test-branch",
191 191 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
192 192 "tags": [],
193 193 "user": "test"
194 194 },
195 195 {
196 196 "bookmarks": [],
197 197 "date": [
198 198 0.0,
199 199 0
200 200 ],
201 201 "desc": "create test branch",
202 202 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
203 203 "tags": [],
204 204 "user": "test"
205 205 },
206 206 {
207 207 "bookmarks": [
208 208 "bookmark2"
209 209 ],
210 210 "date": [
211 211 0.0,
212 212 0
213 213 ],
214 214 "desc": "create tag2",
215 215 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
216 216 "tags": [],
217 217 "user": "test"
218 218 },
219 219 {
220 220 "bookmarks": [],
221 221 "date": [
222 222 0.0,
223 223 0
224 224 ],
225 225 "desc": "another commit to da/foo",
226 226 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
227 227 "tags": [
228 228 "tag2"
229 229 ],
230 230 "user": "test"
231 231 },
232 232 {
233 233 "bookmarks": [],
234 234 "date": [
235 235 0.0,
236 236 0
237 237 ],
238 238 "desc": "create tag",
239 239 "node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
240 240 "tags": [],
241 241 "user": "test"
242 242 },
243 243 {
244 244 "bookmarks": [],
245 245 "date": [
246 246 0.0,
247 247 0
248 248 ],
249 249 "desc": "move foo",
250 250 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
251 251 "tags": [
252 252 "tag1"
253 253 ],
254 254 "user": "test"
255 255 },
256 256 {
257 257 "bookmarks": [
258 258 "bookmark1"
259 259 ],
260 260 "date": [
261 261 0.0,
262 262 0
263 263 ],
264 264 "desc": "modify da/foo",
265 265 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
266 266 "tags": [],
267 267 "user": "test"
268 268 },
269 269 {
270 270 "bookmarks": [],
271 271 "date": [
272 272 0.0,
273 273 0
274 274 ],
275 275 "desc": "modify foo",
276 276 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
277 277 "tags": [],
278 278 "user": "test"
279 279 },
280 280 {
281 281 "bookmarks": [],
282 282 "date": [
283 283 0.0,
284 284 0
285 285 ],
286 286 "desc": "initial",
287 287 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
288 288 "tags": [],
289 289 "user": "test"
290 290 }
291 291 ],
292 292 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
293 293 }
294 294
295 295 changelog/{revision} shows information starting at a specific changeset
296 296
297 297 $ request json-changelog/f8bbb9024b10
298 298 200 Script output follows
299 299
300 300 {
301 301 "changeset_count": 10,
302 302 "changesets": [
303 303 {
304 304 "bookmarks": [],
305 305 "date": [
306 306 0.0,
307 307 0
308 308 ],
309 309 "desc": "modify foo",
310 310 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
311 311 "tags": [],
312 312 "user": "test"
313 313 },
314 314 {
315 315 "bookmarks": [],
316 316 "date": [
317 317 0.0,
318 318 0
319 319 ],
320 320 "desc": "initial",
321 321 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
322 322 "tags": [],
323 323 "user": "test"
324 324 }
325 325 ],
326 326 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
327 327 }
328 328
329 329 shortlog/ shows information about a set of changesets
330 330
331 331 $ request json-shortlog
332 332 200 Script output follows
333 333
334 334 {
335 335 "changeset_count": 10,
336 336 "changesets": [
337 337 {
338 338 "bookmarks": [],
339 339 "date": [
340 340 0.0,
341 341 0
342 342 ],
343 343 "desc": "merge test-branch into default",
344 344 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
345 345 "tags": [
346 346 "tip"
347 347 ],
348 348 "user": "test"
349 349 },
350 350 {
351 351 "bookmarks": [],
352 352 "date": [
353 353 0.0,
354 354 0
355 355 ],
356 356 "desc": "another commit in test-branch",
357 357 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
358 358 "tags": [],
359 359 "user": "test"
360 360 },
361 361 {
362 362 "bookmarks": [],
363 363 "date": [
364 364 0.0,
365 365 0
366 366 ],
367 367 "desc": "create test branch",
368 368 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
369 369 "tags": [],
370 370 "user": "test"
371 371 },
372 372 {
373 373 "bookmarks": [
374 374 "bookmark2"
375 375 ],
376 376 "date": [
377 377 0.0,
378 378 0
379 379 ],
380 380 "desc": "create tag2",
381 381 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
382 382 "tags": [],
383 383 "user": "test"
384 384 },
385 385 {
386 386 "bookmarks": [],
387 387 "date": [
388 388 0.0,
389 389 0
390 390 ],
391 391 "desc": "another commit to da/foo",
392 392 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
393 393 "tags": [
394 394 "tag2"
395 395 ],
396 396 "user": "test"
397 397 },
398 398 {
399 399 "bookmarks": [],
400 400 "date": [
401 401 0.0,
402 402 0
403 403 ],
404 404 "desc": "create tag",
405 405 "node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
406 406 "tags": [],
407 407 "user": "test"
408 408 },
409 409 {
410 410 "bookmarks": [],
411 411 "date": [
412 412 0.0,
413 413 0
414 414 ],
415 415 "desc": "move foo",
416 416 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
417 417 "tags": [
418 418 "tag1"
419 419 ],
420 420 "user": "test"
421 421 },
422 422 {
423 423 "bookmarks": [
424 424 "bookmark1"
425 425 ],
426 426 "date": [
427 427 0.0,
428 428 0
429 429 ],
430 430 "desc": "modify da/foo",
431 431 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
432 432 "tags": [],
433 433 "user": "test"
434 434 },
435 435 {
436 436 "bookmarks": [],
437 437 "date": [
438 438 0.0,
439 439 0
440 440 ],
441 441 "desc": "modify foo",
442 442 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
443 443 "tags": [],
444 444 "user": "test"
445 445 },
446 446 {
447 447 "bookmarks": [],
448 448 "date": [
449 449 0.0,
450 450 0
451 451 ],
452 452 "desc": "initial",
453 453 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
454 454 "tags": [],
455 455 "user": "test"
456 456 }
457 457 ],
458 458 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
459 459 }
460 460
461 461 changeset/ renders the tip changeset
462 462
463 463 $ request json-rev
464 464 200 Script output follows
465 465
466 466 {
467 467 "bookmarks": [],
468 468 "branch": "default",
469 469 "date": [
470 470 0.0,
471 471 0
472 472 ],
473 473 "desc": "merge test-branch into default",
474 474 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
475 475 "parents": [
476 476 "ceed296fe500c3fac9541e31dad860cb49c89e45",
477 477 "ed66c30e87eb65337c05a4229efaa5f1d5285a90"
478 478 ],
479 479 "phase": "draft",
480 480 "tags": [
481 481 "tip"
482 482 ],
483 483 "user": "test"
484 484 }
485 485
486 486 changeset/{revision} shows tags
487 487
488 488 $ request json-rev/78896eb0e102
489 489 200 Script output follows
490 490
491 491 {
492 492 "bookmarks": [],
493 493 "branch": "default",
494 494 "date": [
495 495 0.0,
496 496 0
497 497 ],
498 498 "desc": "move foo",
499 499 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
500 500 "parents": [
501 501 "8d7c456572acf3557e8ed8a07286b10c408bcec5"
502 502 ],
503 503 "phase": "public",
504 504 "tags": [
505 505 "tag1"
506 506 ],
507 507 "user": "test"
508 508 }
509 509
510 510 changeset/{revision} shows bookmarks
511 511
512 512 $ request json-rev/8d7c456572ac
513 513 200 Script output follows
514 514
515 515 {
516 516 "bookmarks": [
517 517 "bookmark1"
518 518 ],
519 519 "branch": "default",
520 520 "date": [
521 521 0.0,
522 522 0
523 523 ],
524 524 "desc": "modify da/foo",
525 525 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
526 526 "parents": [
527 527 "f8bbb9024b10f93cdbb8d940337398291d40dea8"
528 528 ],
529 529 "phase": "public",
530 530 "tags": [],
531 531 "user": "test"
532 532 }
533 533
534 534 changeset/{revision} shows branches
535 535
536 536 $ request json-rev/6ab967a8ab34
537 537 200 Script output follows
538 538
539 539 {
540 540 "bookmarks": [],
541 541 "branch": "test-branch",
542 542 "date": [
543 543 0.0,
544 544 0
545 545 ],
546 546 "desc": "create test branch",
547 547 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
548 548 "parents": [
549 549 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
550 550 ],
551 551 "phase": "draft",
552 552 "tags": [],
553 553 "user": "test"
554 554 }
555 555
556 556 manifest/{revision}/{path} shows info about a directory at a revision
557 557
558 558 $ request json-manifest/06e557f3edf6/
559 559 200 Script output follows
560 560
561 561 {
562 562 "abspath": "/",
563 563 "bookmarks": [],
564 564 "directories": [
565 565 {
566 566 "abspath": "/da",
567 567 "basename": "da",
568 568 "emptydirs": ""
569 569 }
570 570 ],
571 571 "files": [
572 572 {
573 573 "abspath": "foo",
574 574 "basename": "foo",
575 575 "date": [
576 576 0.0,
577 577 0
578 578 ],
579 579 "flags": "",
580 580 "size": 4
581 581 }
582 582 ],
583 583 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
584 584 "tags": []
585 585 }
586 586
587 587 tags/ shows tags info
588 588
589 589 $ request json-tags
590 590 200 Script output follows
591 591
592 592 {
593 593 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
594 594 "tags": [
595 595 {
596 596 "date": [
597 597 0.0,
598 598 0
599 599 ],
600 600 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
601 601 "tag": "tag2"
602 602 },
603 603 {
604 604 "date": [
605 605 0.0,
606 606 0
607 607 ],
608 608 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
609 609 "tag": "tag1"
610 610 }
611 611 ]
612 612 }
613 613
614 614 bookmarks/ shows bookmarks info
615 615
616 616 $ request json-bookmarks
617 617 200 Script output follows
618 618
619 619 {
620 620 "bookmarks": [
621 621 {
622 622 "bookmark": "bookmark1",
623 623 "date": [
624 624 0.0,
625 625 0
626 626 ],
627 627 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5"
628 628 },
629 629 {
630 630 "bookmark": "bookmark2",
631 631 "date": [
632 632 0.0,
633 633 0
634 634 ],
635 635 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45"
636 636 }
637 637 ],
638 638 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
639 639 }
640 640
641 641 branches/ shows branches info
642 642
643 643 $ request json-branches
644 644 200 Script output follows
645 645
646 646 {
647 647 "branches": [
648 648 {
649 649 "branch": "default",
650 650 "date": [
651 651 0.0,
652 652 0
653 653 ],
654 654 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
655 655 "status": "open"
656 656 },
657 657 {
658 658 "branch": "test-branch",
659 659 "date": [
660 660 0.0,
661 661 0
662 662 ],
663 663 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
664 664 "status": "inactive"
665 665 }
666 666 ]
667 667 }
668 668
669 669 summary/ shows a summary of repository state
670 670
671 671 $ request json-summary
672 672 200 Script output follows
673 673
674 674 "not yet implemented"
675 675
676 676 filediff/{revision}/{path} shows changes to a file in a revision
677 677
678 678 $ request json-diff/f8bbb9024b10/foo
679 679 200 Script output follows
680 680
681 681 {
682 682 "author": "test",
683 683 "children": [],
684 684 "date": [
685 685 0.0,
686 686 0
687 687 ],
688 688 "desc": "modify foo",
689 689 "diff": [
690 690 {
691 691 "blockno": 1,
692 692 "lines": [
693 693 {
694 694 "l": "--- a/foo\tThu Jan 01 00:00:00 1970 +0000\n",
695 695 "n": 1,
696 696 "t": "-"
697 697 },
698 698 {
699 699 "l": "+++ b/foo\tThu Jan 01 00:00:00 1970 +0000\n",
700 700 "n": 2,
701 701 "t": "+"
702 702 },
703 703 {
704 704 "l": "@@ -1,1 +1,1 @@\n",
705 705 "n": 3,
706 706 "t": "@"
707 707 },
708 708 {
709 709 "l": "-foo\n",
710 710 "n": 4,
711 711 "t": "-"
712 712 },
713 713 {
714 714 "l": "+bar\n",
715 715 "n": 5,
716 716 "t": "+"
717 717 }
718 718 ]
719 719 }
720 720 ],
721 721 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
722 722 "parents": [
723 723 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
724 724 ],
725 725 "path": "foo"
726 726 }
727 727
728 728 comparison/{revision}/{path} shows information about before and after for a file
729 729
730 730 $ request json-comparison/f8bbb9024b10/foo
731 731 200 Script output follows
732 732
733 733 {
734 734 "author": "test",
735 735 "children": [],
736 736 "comparison": [
737 737 {
738 738 "lines": [
739 739 {
740 740 "ll": "foo",
741 741 "ln": 1,
742 742 "rl": "bar",
743 743 "rn": 1,
744 744 "t": "replace"
745 745 }
746 746 ]
747 747 }
748 748 ],
749 749 "date": [
750 750 0.0,
751 751 0
752 752 ],
753 753 "desc": "modify foo",
754 754 "leftnode": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
755 755 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
756 756 "parents": [
757 757 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
758 758 ],
759 759 "path": "foo",
760 760 "rightnode": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
761 761 }
762 762
763 763 annotate/{revision}/{path} shows annotations for each line
764 764
765 765 $ request json-annotate/f8bbb9024b10/foo
766 766 200 Script output follows
767 767
768 "not yet implemented"
768 {
769 "abspath": "foo",
770 "annotate": [
771 {
772 "abspath": "foo",
773 "author": "test",
774 "desc": "modify foo",
775 "line": "bar\n",
776 "lineno": 1,
777 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
778 "revdate": [
779 0.0,
780 0
781 ],
782 "targetline": 1
783 }
784 ],
785 "author": "test",
786 "children": [],
787 "date": [
788 0.0,
789 0
790 ],
791 "desc": "modify foo",
792 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
793 "parents": [
794 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
795 ],
796 "permissions": ""
797 }
769 798
770 799 filelog/{revision}/{path} shows history of a single file
771 800
772 801 $ request json-filelog/f8bbb9024b10/foo
773 802 200 Script output follows
774 803
775 804 "not yet implemented"
776 805
777 806 (archive/ doesn't use templating, so ignore it)
778 807
779 808 (static/ doesn't use templating, so ignore it)
780 809
781 810 graph/ shows information that can be used to render a graph of the DAG
782 811
783 812 $ request json-graph
784 813 200 Script output follows
785 814
786 815 "not yet implemented"
787 816
788 817 help/ shows help topics
789 818
790 819 $ request json-help
791 820 200 Script output follows
792 821
793 822 {
794 823 "earlycommands": [
795 824 {
796 825 "summary": "add the specified files on the next commit",
797 826 "topic": "add"
798 827 },
799 828 {
800 829 "summary": "show changeset information by line for each file",
801 830 "topic": "annotate"
802 831 },
803 832 {
804 833 "summary": "make a copy of an existing repository",
805 834 "topic": "clone"
806 835 },
807 836 {
808 837 "summary": "commit the specified files or all outstanding changes",
809 838 "topic": "commit"
810 839 },
811 840 {
812 841 "summary": "diff repository (or selected files)",
813 842 "topic": "diff"
814 843 },
815 844 {
816 845 "summary": "dump the header and diffs for one or more changesets",
817 846 "topic": "export"
818 847 },
819 848 {
820 849 "summary": "forget the specified files on the next commit",
821 850 "topic": "forget"
822 851 },
823 852 {
824 853 "summary": "create a new repository in the given directory",
825 854 "topic": "init"
826 855 },
827 856 {
828 857 "summary": "show revision history of entire repository or files",
829 858 "topic": "log"
830 859 },
831 860 {
832 861 "summary": "merge another revision into working directory",
833 862 "topic": "merge"
834 863 },
835 864 {
836 865 "summary": "pull changes from the specified source",
837 866 "topic": "pull"
838 867 },
839 868 {
840 869 "summary": "push changes to the specified destination",
841 870 "topic": "push"
842 871 },
843 872 {
844 873 "summary": "remove the specified files on the next commit",
845 874 "topic": "remove"
846 875 },
847 876 {
848 877 "summary": "start stand-alone webserver",
849 878 "topic": "serve"
850 879 },
851 880 {
852 881 "summary": "show changed files in the working directory",
853 882 "topic": "status"
854 883 },
855 884 {
856 885 "summary": "summarize working directory state",
857 886 "topic": "summary"
858 887 },
859 888 {
860 889 "summary": "update working directory (or switch revisions)",
861 890 "topic": "update"
862 891 }
863 892 ],
864 893 "othercommands": [
865 894 {
866 895 "summary": "add all new files, delete all missing files",
867 896 "topic": "addremove"
868 897 },
869 898 {
870 899 "summary": "create an unversioned archive of a repository revision",
871 900 "topic": "archive"
872 901 },
873 902 {
874 903 "summary": "reverse effect of earlier changeset",
875 904 "topic": "backout"
876 905 },
877 906 {
878 907 "summary": "subdivision search of changesets",
879 908 "topic": "bisect"
880 909 },
881 910 {
882 911 "summary": "create a new bookmark or list existing bookmarks",
883 912 "topic": "bookmarks"
884 913 },
885 914 {
886 915 "summary": "set or show the current branch name",
887 916 "topic": "branch"
888 917 },
889 918 {
890 919 "summary": "list repository named branches",
891 920 "topic": "branches"
892 921 },
893 922 {
894 923 "summary": "create a changegroup file",
895 924 "topic": "bundle"
896 925 },
897 926 {
898 927 "summary": "output the current or given revision of files",
899 928 "topic": "cat"
900 929 },
901 930 {
902 931 "summary": "show combined config settings from all hgrc files",
903 932 "topic": "config"
904 933 },
905 934 {
906 935 "summary": "mark files as copied for the next commit",
907 936 "topic": "copy"
908 937 },
909 938 {
910 939 "summary": "list tracked files",
911 940 "topic": "files"
912 941 },
913 942 {
914 943 "summary": "copy changes from other branches onto the current branch",
915 944 "topic": "graft"
916 945 },
917 946 {
918 947 "summary": "search for a pattern in specified files and revisions",
919 948 "topic": "grep"
920 949 },
921 950 {
922 951 "summary": "show branch heads",
923 952 "topic": "heads"
924 953 },
925 954 {
926 955 "summary": "show help for a given topic or a help overview",
927 956 "topic": "help"
928 957 },
929 958 {
930 959 "summary": "identify the working directory or specified revision",
931 960 "topic": "identify"
932 961 },
933 962 {
934 963 "summary": "import an ordered set of patches",
935 964 "topic": "import"
936 965 },
937 966 {
938 967 "summary": "show new changesets found in source",
939 968 "topic": "incoming"
940 969 },
941 970 {
942 971 "summary": "output the current or given revision of the project manifest",
943 972 "topic": "manifest"
944 973 },
945 974 {
946 975 "summary": "show changesets not found in the destination",
947 976 "topic": "outgoing"
948 977 },
949 978 {
950 979 "summary": "show aliases for remote repositories",
951 980 "topic": "paths"
952 981 },
953 982 {
954 983 "summary": "set or show the current phase name",
955 984 "topic": "phase"
956 985 },
957 986 {
958 987 "summary": "roll back an interrupted transaction",
959 988 "topic": "recover"
960 989 },
961 990 {
962 991 "summary": "rename files; equivalent of copy + remove",
963 992 "topic": "rename"
964 993 },
965 994 {
966 995 "summary": "redo merges or set/view the merge status of files",
967 996 "topic": "resolve"
968 997 },
969 998 {
970 999 "summary": "restore files to their checkout state",
971 1000 "topic": "revert"
972 1001 },
973 1002 {
974 1003 "summary": "print the root (top) of the current working directory",
975 1004 "topic": "root"
976 1005 },
977 1006 {
978 1007 "summary": "add one or more tags for the current or given revision",
979 1008 "topic": "tag"
980 1009 },
981 1010 {
982 1011 "summary": "list repository tags",
983 1012 "topic": "tags"
984 1013 },
985 1014 {
986 1015 "summary": "apply one or more changegroup files",
987 1016 "topic": "unbundle"
988 1017 },
989 1018 {
990 1019 "summary": "verify the integrity of the repository",
991 1020 "topic": "verify"
992 1021 },
993 1022 {
994 1023 "summary": "output version and copyright information",
995 1024 "topic": "version"
996 1025 }
997 1026 ],
998 1027 "topics": [
999 1028 {
1000 1029 "summary": "Configuration Files",
1001 1030 "topic": "config"
1002 1031 },
1003 1032 {
1004 1033 "summary": "Date Formats",
1005 1034 "topic": "dates"
1006 1035 },
1007 1036 {
1008 1037 "summary": "Diff Formats",
1009 1038 "topic": "diffs"
1010 1039 },
1011 1040 {
1012 1041 "summary": "Environment Variables",
1013 1042 "topic": "environment"
1014 1043 },
1015 1044 {
1016 1045 "summary": "Using Additional Features",
1017 1046 "topic": "extensions"
1018 1047 },
1019 1048 {
1020 1049 "summary": "Specifying File Sets",
1021 1050 "topic": "filesets"
1022 1051 },
1023 1052 {
1024 1053 "summary": "Glossary",
1025 1054 "topic": "glossary"
1026 1055 },
1027 1056 {
1028 1057 "summary": "Syntax for Mercurial Ignore Files",
1029 1058 "topic": "hgignore"
1030 1059 },
1031 1060 {
1032 1061 "summary": "Configuring hgweb",
1033 1062 "topic": "hgweb"
1034 1063 },
1035 1064 {
1036 1065 "summary": "Merge Tools",
1037 1066 "topic": "merge-tools"
1038 1067 },
1039 1068 {
1040 1069 "summary": "Specifying Multiple Revisions",
1041 1070 "topic": "multirevs"
1042 1071 },
1043 1072 {
1044 1073 "summary": "File Name Patterns",
1045 1074 "topic": "patterns"
1046 1075 },
1047 1076 {
1048 1077 "summary": "Working with Phases",
1049 1078 "topic": "phases"
1050 1079 },
1051 1080 {
1052 1081 "summary": "Specifying Single Revisions",
1053 1082 "topic": "revisions"
1054 1083 },
1055 1084 {
1056 1085 "summary": "Specifying Revision Sets",
1057 1086 "topic": "revsets"
1058 1087 },
1059 1088 {
1060 1089 "summary": "Subrepositories",
1061 1090 "topic": "subrepos"
1062 1091 },
1063 1092 {
1064 1093 "summary": "Template Usage",
1065 1094 "topic": "templating"
1066 1095 },
1067 1096 {
1068 1097 "summary": "URL Paths",
1069 1098 "topic": "urls"
1070 1099 }
1071 1100 ]
1072 1101 }
1073 1102
1074 1103 help/{topic} shows an individual help topic
1075 1104
1076 1105 $ request json-help/phases
1077 1106 200 Script output follows
1078 1107
1079 1108 {
1080 1109 "rawdoc": "Working with Phases\n*", (glob)
1081 1110 "topic": "phases"
1082 1111 }
General Comments 0
You need to be logged in to leave comments. Login now