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