##// END OF EJS Templates
gitweb, monoblue: port highlighting linked lines from paper...
av6 -
r26363:f29ee23b default
parent child Browse files
Show More
@@ -1,332 +1,332 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {topic|escape}
17 {topic|escape}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td class="link">
32 <td class="link">
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td class="link">
44 <td class="link">
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td style="font-family:monospace">drwxr-xr-x</td>
65 <td style="font-family:monospace">drwxr-xr-x</td>
66 <td style="font-family:monospace"></td>
66 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
68 <td>
68 <td>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
71 </td>
71 </td>
72 <td class="link">
72 <td class="link">
73 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a>
73 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a>
74 </td>
74 </td>
75 </tr>'
75 </tr>'
76 fileentry = '
76 fileentry = '
77 <tr class="parity{parity}">
77 <tr class="parity{parity}">
78 <td style="font-family:monospace">{permissions|permissions}</td>
78 <td style="font-family:monospace">{permissions|permissions}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
81 <td class="list">
81 <td class="list">
82 <a class="list" href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
82 <a class="list" href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
83 </td>
83 </td>
84 <td class="link">
84 <td class="link">
85 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
85 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
86 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
86 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
87 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
87 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
88 </td>
88 </td>
89 </tr>'
89 </tr>'
90 filerevision = filerevision.tmpl
90 filerevision = filerevision.tmpl
91 fileannotate = fileannotate.tmpl
91 fileannotate = fileannotate.tmpl
92 filediff = filediff.tmpl
92 filediff = filediff.tmpl
93 filecomparison = filecomparison.tmpl
93 filecomparison = filecomparison.tmpl
94 filelog = filelog.tmpl
94 filelog = filelog.tmpl
95 fileline = '
95 fileline = '
96 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
96 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
97 annotateline = '
97 annotateline = '
98 <tr style="font-family:monospace" class="parity{parity}">
98 <tr id="{lineid}" style="font-family:monospace" class="parity{parity}">
99 <td class="linenr" style="text-align: right;">
99 <td class="linenr" style="text-align: right;">
100 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
100 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
101 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
101 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
102 </td>
102 </td>
103 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
103 <td><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
104 <td><pre>{line|escape}</pre></td>
104 <td><pre>{line|escape}</pre></td>
105 </tr>'
105 </tr>'
106 difflineplus = '
106 difflineplus = '
107 <span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
107 <span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
108 difflineminus = '
108 difflineminus = '
109 <span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
109 <span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
110 difflineat = '
110 difflineat = '
111 <span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
111 <span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
112 diffline = '
112 diffline = '
113 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
113 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
114
114
115 comparisonblock ='
115 comparisonblock ='
116 <tbody class="block">
116 <tbody class="block">
117 {lines}
117 {lines}
118 </tbody>'
118 </tbody>'
119 comparisonline = '
119 comparisonline = '
120 <tr style="font-family:monospace">
120 <tr id="{lineid}" style="font-family:monospace">
121 <td class="{type}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
121 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
122 <td class="{type}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
122 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
123 </tr>'
123 </tr>'
124
124
125 changelogparent = '
125 changelogparent = '
126 <tr>
126 <tr>
127 <th class="parent">parent {rev}:</th>
127 <th class="parent">parent {rev}:</th>
128 <td class="parent">
128 <td class="parent">
129 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
129 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
130 </td>
130 </td>
131 </tr>'
131 </tr>'
132 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
132 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
133 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
133 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
134 changesetparent = '
134 changesetparent = '
135 <tr>
135 <tr>
136 <td>parent {rev}</td>
136 <td>parent {rev}</td>
137 <td style="font-family:monospace">
137 <td style="font-family:monospace">
138 {changesetlink}
138 {changesetlink}
139 </td>
139 </td>
140 </tr>'
140 </tr>'
141 changesetparentdiff = '
141 changesetparentdiff = '
142 <tr>
142 <tr>
143 <td>parent {rev}</td>
143 <td>parent {rev}</td>
144 <td style="font-family:monospace">
144 <td style="font-family:monospace">
145 {changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}
145 {changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}
146 </td>
146 </td>
147 </tr>'
147 </tr>'
148 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
148 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
149 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
149 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
150 filerevparent = '
150 filerevparent = '
151 <tr>
151 <tr>
152 <td>parent {rev}</td>
152 <td>parent {rev}</td>
153 <td style="font-family:monospace">
153 <td style="font-family:monospace">
154 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
154 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
155 {rename%filerename}{node|short}
155 {rename%filerename}{node|short}
156 </a>
156 </a>
157 </td>
157 </td>
158 </tr>'
158 </tr>'
159 filerename = '{file|escape}@'
159 filerename = '{file|escape}@'
160 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
160 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
161 fileannotateparent = '
161 fileannotateparent = '
162 <tr>
162 <tr>
163 <td>parent {rev}</td>
163 <td>parent {rev}</td>
164 <td style="font-family:monospace">
164 <td style="font-family:monospace">
165 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
165 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
166 {rename%filerename}{node|short}
166 {rename%filerename}{node|short}
167 </a>
167 </a>
168 </td>
168 </td>
169 </tr>'
169 </tr>'
170 changelogchild = '
170 changelogchild = '
171 <tr>
171 <tr>
172 <th class="child">child {rev}:</th>
172 <th class="child">child {rev}:</th>
173 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
173 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
174 </tr>'
174 </tr>'
175 changesetchild = '
175 changesetchild = '
176 <tr>
176 <tr>
177 <td>child {rev}</td>
177 <td>child {rev}</td>
178 <td style="font-family:monospace">
178 <td style="font-family:monospace">
179 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
179 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
180 </td>
180 </td>
181 </tr>'
181 </tr>'
182 filerevchild = '
182 filerevchild = '
183 <tr>
183 <tr>
184 <td>child {rev}</td>
184 <td>child {rev}</td>
185 <td style="font-family:monospace">
185 <td style="font-family:monospace">
186 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
186 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
187 </tr>'
187 </tr>'
188 fileannotatechild = '
188 fileannotatechild = '
189 <tr>
189 <tr>
190 <td>child {rev}</td>
190 <td>child {rev}</td>
191 <td style="font-family:monospace">
191 <td style="font-family:monospace">
192 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
192 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
193 </tr>'
193 </tr>'
194 tags = tags.tmpl
194 tags = tags.tmpl
195 tagentry = '
195 tagentry = '
196 <tr class="parity{parity}">
196 <tr class="parity{parity}">
197 <td class="age"><i class="age">{date|rfc822date}</i></td>
197 <td class="age"><i class="age">{date|rfc822date}</i></td>
198 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
198 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
199 <td class="link">
199 <td class="link">
200 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
200 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
201 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
201 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
202 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
202 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
203 </td>
203 </td>
204 </tr>'
204 </tr>'
205 bookmarks = bookmarks.tmpl
205 bookmarks = bookmarks.tmpl
206 bookmarkentry = '
206 bookmarkentry = '
207 <tr class="parity{parity}">
207 <tr class="parity{parity}">
208 <td class="age"><i class="age">{date|rfc822date}</i></td>
208 <td class="age"><i class="age">{date|rfc822date}</i></td>
209 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
209 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
210 <td class="link">
210 <td class="link">
211 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
211 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
212 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
212 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
213 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
213 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
214 </td>
214 </td>
215 </tr>'
215 </tr>'
216 branches = branches.tmpl
216 branches = branches.tmpl
217 branchentry = '
217 branchentry = '
218 <tr class="parity{parity}">
218 <tr class="parity{parity}">
219 <td class="age"><i class="age">{date|rfc822date}</i></td>
219 <td class="age"><i class="age">{date|rfc822date}</i></td>
220 <td><a class="list" href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
220 <td><a class="list" href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
221 <td class="{status}">{branch|escape}</td>
221 <td class="{status}">{branch|escape}</td>
222 <td class="link">
222 <td class="link">
223 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
223 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
224 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
224 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
225 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
225 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
226 </td>
226 </td>
227 </tr>'
227 </tr>'
228 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
228 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
229 filediffparent = '
229 filediffparent = '
230 <tr>
230 <tr>
231 <td>parent {rev}</td>
231 <td>parent {rev}</td>
232 <td style="font-family:monospace">
232 <td style="font-family:monospace">
233 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
233 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
234 {node|short}
234 {node|short}
235 </a>
235 </a>
236 </td>
236 </td>
237 </tr>'
237 </tr>'
238 filecompparent = '
238 filecompparent = '
239 <tr>
239 <tr>
240 <td>parent {rev}</td>
240 <td>parent {rev}</td>
241 <td style="font-family:monospace">
241 <td style="font-family:monospace">
242 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
242 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
243 {node|short}
243 {node|short}
244 </a>
244 </a>
245 </td>
245 </td>
246 </tr>'
246 </tr>'
247 filelogparent = '
247 filelogparent = '
248 <tr>
248 <tr>
249 <td align="right">parent {rev}:&nbsp;</td>
249 <td align="right">parent {rev}:&nbsp;</td>
250 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
250 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
251 </tr>'
251 </tr>'
252 filediffchild = '
252 filediffchild = '
253 <tr>
253 <tr>
254 <td>child {rev}</td>
254 <td>child {rev}</td>
255 <td style="font-family:monospace">
255 <td style="font-family:monospace">
256 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
256 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
257 </td>
257 </td>
258 </tr>'
258 </tr>'
259 filecompchild = '
259 filecompchild = '
260 <tr>
260 <tr>
261 <td>child {rev}</td>
261 <td>child {rev}</td>
262 <td style="font-family:monospace">
262 <td style="font-family:monospace">
263 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
263 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
264 </td>
264 </td>
265 </tr>'
265 </tr>'
266 filelogchild = '
266 filelogchild = '
267 <tr>
267 <tr>
268 <td align="right">child {rev}:&nbsp;</td>
268 <td align="right">child {rev}:&nbsp;</td>
269 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
269 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
270 </tr>'
270 </tr>'
271 shortlog = shortlog.tmpl
271 shortlog = shortlog.tmpl
272 graph = graph.tmpl
272 graph = graph.tmpl
273 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
273 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
274 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
274 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
275 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
275 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
276 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
276 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
277 shortlogentry = '
277 shortlogentry = '
278 <tr class="parity{parity}">
278 <tr class="parity{parity}">
279 <td class="age"><i class="age">{date|rfc822date}</i></td>
279 <td class="age"><i class="age">{date|rfc822date}</i></td>
280 <td><i>{author|person}</i></td>
280 <td><i>{author|person}</i></td>
281 <td>
281 <td>
282 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
282 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
283 <b>{desc|strip|firstline|escape|nonempty}</b>
283 <b>{desc|strip|firstline|escape|nonempty}</b>
284 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
284 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
285 </a>
285 </a>
286 </td>
286 </td>
287 <td class="link" nowrap>
287 <td class="link" nowrap>
288 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
288 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
289 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
289 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
290 </td>
290 </td>
291 </tr>'
291 </tr>'
292 filelogentry = '
292 filelogentry = '
293 <tr class="parity{parity}">
293 <tr class="parity{parity}">
294 <td class="age"><i class="age">{date|rfc822date}</i></td>
294 <td class="age"><i class="age">{date|rfc822date}</i></td>
295 <td><i>{author|person}</i></td>
295 <td><i>{author|person}</i></td>
296 <td>
296 <td>
297 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
297 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
298 <b>{desc|strip|firstline|escape|nonempty}</b>
298 <b>{desc|strip|firstline|escape|nonempty}</b>
299 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
299 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
300 </a>
300 </a>
301 </td>
301 </td>
302 <td class="link">
302 <td class="link">
303 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
303 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
304 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
304 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
305 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
305 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
306 {rename%filelogrename}
306 {rename%filelogrename}
307 </td>
307 </td>
308 </tr>'
308 </tr>'
309 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
309 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
310 indexentry = '
310 indexentry = '
311 <tr class="parity{parity}">
311 <tr class="parity{parity}">
312 <td>
312 <td>
313 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
313 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
314 <b>{name|escape}</b>
314 <b>{name|escape}</b>
315 </a>
315 </a>
316 </td>
316 </td>
317 <td>{description}</td>
317 <td>{description}</td>
318 <td>{contact|obfuscate}</td>
318 <td>{contact|obfuscate}</td>
319 <td class="age">{lastchange|rfc822date}</td>
319 <td class="age">{lastchange|rfc822date}</td>
320 <td class="indexlinks">{archives%indexarchiveentry}</td>
320 <td class="indexlinks">{archives%indexarchiveentry}</td>
321 <td>{if(isdirectory, '',
321 <td>{if(isdirectory, '',
322 '<div class="rss_logo">
322 '<div class="rss_logo">
323 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
323 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
324 </div>'
324 </div>'
325 )}
325 )}
326 </td>
326 </td>
327 </tr>\n'
327 </tr>\n'
328 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
328 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
329 index = index.tmpl
329 index = index.tmpl
330 urlparameter = '{separator}{name}={value|urlescape}'
330 urlparameter = '{separator}{name}={value|urlescape}'
331 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
331 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
332 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
332 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,287 +1,287 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {topic|escape}
17 {topic|escape}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td>
32 <td>
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td>
44 <td>
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td>drwxr-xr-x</td>
65 <td>drwxr-xr-x</td>
66 <td></td>
66 <td></td>
67 <td></td>
67 <td></td>
68 <td>
68 <td>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
71 </td>
71 </td>
72 <td><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
72 <td><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
73 </tr>'
73 </tr>'
74 fileentry = '
74 fileentry = '
75 <tr class="parity{parity}">
75 <tr class="parity{parity}">
76 <td>{permissions|permissions}</td>
76 <td>{permissions|permissions}</td>
77 <td>{date|isodate}</td>
77 <td>{date|isodate}</td>
78 <td>{size}</td>
78 <td>{size}</td>
79 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
79 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
80 <td>
80 <td>
81 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
81 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
82 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
82 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
83 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
83 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
84 </td>
84 </td>
85 </tr>'
85 </tr>'
86 filerevision = filerevision.tmpl
86 filerevision = filerevision.tmpl
87 fileannotate = fileannotate.tmpl
87 fileannotate = fileannotate.tmpl
88 filediff = filediff.tmpl
88 filediff = filediff.tmpl
89 filecomparison = filecomparison.tmpl
89 filecomparison = filecomparison.tmpl
90 filelog = filelog.tmpl
90 filelog = filelog.tmpl
91 fileline = '
91 fileline = '
92 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
92 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
93 annotateline = '
93 annotateline = '
94 <tr class="parity{parity}">
94 <tr id="{lineid}" class="parity{parity}">
95 <td class="linenr">
95 <td class="linenr">
96 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
96 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
97 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
97 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
98 </td>
98 </td>
99 <td class="lineno">
99 <td class="lineno">
100 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
100 <a href="#{lineid}">{linenumber}</a>
101 </td>
101 </td>
102 <td class="source">{line|escape}</td>
102 <td class="source">{line|escape}</td>
103 </tr>'
103 </tr>'
104 difflineplus = '
104 difflineplus = '
105 <span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
105 <span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
106 difflineminus = '
106 difflineminus = '
107 <span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
107 <span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
108 difflineat = '
108 difflineat = '
109 <span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
109 <span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
110 diffline = '
110 diffline = '
111 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
111 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
112
112
113 comparisonblock ='
113 comparisonblock ='
114 <tbody class="block">
114 <tbody class="block">
115 {lines}
115 {lines}
116 </tbody>'
116 </tbody>'
117 comparisonline = '
117 comparisonline = '
118 <tr>
118 <tr id="{lineid}">
119 <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
119 <td class="source {type}"><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
120 <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
120 <td class="source {type}"><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
121 </tr>'
121 </tr>'
122
122
123 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
123 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
124 changelogparent = '
124 changelogparent = '
125 <tr>
125 <tr>
126 <th class="parent">parent {rev}:</th>
126 <th class="parent">parent {rev}:</th>
127 <td class="parent">
127 <td class="parent">
128 {changesetlink}
128 {changesetlink}
129 </td>
129 </td>
130 </tr>'
130 </tr>'
131 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
131 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
132 changesetparent = '
132 changesetparent = '
133 <dt>parent {rev}</dt>
133 <dt>parent {rev}</dt>
134 <dd>{changesetlink}</dd>'
134 <dd>{changesetlink}</dd>'
135 changesetparentdiff = '
135 changesetparentdiff = '
136 <dt>parent {rev}</dt>
136 <dt>parent {rev}</dt>
137 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</dd>'
137 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</dd>'
138 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
138 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
139 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
139 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
140 filerevparent = '
140 filerevparent = '
141 <dt>parent {rev}</dt>
141 <dt>parent {rev}</dt>
142 <dd>
142 <dd>
143 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
143 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
144 {rename%filerename}{node|short}
144 {rename%filerename}{node|short}
145 </a>
145 </a>
146 </dd>'
146 </dd>'
147 filerename = '{file|escape}@'
147 filerename = '{file|escape}@'
148 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
148 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
149 fileannotateparent = '
149 fileannotateparent = '
150 <dt>parent {rev}</dt>
150 <dt>parent {rev}</dt>
151 <dd>
151 <dd>
152 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
152 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
153 {rename%filerename}{node|short}
153 {rename%filerename}{node|short}
154 </a>
154 </a>
155 </dd>'
155 </dd>'
156 changelogchild = '
156 changelogchild = '
157 <dt>child {rev}:</dt>
157 <dt>child {rev}:</dt>
158 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
158 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
159 changesetchild = '
159 changesetchild = '
160 <dt>child {rev}</dt>
160 <dt>child {rev}</dt>
161 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
161 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
162 filerevchild = '
162 filerevchild = '
163 <dt>child {rev}</dt>
163 <dt>child {rev}</dt>
164 <dd>
164 <dd>
165 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
165 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
166 </dd>'
166 </dd>'
167 fileannotatechild = '
167 fileannotatechild = '
168 <dt>child {rev}</dt>
168 <dt>child {rev}</dt>
169 <dd>
169 <dd>
170 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
170 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
171 </dd>'
171 </dd>'
172 tags = tags.tmpl
172 tags = tags.tmpl
173 tagentry = '
173 tagentry = '
174 <tr class="parity{parity}">
174 <tr class="parity{parity}">
175 <td class="nowrap age">{date|rfc822date}</td>
175 <td class="nowrap age">{date|rfc822date}</td>
176 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
176 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
177 <td class="nowrap">
177 <td class="nowrap">
178 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
178 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
179 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
179 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
180 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
180 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
181 </td>
181 </td>
182 </tr>'
182 </tr>'
183 bookmarks = bookmarks.tmpl
183 bookmarks = bookmarks.tmpl
184 bookmarkentry = '
184 bookmarkentry = '
185 <tr class="parity{parity}">
185 <tr class="parity{parity}">
186 <td class="nowrap age">{date|rfc822date}</td>
186 <td class="nowrap age">{date|rfc822date}</td>
187 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
187 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
188 <td class="nowrap">
188 <td class="nowrap">
189 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
189 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
190 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
190 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
191 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
191 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
192 </td>
192 </td>
193 </tr>'
193 </tr>'
194 branches = branches.tmpl
194 branches = branches.tmpl
195 branchentry = '
195 branchentry = '
196 <tr class="parity{parity}">
196 <tr class="parity{parity}">
197 <td class="nowrap age">{date|rfc822date}</td>
197 <td class="nowrap age">{date|rfc822date}</td>
198 <td><a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
198 <td><a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
199 <td class="{status}">{branch|escape}</td>
199 <td class="{status}">{branch|escape}</td>
200 <td class="nowrap">
200 <td class="nowrap">
201 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
201 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
202 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
202 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
203 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
203 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
204 </td>
204 </td>
205 </tr>'
205 </tr>'
206 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
206 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
207 filediffparent = '
207 filediffparent = '
208 <dt>parent {rev}</dt>
208 <dt>parent {rev}</dt>
209 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
209 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
210 filecompparent = '
210 filecompparent = '
211 <dt>parent {rev}</dt>
211 <dt>parent {rev}</dt>
212 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
212 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
213 filelogparent = '
213 filelogparent = '
214 <tr>
214 <tr>
215 <td align="right">parent {rev}:&nbsp;</td>
215 <td align="right">parent {rev}:&nbsp;</td>
216 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
216 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
217 </tr>'
217 </tr>'
218 filediffchild = '
218 filediffchild = '
219 <dt>child {rev}</dt>
219 <dt>child {rev}</dt>
220 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
220 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
221 filecompchild = '
221 filecompchild = '
222 <dt>child {rev}</dt>
222 <dt>child {rev}</dt>
223 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
223 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
224 filelogchild = '
224 filelogchild = '
225 <tr>
225 <tr>
226 <td align="right">child {rev}:&nbsp;</td>
226 <td align="right">child {rev}:&nbsp;</td>
227 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
227 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
228 </tr>'
228 </tr>'
229 shortlog = shortlog.tmpl
229 shortlog = shortlog.tmpl
230 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
230 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
231 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
231 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
232 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
232 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
233 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
233 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
234 shortlogentry = '
234 shortlogentry = '
235 <tr class="parity{parity}">
235 <tr class="parity{parity}">
236 <td class="nowrap age">{date|rfc822date}</td>
236 <td class="nowrap age">{date|rfc822date}</td>
237 <td>{author|person}</td>
237 <td>{author|person}</td>
238 <td>
238 <td>
239 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
239 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
240 {desc|strip|firstline|escape|nonempty}
240 {desc|strip|firstline|escape|nonempty}
241 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
241 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
242 </a>
242 </a>
243 </td>
243 </td>
244 <td class="nowrap">
244 <td class="nowrap">
245 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
245 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
246 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
246 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
247 </td>
247 </td>
248 </tr>'
248 </tr>'
249 filelogentry = '
249 filelogentry = '
250 <tr class="parity{parity}">
250 <tr class="parity{parity}">
251 <td class="nowrap age">{date|rfc822date}</td>
251 <td class="nowrap age">{date|rfc822date}</td>
252 <td>{author|person}</td>
252 <td>{author|person}</td>
253 <td>
253 <td>
254 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
254 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
255 {desc|strip|firstline|escape|nonempty}
255 {desc|strip|firstline|escape|nonempty}
256 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
256 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
257 </a>
257 </a>
258 </td>
258 </td>
259 <td class="nowrap">
259 <td class="nowrap">
260 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
260 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
261 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
261 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
262 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
262 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
263 {rename%filelogrename}
263 {rename%filelogrename}
264 </td>
264 </td>
265 </tr>'
265 </tr>'
266 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
266 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
267 indexentry = '
267 indexentry = '
268 <tr class="parity{parity}">
268 <tr class="parity{parity}">
269 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
269 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
270 <td>{description}</td>
270 <td>{description}</td>
271 <td>{contact|obfuscate}</td>
271 <td>{contact|obfuscate}</td>
272 <td class="age">{lastchange|rfc822date}</td>
272 <td class="age">{lastchange|rfc822date}</td>
273 <td class="indexlinks">{archives%indexarchiveentry}</td>
273 <td class="indexlinks">{archives%indexarchiveentry}</td>
274 <td>
274 <td>
275 {if(isdirectory, '',
275 {if(isdirectory, '',
276 '<div class="rss_logo">
276 '<div class="rss_logo">
277 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
277 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
278 </div>'
278 </div>'
279 )}
279 )}
280 </td>
280 </td>
281 </tr>\n'
281 </tr>\n'
282 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
282 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
283 index = index.tmpl
283 index = index.tmpl
284 urlparameter = '{separator}{name}={value|urlescape}'
284 urlparameter = '{separator}{name}={value|urlescape}'
285 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
285 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
286 graph = graph.tmpl
286 graph = graph.tmpl
287 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
287 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,232 +1,237 b''
1 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
1 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
2 a { color:#0000cc; }
2 a { color:#0000cc; }
3 a:hover, a:visited, a:active { color:#880000; }
3 a:hover, a:visited, a:active { color:#880000; }
4 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
4 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
5 div.page_header a:visited { color:#0000cc; }
5 div.page_header a:visited { color:#0000cc; }
6 div.page_header a:hover { color:#880000; }
6 div.page_header a:hover { color:#880000; }
7 div.page_nav { padding:8px; }
7 div.page_nav { padding:8px; }
8 div.page_nav a:visited { color:#0000cc; }
8 div.page_nav a:visited { color:#0000cc; }
9 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
9 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
10 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
10 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
11 div.page_footer_text { float:left; color:#555555; font-style:italic; }
11 div.page_footer_text { float:left; color:#555555; font-style:italic; }
12 div.page_body { padding:8px; }
12 div.page_body { padding:8px; }
13 div.title, a.title {
13 div.title, a.title {
14 display:block; padding:6px 8px;
14 display:block; padding:6px 8px;
15 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
15 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
16 }
16 }
17 a.title:hover { background-color: #d9d8d1; }
17 a.title:hover { background-color: #d9d8d1; }
18 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
18 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
19 div.log_body { padding:8px 8px 8px 150px; }
19 div.log_body { padding:8px 8px 8px 150px; }
20 .age { white-space:nowrap; }
20 .age { white-space:nowrap; }
21 span.age { position:relative; float:left; width:142px; font-style:italic; }
21 span.age { position:relative; float:left; width:142px; font-style:italic; }
22 div.log_link {
22 div.log_link {
23 padding:0px 8px;
23 padding:0px 8px;
24 font-size:10px; font-family:sans-serif; font-style:normal;
24 font-size:10px; font-family:sans-serif; font-style:normal;
25 position:relative; float:left; width:136px;
25 position:relative; float:left; width:136px;
26 }
26 }
27 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
27 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
28 a.list { text-decoration:none; color:#000000; }
28 a.list { text-decoration:none; color:#000000; }
29 a.list:hover { text-decoration:underline; color:#880000; }
29 a.list:hover { text-decoration:underline; color:#880000; }
30 table { padding:8px 4px; }
30 table { padding:8px 4px; }
31 th { padding:2px 5px; font-size:12px; text-align:left; }
31 th { padding:2px 5px; font-size:12px; text-align:left; }
32 tr.light:hover, .parity0:hover, pre.sourcelines.stripes > :nth-child(4n+1):hover { background-color:#edece6; }
32 tr.light:hover, .parity0:hover, pre.sourcelines.stripes > :nth-child(4n+1):hover { background-color:#edece6; }
33 tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+3) { background-color:#f6f6f0; }
33 tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+3) { background-color:#f6f6f0; }
34 tr.dark:hover, .parity1:hover, pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color:#edece6; }
34 tr.dark:hover, .parity1:hover, pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color:#edece6; }
35 td { padding:2px 5px; font-size:12px; vertical-align:top; }
35 td { padding:2px 5px; font-size:12px; vertical-align:top; }
36 td.closed { background-color: #99f; }
36 td.closed { background-color: #99f; }
37 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
37 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
38 td.indexlinks { white-space: nowrap; }
38 td.indexlinks { white-space: nowrap; }
39 td.indexlinks a {
39 td.indexlinks a {
40 padding: 2px 5px; line-height: 10px;
40 padding: 2px 5px; line-height: 10px;
41 border: 1px solid;
41 border: 1px solid;
42 color: #ffffff; background-color: #7777bb;
42 color: #ffffff; background-color: #7777bb;
43 border-color: #aaaadd #333366 #333366 #aaaadd;
43 border-color: #aaaadd #333366 #333366 #aaaadd;
44 font-weight: bold; text-align: center; text-decoration: none;
44 font-weight: bold; text-align: center; text-decoration: none;
45 font-size: 10px;
45 font-size: 10px;
46 }
46 }
47 td.indexlinks a:hover { background-color: #6666aa; }
47 td.indexlinks a:hover { background-color: #6666aa; }
48 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
48 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
49 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
49 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
50 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
50 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
51 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
51 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
52 .linenr { color:#999999; text-decoration:none }
52 .linenr { color:#999999; text-decoration:none }
53 div.rss_logo { float: right; white-space: nowrap; }
53 div.rss_logo { float: right; white-space: nowrap; }
54 div.rss_logo a {
54 div.rss_logo a {
55 padding:3px 6px; line-height:10px;
55 padding:3px 6px; line-height:10px;
56 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
56 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
57 color:#ffffff; background-color:#ff6600;
57 color:#ffffff; background-color:#ff6600;
58 font-weight:bold; font-family:sans-serif; font-size:10px;
58 font-weight:bold; font-family:sans-serif; font-size:10px;
59 text-align:center; text-decoration:none;
59 text-align:center; text-decoration:none;
60 }
60 }
61 div.rss_logo a:hover { background-color:#ee5500; }
61 div.rss_logo a:hover { background-color:#ee5500; }
62 pre { margin: 0; }
62 pre { margin: 0; }
63 span.logtags span {
63 span.logtags span {
64 padding: 0px 4px;
64 padding: 0px 4px;
65 font-size: 10px;
65 font-size: 10px;
66 font-weight: normal;
66 font-weight: normal;
67 border: 1px solid;
67 border: 1px solid;
68 background-color: #ffaaff;
68 background-color: #ffaaff;
69 border-color: #ffccff #ff00ee #ff00ee #ffccff;
69 border-color: #ffccff #ff00ee #ff00ee #ffccff;
70 }
70 }
71 span.logtags span.tagtag {
71 span.logtags span.tagtag {
72 background-color: #ffffaa;
72 background-color: #ffffaa;
73 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
73 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
74 }
74 }
75 span.logtags span.branchtag {
75 span.logtags span.branchtag {
76 background-color: #aaffaa;
76 background-color: #aaffaa;
77 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
77 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
78 }
78 }
79 span.logtags span.inbranchtag {
79 span.logtags span.inbranchtag {
80 background-color: #d5dde6;
80 background-color: #d5dde6;
81 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
81 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
82 }
82 }
83 span.logtags span.bookmarktag {
83 span.logtags span.bookmarktag {
84 background-color: #afdffa;
84 background-color: #afdffa;
85 border-color: #ccecff #46ace6 #46ace6 #ccecff;
85 border-color: #ccecff #46ace6 #46ace6 #ccecff;
86 }
86 }
87 span.difflineplus { color:#008800; }
87 span.difflineplus { color:#008800; }
88 span.difflineminus { color:#cc0000; }
88 span.difflineminus { color:#cc0000; }
89 span.difflineat { color:#990099; }
89 span.difflineat { color:#990099; }
90 div.diffblocks { counter-reset: lineno; }
90 div.diffblocks { counter-reset: lineno; }
91 div.diffblock { counter-increment: lineno; }
91 div.diffblock { counter-increment: lineno; }
92 pre.sourcelines { position: relative; counter-reset: lineno; }
92 pre.sourcelines { position: relative; counter-reset: lineno; }
93 pre.sourcelines > span {
93 pre.sourcelines > span {
94 display: inline-block;
94 display: inline-block;
95 box-sizing: border-box;
95 box-sizing: border-box;
96 width: 100%;
96 width: 100%;
97 padding: 0 0 0 5em;
97 padding: 0 0 0 5em;
98 counter-increment: lineno;
98 counter-increment: lineno;
99 vertical-align: top;
99 vertical-align: top;
100 }
100 }
101 pre.sourcelines > span:before {
101 pre.sourcelines > span:before {
102 -moz-user-select: -moz-none;
102 -moz-user-select: -moz-none;
103 -khtml-user-select: none;
103 -khtml-user-select: none;
104 -webkit-user-select: none;
104 -webkit-user-select: none;
105 -ms-user-select: none;
105 -ms-user-select: none;
106 user-select: none;
106 user-select: none;
107 display: inline-block;
107 display: inline-block;
108 margin-left: -5em;
108 margin-left: -5em;
109 width: 4em;
109 width: 4em;
110 color: #999;
110 color: #999;
111 text-align: right;
111 text-align: right;
112 content: counters(lineno,".");
112 content: counters(lineno,".");
113 float: left;
113 float: left;
114 }
114 }
115 pre.sourcelines > a {
115 pre.sourcelines > a {
116 display: inline-block;
116 display: inline-block;
117 position: absolute;
117 position: absolute;
118 left: 0px;
118 left: 0px;
119 width: 4em;
119 width: 4em;
120 height: 1em;
120 height: 1em;
121 }
121 }
122 tr:target td,
123 pre.sourcelines > span:target,
124 pre.sourcelines.stripes > span:target {
125 background-color: #bfdfff;
126 }
122
127
123 /* Graph */
128 /* Graph */
124 div#wrapper {
129 div#wrapper {
125 position: relative;
130 position: relative;
126 margin: 0;
131 margin: 0;
127 padding: 0;
132 padding: 0;
128 margin-top: 3px;
133 margin-top: 3px;
129 }
134 }
130
135
131 canvas {
136 canvas {
132 position: absolute;
137 position: absolute;
133 z-index: 5;
138 z-index: 5;
134 top: -0.9em;
139 top: -0.9em;
135 margin: 0;
140 margin: 0;
136 }
141 }
137
142
138 ul#nodebgs {
143 ul#nodebgs {
139 list-style: none inside none;
144 list-style: none inside none;
140 padding: 0;
145 padding: 0;
141 margin: 0;
146 margin: 0;
142 top: -0.7em;
147 top: -0.7em;
143 }
148 }
144
149
145 ul#graphnodes li, ul#nodebgs li {
150 ul#graphnodes li, ul#nodebgs li {
146 height: 39px;
151 height: 39px;
147 }
152 }
148
153
149 ul#graphnodes {
154 ul#graphnodes {
150 position: absolute;
155 position: absolute;
151 z-index: 10;
156 z-index: 10;
152 top: -0.8em;
157 top: -0.8em;
153 list-style: none inside none;
158 list-style: none inside none;
154 padding: 0;
159 padding: 0;
155 }
160 }
156
161
157 ul#graphnodes li .info {
162 ul#graphnodes li .info {
158 display: block;
163 display: block;
159 font-size: 100%;
164 font-size: 100%;
160 position: relative;
165 position: relative;
161 top: -3px;
166 top: -3px;
162 font-style: italic;
167 font-style: italic;
163 }
168 }
164
169
165 /* Comparison */
170 /* Comparison */
166 .legend {
171 .legend {
167 padding: 1.5% 0 1.5% 0;
172 padding: 1.5% 0 1.5% 0;
168 }
173 }
169
174
170 .legendinfo {
175 .legendinfo {
171 border: 1px solid #d9d8d1;
176 border: 1px solid #d9d8d1;
172 font-size: 80%;
177 font-size: 80%;
173 text-align: center;
178 text-align: center;
174 padding: 0.5%;
179 padding: 0.5%;
175 }
180 }
176
181
177 .equal {
182 .equal {
178 background-color: #ffffff;
183 background-color: #ffffff;
179 }
184 }
180
185
181 .delete {
186 .delete {
182 background-color: #faa;
187 background-color: #faa;
183 color: #333;
188 color: #333;
184 }
189 }
185
190
186 .insert {
191 .insert {
187 background-color: #ffa;
192 background-color: #ffa;
188 }
193 }
189
194
190 .replace {
195 .replace {
191 background-color: #e8e8e8;
196 background-color: #e8e8e8;
192 }
197 }
193
198
194 .comparison {
199 .comparison {
195 overflow-x: auto;
200 overflow-x: auto;
196 }
201 }
197
202
198 .header th {
203 .header th {
199 text-align: center;
204 text-align: center;
200 }
205 }
201
206
202 .block {
207 .block {
203 border-top: 1px solid #d9d8d1;
208 border-top: 1px solid #d9d8d1;
204 }
209 }
205
210
206 .scroll-loading {
211 .scroll-loading {
207 -webkit-animation: change_color 1s linear 0s infinite alternate;
212 -webkit-animation: change_color 1s linear 0s infinite alternate;
208 -moz-animation: change_color 1s linear 0s infinite alternate;
213 -moz-animation: change_color 1s linear 0s infinite alternate;
209 -o-animation: change_color 1s linear 0s infinite alternate;
214 -o-animation: change_color 1s linear 0s infinite alternate;
210 animation: change_color 1s linear 0s infinite alternate;
215 animation: change_color 1s linear 0s infinite alternate;
211 }
216 }
212
217
213 @-webkit-keyframes change_color {
218 @-webkit-keyframes change_color {
214 from { background-color: #A0CEFF; } to { }
219 from { background-color: #A0CEFF; } to { }
215 }
220 }
216 @-moz-keyframes change_color {
221 @-moz-keyframes change_color {
217 from { background-color: #A0CEFF; } to { }
222 from { background-color: #A0CEFF; } to { }
218 }
223 }
219 @-o-keyframes change_color {
224 @-o-keyframes change_color {
220 from { background-color: #A0CEFF; } to { }
225 from { background-color: #A0CEFF; } to { }
221 }
226 }
222 @keyframes change_color {
227 @keyframes change_color {
223 from { background-color: #A0CEFF; } to { }
228 from { background-color: #A0CEFF; } to { }
224 }
229 }
225
230
226 .scroll-loading-error {
231 .scroll-loading-error {
227 background-color: #FFCCCC !important;
232 background-color: #FFCCCC !important;
228 }
233 }
229
234
230 #doc {
235 #doc {
231 margin: 0 8px;
236 margin: 0 8px;
232 }
237 }
@@ -1,545 +1,550 b''
1 /*** Initial Settings ***/
1 /*** Initial Settings ***/
2 * {
2 * {
3 margin: 0;
3 margin: 0;
4 padding: 0;
4 padding: 0;
5 font-weight: normal;
5 font-weight: normal;
6 font-style: normal;
6 font-style: normal;
7 }
7 }
8
8
9 html {
9 html {
10 font-size: 100%;
10 font-size: 100%;
11 font-family: sans-serif;
11 font-family: sans-serif;
12 }
12 }
13
13
14 body {
14 body {
15 font-size: 77%;
15 font-size: 77%;
16 margin: 15px 50px;
16 margin: 15px 50px;
17 background: #4B4B4C;
17 background: #4B4B4C;
18 }
18 }
19
19
20 a {
20 a {
21 color:#0000cc;
21 color:#0000cc;
22 text-decoration: none;
22 text-decoration: none;
23 }
23 }
24 /*** end of Initial Settings ***/
24 /*** end of Initial Settings ***/
25
25
26
26
27 /** common settings **/
27 /** common settings **/
28 div#container {
28 div#container {
29 background: #FFFFFF;
29 background: #FFFFFF;
30 position: relative;
30 position: relative;
31 color: #666;
31 color: #666;
32 }
32 }
33
33
34 div.page-header {
34 div.page-header {
35 padding: 50px 20px 0;
35 padding: 50px 20px 0;
36 background: #006699 top left repeat-x;
36 background: #006699 top left repeat-x;
37 position: relative;
37 position: relative;
38 }
38 }
39 div.page-header h1 {
39 div.page-header h1 {
40 margin: 10px 0 30px;
40 margin: 10px 0 30px;
41 font-size: 1.8em;
41 font-size: 1.8em;
42 font-weight: bold;
42 font-weight: bold;
43 font-family: osaka,'MS P Gothic', Georgia, serif;
43 font-family: osaka,'MS P Gothic', Georgia, serif;
44 letter-spacing: 1px;
44 letter-spacing: 1px;
45 color: #DDD;
45 color: #DDD;
46 }
46 }
47 div.page-header h1 a {
47 div.page-header h1 a {
48 font-weight: bold;
48 font-weight: bold;
49 color: #FFF;
49 color: #FFF;
50 }
50 }
51 div.page-header a {
51 div.page-header a {
52 text-decoration: none;
52 text-decoration: none;
53 }
53 }
54
54
55 div.page-header form {
55 div.page-header form {
56 float: right;
56 float: right;
57 margin-top: -2px;
57 margin-top: -2px;
58 }
58 }
59 div.page-header form label {
59 div.page-header form label {
60 color: #DDD;
60 color: #DDD;
61 }
61 }
62 div.page-header form input {
62 div.page-header form input {
63 padding: 2px;
63 padding: 2px;
64 border: solid 1px #DDD;
64 border: solid 1px #DDD;
65 }
65 }
66 div.page-header form dl {
66 div.page-header form dl {
67 overflow: hidden;
67 overflow: hidden;
68 }
68 }
69 div.page-header form dl dt {
69 div.page-header form dl dt {
70 font-size: 1.2em;
70 font-size: 1.2em;
71 }
71 }
72 div.page-header form dl dt,
72 div.page-header form dl dt,
73 div.page-header form dl dd {
73 div.page-header form dl dd {
74 margin: 0 0 0 5px;
74 margin: 0 0 0 5px;
75 float: left;
75 float: left;
76 height: 24px;
76 height: 24px;
77 line-height: 20px;
77 line-height: 20px;
78 }
78 }
79
79
80 ul.page-nav {
80 ul.page-nav {
81 margin: 10px 0 0 0;
81 margin: 10px 0 0 0;
82 list-style-type: none;
82 list-style-type: none;
83 overflow: hidden;
83 overflow: hidden;
84 }
84 }
85 ul.page-nav li {
85 ul.page-nav li {
86 margin: 0 2px 0 0;
86 margin: 0 2px 0 0;
87 float: left;
87 float: left;
88 width: 80px;
88 width: 80px;
89 height: 24px;
89 height: 24px;
90 font-size: 1.1em;
90 font-size: 1.1em;
91 line-height: 24px;
91 line-height: 24px;
92 text-align: center;
92 text-align: center;
93 }
93 }
94 ul.page-nav li.current {
94 ul.page-nav li.current {
95 background: #FFF;
95 background: #FFF;
96 }
96 }
97 ul.page-nav li a {
97 ul.page-nav li a {
98 height: 24px;
98 height: 24px;
99 color: #666;
99 color: #666;
100 background: #DDD;
100 background: #DDD;
101 display: block;
101 display: block;
102 text-decoration: none;
102 text-decoration: none;
103 }
103 }
104 ul.page-nav li a:hover {
104 ul.page-nav li a:hover {
105 color:#333;
105 color:#333;
106 background: #FFF;
106 background: #FFF;
107 }
107 }
108
108
109 ul.submenu {
109 ul.submenu {
110 margin: 10px 0 -10px 20px;
110 margin: 10px 0 -10px 20px;
111 list-style-type: none;
111 list-style-type: none;
112 }
112 }
113 ul.submenu li {
113 ul.submenu li {
114 margin: 0 10px 0 0;
114 margin: 0 10px 0 0;
115 font-size: 1.2em;
115 font-size: 1.2em;
116 display: inline;
116 display: inline;
117 }
117 }
118
118
119 h2 {
119 h2 {
120 margin: 20px 0 10px;
120 margin: 20px 0 10px;
121 height: 30px;
121 height: 30px;
122 line-height: 30px;
122 line-height: 30px;
123 text-indent: 20px;
123 text-indent: 20px;
124 background: #FFF;
124 background: #FFF;
125 font-size: 1.2em;
125 font-size: 1.2em;
126 border-top: dotted 1px #D5E1E6;
126 border-top: dotted 1px #D5E1E6;
127 font-weight: bold;
127 font-weight: bold;
128 }
128 }
129 h2.no-link {
129 h2.no-link {
130 color:#006699;
130 color:#006699;
131 }
131 }
132 h2.no-border {
132 h2.no-border {
133 color: #FFF;
133 color: #FFF;
134 background: #006699;
134 background: #006699;
135 border: 0;
135 border: 0;
136 }
136 }
137 h2 a {
137 h2 a {
138 font-weight:bold;
138 font-weight:bold;
139 color:#006699;
139 color:#006699;
140 }
140 }
141
141
142 div.page-path {
142 div.page-path {
143 text-align: right;
143 text-align: right;
144 padding: 20px 30px 10px 0;
144 padding: 20px 30px 10px 0;
145 border:solid #d9d8d1;
145 border:solid #d9d8d1;
146 border-width:0px 0px 1px;
146 border-width:0px 0px 1px;
147 font-size: 1.2em;
147 font-size: 1.2em;
148 }
148 }
149
149
150 div.page-footer {
150 div.page-footer {
151 margin: 50px 0 0;
151 margin: 50px 0 0;
152 position: relative;
152 position: relative;
153 }
153 }
154 div.page-footer p {
154 div.page-footer p {
155 position: relative;
155 position: relative;
156 padding-left: 20px;
156 padding-left: 20px;
157 bottom: 5px;
157 bottom: 5px;
158 font-size: 1.2em;
158 font-size: 1.2em;
159 }
159 }
160
160
161 ul.rss-logo {
161 ul.rss-logo {
162 position: absolute;
162 position: absolute;
163 top: -10px;
163 top: -10px;
164 right: 20px;
164 right: 20px;
165 height: 20px;
165 height: 20px;
166 list-style-type: none;
166 list-style-type: none;
167 }
167 }
168 ul.rss-logo li {
168 ul.rss-logo li {
169 display: inline;
169 display: inline;
170 }
170 }
171 ul.rss-logo li a {
171 ul.rss-logo li a {
172 padding: 3px 6px;
172 padding: 3px 6px;
173 line-height: 10px;
173 line-height: 10px;
174 border:1px solid;
174 border:1px solid;
175 border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
175 border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
176 color:#ffffff;
176 color:#ffffff;
177 background-color:#ff6600;
177 background-color:#ff6600;
178 font-weight:bold;
178 font-weight:bold;
179 font-family:sans-serif;
179 font-family:sans-serif;
180 font-size:10px;
180 font-size:10px;
181 text-align:center;
181 text-align:center;
182 text-decoration:none;
182 text-decoration:none;
183 }
183 }
184 div.rss-logo li a:hover {
184 div.rss-logo li a:hover {
185 background-color:#ee5500;
185 background-color:#ee5500;
186 }
186 }
187
187
188 p.normal {
188 p.normal {
189 margin: 20px 0 20px 30px;
189 margin: 20px 0 20px 30px;
190 font-size: 1.2em;
190 font-size: 1.2em;
191 }
191 }
192
192
193 table {
193 table {
194 margin: 10px 0 0 20px;
194 margin: 10px 0 0 20px;
195 width: 95%;
195 width: 95%;
196 border-collapse: collapse;
196 border-collapse: collapse;
197 }
197 }
198 table tr td {
198 table tr td {
199 font-size: 1.1em;
199 font-size: 1.1em;
200 }
200 }
201 table tr td.nowrap {
201 table tr td.nowrap {
202 white-space: nowrap;
202 white-space: nowrap;
203 }
203 }
204 table tr td.closed {
204 table tr td.closed {
205 background-color: #99f;
205 background-color: #99f;
206 }
206 }
207 /*
207 /*
208 table tr.parity0:hover,
208 table tr.parity0:hover,
209 table tr.parity1:hover {
209 table tr.parity1:hover {
210 background: #D5E1E6;
210 background: #D5E1E6;
211 }
211 }
212 */
212 */
213 table tr.parity0 {
213 table tr.parity0 {
214 background: #F1F6F7;
214 background: #F1F6F7;
215 }
215 }
216 table tr.parity1 {
216 table tr.parity1 {
217 background: #FFFFFF;
217 background: #FFFFFF;
218 }
218 }
219 table tr td {
219 table tr td {
220 padding: 5px 5px;
220 padding: 5px 5px;
221 }
221 }
222 table.annotated tr td {
222 table.annotated tr td {
223 padding: 0px 5px;
223 padding: 0px 5px;
224 }
224 }
225
225
226 span.logtags span {
226 span.logtags span {
227 padding: 2px 6px;
227 padding: 2px 6px;
228 font-weight: normal;
228 font-weight: normal;
229 font-size: 11px;
229 font-size: 11px;
230 border: 1px solid;
230 border: 1px solid;
231 background-color: #ffaaff;
231 background-color: #ffaaff;
232 border-color: #ffccff #ff00ee #ff00ee #ffccff;
232 border-color: #ffccff #ff00ee #ff00ee #ffccff;
233 }
233 }
234 span.logtags span.tagtag {
234 span.logtags span.tagtag {
235 background-color: #ffffaa;
235 background-color: #ffffaa;
236 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
236 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
237 }
237 }
238 span.logtags span.branchtag {
238 span.logtags span.branchtag {
239 background-color: #aaffaa;
239 background-color: #aaffaa;
240 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
240 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
241 }
241 }
242 span.logtags span.inbranchtag {
242 span.logtags span.inbranchtag {
243 background-color: #d5dde6;
243 background-color: #d5dde6;
244 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
244 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
245 }
245 }
246 span.logtags span.bookmarktag {
246 span.logtags span.bookmarktag {
247 background-color: #afdffa;
247 background-color: #afdffa;
248 border-color: #ccecff #46ace6 #46ace6 #ccecff;
248 border-color: #ccecff #46ace6 #46ace6 #ccecff;
249 }
249 }
250
250
251 div.diff pre {
251 div.diff pre {
252 margin: 10px 0 0 0;
252 margin: 10px 0 0 0;
253 }
253 }
254 div.diff pre span {
254 div.diff pre span {
255 font-family: monospace;
255 font-family: monospace;
256 white-space: pre;
256 white-space: pre;
257 font-size: 1.2em;
257 font-size: 1.2em;
258 }
258 }
259 div.diffblocks { counter-reset: lineno; }
259 div.diffblocks { counter-reset: lineno; }
260 div.diffblock { counter-increment: lineno; }
260 div.diffblock { counter-increment: lineno; }
261 span.difflineplus { color:#008800; }
261 span.difflineplus { color:#008800; }
262 span.difflineminus { color:#cc0000; }
262 span.difflineminus { color:#cc0000; }
263 span.difflineat { color:#990099; }
263 span.difflineat { color:#990099; }
264
264
265 pre.sourcelines { position: relative; counter-reset: lineno; }
265 pre.sourcelines { position: relative; counter-reset: lineno; }
266 pre.sourcelines > span {
266 pre.sourcelines > span {
267 display: inline-block;
267 display: inline-block;
268 box-sizing: border-box;
268 box-sizing: border-box;
269 width: 100%;
269 width: 100%;
270 padding: 0 0 0 5em;
270 padding: 0 0 0 5em;
271 font-size: 1.2em;
271 font-size: 1.2em;
272 counter-increment: lineno;
272 counter-increment: lineno;
273 vertical-align: top;
273 vertical-align: top;
274 }
274 }
275 div.source > pre.sourcelines > span {
275 div.source > pre.sourcelines > span {
276 padding: 1px 1px 1px 5em;
276 padding: 1px 1px 1px 5em;
277 }
277 }
278 pre.sourcelines > span:before {
278 pre.sourcelines > span:before {
279 -moz-user-select: -moz-none;
279 -moz-user-select: -moz-none;
280 -khtml-user-select: none;
280 -khtml-user-select: none;
281 -webkit-user-select: none;
281 -webkit-user-select: none;
282 -ms-user-select: none;
282 -ms-user-select: none;
283 user-select: none;
283 user-select: none;
284 display: inline-block;
284 display: inline-block;
285 margin-left: -5em;
285 margin-left: -5em;
286 width: 4em;
286 width: 4em;
287 color: #999;
287 color: #999;
288 text-align: right;
288 text-align: right;
289 content: counters(lineno,".");
289 content: counters(lineno,".");
290 float: left;
290 float: left;
291 }
291 }
292 pre.sourcelines > a {
292 pre.sourcelines > a {
293 display: inline-block;
293 display: inline-block;
294 position: absolute;
294 position: absolute;
295 left: 0px;
295 left: 0px;
296 width: 4em;
296 width: 4em;
297 height: 1em;
297 height: 1em;
298 }
298 }
299 pre.sourcelines.stripes > :nth-child(4n+1) { background-color: #F1F6F7; }
299 pre.sourcelines.stripes > :nth-child(4n+1) { background-color: #F1F6F7; }
300 pre.sourcelines.stripes > :nth-child(4n+3) { background-color: #FFFFFF; }
300 pre.sourcelines.stripes > :nth-child(4n+3) { background-color: #FFFFFF; }
301 pre.sourcelines.stripes > :nth-child(4n+1):hover,
301 pre.sourcelines.stripes > :nth-child(4n+1):hover,
302 pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color: #D5E1E6; }
302 pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color: #D5E1E6; }
303 tr:target td,
304 pre.sourcelines > span:target,
305 pre.sourcelines.stripes > span:target {
306 background-color: #bfdfff;
307 }
303
308
304 td.source {
309 td.source {
305 white-space: pre;
310 white-space: pre;
306 margin: 10px 30px 0;
311 margin: 10px 30px 0;
307 font-size: 1.2em;
312 font-size: 1.2em;
308 font-family: monospace;
313 font-family: monospace;
309 }
314 }
310 .linenr {
315 .linenr {
311 color: #999;
316 color: #999;
312 text-align: right;
317 text-align: right;
313 }
318 }
314 .lineno {
319 .lineno {
315 text-align: right;
320 text-align: right;
316 }
321 }
317 .lineno a {
322 .lineno a {
318 color: #999;
323 color: #999;
319 }
324 }
320 td.linenr {
325 td.linenr {
321 width: 60px;
326 width: 60px;
322 }
327 }
323
328
324 div#powered-by {
329 div#powered-by {
325 position: absolute;
330 position: absolute;
326 width: 75px;
331 width: 75px;
327 top: 15px;
332 top: 15px;
328 right: 20px;
333 right: 20px;
329 font-size: 1.2em;
334 font-size: 1.2em;
330 }
335 }
331 div#powered-by a {
336 div#powered-by a {
332 color: #EEE;
337 color: #EEE;
333 text-decoration: none;
338 text-decoration: none;
334 }
339 }
335 div#powered-by a:hover {
340 div#powered-by a:hover {
336 text-decoration: underline;
341 text-decoration: underline;
337 }
342 }
338 /** end of common settings **/
343 /** end of common settings **/
339
344
340 /** summary **/
345 /** summary **/
341 dl.overview {
346 dl.overview {
342 margin: 0 0 0 30px;
347 margin: 0 0 0 30px;
343 font-size: 1.1em;
348 font-size: 1.1em;
344 overflow: hidden;
349 overflow: hidden;
345 }
350 }
346 dl.overview dt,
351 dl.overview dt,
347 dl.overview dd {
352 dl.overview dd {
348 margin: 5px 0;
353 margin: 5px 0;
349 float: left;
354 float: left;
350 }
355 }
351 dl.overview dt {
356 dl.overview dt {
352 clear: left;
357 clear: left;
353 font-weight: bold;
358 font-weight: bold;
354 width: 150px;
359 width: 150px;
355 }
360 }
356 /** end of summary **/
361 /** end of summary **/
357
362
358 /** chagelog **/
363 /** chagelog **/
359 h3.changelog {
364 h3.changelog {
360 margin: 20px 0 5px 30px;
365 margin: 20px 0 5px 30px;
361 padding: 0 0 2px;
366 padding: 0 0 2px;
362 font-size: 1.4em;
367 font-size: 1.4em;
363 border-bottom: dotted 1px #D5E1E6;
368 border-bottom: dotted 1px #D5E1E6;
364 }
369 }
365 ul.changelog-entry {
370 ul.changelog-entry {
366 margin: 0 0 10px 30px;
371 margin: 0 0 10px 30px;
367 list-style-type: none;
372 list-style-type: none;
368 position: relative;
373 position: relative;
369 }
374 }
370 ul.changelog-entry li span.revdate {
375 ul.changelog-entry li span.revdate {
371 font-size: 1.1em;
376 font-size: 1.1em;
372 }
377 }
373 ul.changelog-entry li.age {
378 ul.changelog-entry li.age {
374 position: absolute;
379 position: absolute;
375 top: -25px;
380 top: -25px;
376 right: 10px;
381 right: 10px;
377 font-size: 1.4em;
382 font-size: 1.4em;
378 color: #CCC;
383 color: #CCC;
379 font-weight: bold;
384 font-weight: bold;
380 font-style: italic;
385 font-style: italic;
381 }
386 }
382 ul.changelog-entry li span.name {
387 ul.changelog-entry li span.name {
383 font-size: 1.2em;
388 font-size: 1.2em;
384 font-weight: bold;
389 font-weight: bold;
385 }
390 }
386 ul.changelog-entry li.description {
391 ul.changelog-entry li.description {
387 margin: 10px 0 0;
392 margin: 10px 0 0;
388 font-size: 1.1em;
393 font-size: 1.1em;
389 }
394 }
390 /** end of changelog **/
395 /** end of changelog **/
391
396
392 /** file **/
397 /** file **/
393 p.files {
398 p.files {
394 margin: 0 0 0 20px;
399 margin: 0 0 0 20px;
395 font-size: 2.0em;
400 font-size: 2.0em;
396 font-weight: bold;
401 font-weight: bold;
397 }
402 }
398 /** end of file **/
403 /** end of file **/
399
404
400 /** changeset **/
405 /** changeset **/
401 h3.changeset {
406 h3.changeset {
402 margin: 20px 0 5px 20px;
407 margin: 20px 0 5px 20px;
403 padding: 0 0 2px;
408 padding: 0 0 2px;
404 font-size: 1.6em;
409 font-size: 1.6em;
405 border-bottom: dotted 1px #D5E1E6;
410 border-bottom: dotted 1px #D5E1E6;
406 }
411 }
407 p.changeset-age {
412 p.changeset-age {
408 position: relative;
413 position: relative;
409 }
414 }
410 p.changeset-age span {
415 p.changeset-age span {
411 position: absolute;
416 position: absolute;
412 top: -25px;
417 top: -25px;
413 right: 10px;
418 right: 10px;
414 font-size: 1.4em;
419 font-size: 1.4em;
415 color: #CCC;
420 color: #CCC;
416 font-weight: bold;
421 font-weight: bold;
417 font-style: italic;
422 font-style: italic;
418 }
423 }
419 p.description {
424 p.description {
420 margin: 10px 30px 0 30px;
425 margin: 10px 30px 0 30px;
421 padding: 10px;
426 padding: 10px;
422 border: solid 1px #CCC;
427 border: solid 1px #CCC;
423 font-size: 1.2em;
428 font-size: 1.2em;
424 }
429 }
425 /** end of changeset **/
430 /** end of changeset **/
426
431
427 /** canvas **/
432 /** canvas **/
428 div#wrapper {
433 div#wrapper {
429 position: relative;
434 position: relative;
430 font-size: 1.2em;
435 font-size: 1.2em;
431 }
436 }
432
437
433 canvas {
438 canvas {
434 position: absolute;
439 position: absolute;
435 z-index: 5;
440 z-index: 5;
436 top: -0.7em;
441 top: -0.7em;
437 }
442 }
438
443
439 ul#nodebgs li.parity0 {
444 ul#nodebgs li.parity0 {
440 background: #F1F6F7;
445 background: #F1F6F7;
441 }
446 }
442
447
443 ul#nodebgs li.parity1 {
448 ul#nodebgs li.parity1 {
444 background: #FFFFFF;
449 background: #FFFFFF;
445 }
450 }
446
451
447 ul#graphnodes {
452 ul#graphnodes {
448 position: absolute;
453 position: absolute;
449 z-index: 10;
454 z-index: 10;
450 top: 7px;
455 top: 7px;
451 list-style: none inside none;
456 list-style: none inside none;
452 }
457 }
453
458
454 ul#nodebgs {
459 ul#nodebgs {
455 list-style: none inside none;
460 list-style: none inside none;
456 }
461 }
457
462
458 ul#graphnodes li, ul#nodebgs li {
463 ul#graphnodes li, ul#nodebgs li {
459 height: 39px;
464 height: 39px;
460 }
465 }
461
466
462 ul#graphnodes li .info {
467 ul#graphnodes li .info {
463 display: block;
468 display: block;
464 position: relative;
469 position: relative;
465 }
470 }
466 /** end of canvas **/
471 /** end of canvas **/
467
472
468 /** comparison **/
473 /** comparison **/
469 .legend {
474 .legend {
470 margin-left: 20px;
475 margin-left: 20px;
471 padding: 1.5% 0 1.5% 0;
476 padding: 1.5% 0 1.5% 0;
472 }
477 }
473
478
474 .legendinfo {
479 .legendinfo {
475 border: 1px solid #999;
480 border: 1px solid #999;
476 font-size: 80%;
481 font-size: 80%;
477 text-align: center;
482 text-align: center;
478 padding: 0.5%;
483 padding: 0.5%;
479 }
484 }
480
485
481 .equal {
486 .equal {
482 background-color: #ffffff;
487 background-color: #ffffff;
483 }
488 }
484
489
485 .delete {
490 .delete {
486 background-color: #faa;
491 background-color: #faa;
487 color: #333;
492 color: #333;
488 }
493 }
489
494
490 .insert {
495 .insert {
491 background-color: #ffa;
496 background-color: #ffa;
492 }
497 }
493
498
494 .replace {
499 .replace {
495 background-color: #e8e8e8;
500 background-color: #e8e8e8;
496 }
501 }
497
502
498 .comparison {
503 .comparison {
499 overflow-x: auto;
504 overflow-x: auto;
500 }
505 }
501
506
502 .comparison table td {
507 .comparison table td {
503 padding: 0px 5px;
508 padding: 0px 5px;
504 }
509 }
505
510
506 .header th {
511 .header th {
507 font-weight: bold;
512 font-weight: bold;
508 }
513 }
509
514
510 .block {
515 .block {
511 border-top: 1px solid #999;
516 border-top: 1px solid #999;
512 }
517 }
513 /** end of comparison **/
518 /** end of comparison **/
514
519
515 .breadcrumb a:hover {
520 .breadcrumb a:hover {
516 text-decoration:underline;
521 text-decoration:underline;
517 }
522 }
518
523
519 .scroll-loading {
524 .scroll-loading {
520 -webkit-animation: change_color 1s linear 0s infinite alternate;
525 -webkit-animation: change_color 1s linear 0s infinite alternate;
521 -moz-animation: change_color 1s linear 0s infinite alternate;
526 -moz-animation: change_color 1s linear 0s infinite alternate;
522 -o-animation: change_color 1s linear 0s infinite alternate;
527 -o-animation: change_color 1s linear 0s infinite alternate;
523 animation: change_color 1s linear 0s infinite alternate;
528 animation: change_color 1s linear 0s infinite alternate;
524 }
529 }
525
530
526 @-webkit-keyframes change_color {
531 @-webkit-keyframes change_color {
527 from { background-color: #A0CEFF; } to { }
532 from { background-color: #A0CEFF; } to { }
528 }
533 }
529 @-moz-keyframes change_color {
534 @-moz-keyframes change_color {
530 from { background-color: #A0CEFF; } to { }
535 from { background-color: #A0CEFF; } to { }
531 }
536 }
532 @-o-keyframes change_color {
537 @-o-keyframes change_color {
533 from { background-color: #A0CEFF; } to { }
538 from { background-color: #A0CEFF; } to { }
534 }
539 }
535 @keyframes change_color {
540 @keyframes change_color {
536 from { background-color: #A0CEFF; } to { }
541 from { background-color: #A0CEFF; } to { }
537 }
542 }
538
543
539 .scroll-loading-error {
544 .scroll-loading-error {
540 background-color: #FFCCCC !important;
545 background-color: #FFCCCC !important;
541 }
546 }
542
547
543 #doc {
548 #doc {
544 margin: 0 30px;
549 margin: 0 30px;
545 }
550 }
@@ -1,722 +1,727 b''
1 #require serve
1 #require serve
2
2
3 Some tests for hgweb. Tests static files, plain files and different 404's.
3 Some tests for hgweb. Tests static files, plain files and different 404's.
4
4
5 $ hg init test
5 $ hg init test
6 $ cd test
6 $ cd test
7 $ mkdir da
7 $ mkdir da
8 $ echo foo > da/foo
8 $ echo foo > da/foo
9 $ echo foo > foo
9 $ echo foo > foo
10 $ hg ci -Ambase
10 $ hg ci -Ambase
11 adding da/foo
11 adding da/foo
12 adding foo
12 adding foo
13 $ hg bookmark -r0 '@'
13 $ hg bookmark -r0 '@'
14 $ hg bookmark -r0 'a b c'
14 $ hg bookmark -r0 'a b c'
15 $ hg bookmark -r0 'd/e/f'
15 $ hg bookmark -r0 'd/e/f'
16 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
16 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
17 $ cat hg.pid >> $DAEMON_PIDS
17 $ cat hg.pid >> $DAEMON_PIDS
18
18
19 manifest
19 manifest
20
20
21 $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=raw')
21 $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=raw')
22 200 Script output follows
22 200 Script output follows
23
23
24
24
25 drwxr-xr-x da
25 drwxr-xr-x da
26 -rw-r--r-- 4 foo
26 -rw-r--r-- 4 foo
27
27
28
28
29 $ (get-with-headers.py localhost:$HGPORT 'file/tip/da?style=raw')
29 $ (get-with-headers.py localhost:$HGPORT 'file/tip/da?style=raw')
30 200 Script output follows
30 200 Script output follows
31
31
32
32
33 -rw-r--r-- 4 foo
33 -rw-r--r-- 4 foo
34
34
35
35
36
36
37 plain file
37 plain file
38
38
39 $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?style=raw'
39 $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?style=raw'
40 200 Script output follows
40 200 Script output follows
41
41
42 foo
42 foo
43
43
44 should give a 404 - static file that does not exist
44 should give a 404 - static file that does not exist
45
45
46 $ get-with-headers.py localhost:$HGPORT 'static/bogus'
46 $ get-with-headers.py localhost:$HGPORT 'static/bogus'
47 404 Not Found
47 404 Not Found
48
48
49 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
49 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
50 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
50 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
51 <head>
51 <head>
52 <link rel="icon" href="/static/hgicon.png" type="image/png" />
52 <link rel="icon" href="/static/hgicon.png" type="image/png" />
53 <meta name="robots" content="index, nofollow" />
53 <meta name="robots" content="index, nofollow" />
54 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
54 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
55 <script type="text/javascript" src="/static/mercurial.js"></script>
55 <script type="text/javascript" src="/static/mercurial.js"></script>
56
56
57 <title>test: error</title>
57 <title>test: error</title>
58 </head>
58 </head>
59 <body>
59 <body>
60
60
61 <div class="container">
61 <div class="container">
62 <div class="menu">
62 <div class="menu">
63 <div class="logo">
63 <div class="logo">
64 <a href="http://mercurial.selenic.com/">
64 <a href="http://mercurial.selenic.com/">
65 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
65 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
66 </div>
66 </div>
67 <ul>
67 <ul>
68 <li><a href="/shortlog">log</a></li>
68 <li><a href="/shortlog">log</a></li>
69 <li><a href="/graph">graph</a></li>
69 <li><a href="/graph">graph</a></li>
70 <li><a href="/tags">tags</a></li>
70 <li><a href="/tags">tags</a></li>
71 <li><a href="/bookmarks">bookmarks</a></li>
71 <li><a href="/bookmarks">bookmarks</a></li>
72 <li><a href="/branches">branches</a></li>
72 <li><a href="/branches">branches</a></li>
73 </ul>
73 </ul>
74 <ul>
74 <ul>
75 <li><a href="/help">help</a></li>
75 <li><a href="/help">help</a></li>
76 </ul>
76 </ul>
77 </div>
77 </div>
78
78
79 <div class="main">
79 <div class="main">
80
80
81 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
81 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
82 <h3>error</h3>
82 <h3>error</h3>
83
83
84 <form class="search" action="/log">
84 <form class="search" action="/log">
85
85
86 <p><input name="rev" id="search1" type="text" size="30"></p>
86 <p><input name="rev" id="search1" type="text" size="30"></p>
87 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
87 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
88 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
88 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
89 </form>
89 </form>
90
90
91 <div class="description">
91 <div class="description">
92 <p>
92 <p>
93 An error occurred while processing your request:
93 An error occurred while processing your request:
94 </p>
94 </p>
95 <p>
95 <p>
96 Not Found
96 Not Found
97 </p>
97 </p>
98 </div>
98 </div>
99 </div>
99 </div>
100 </div>
100 </div>
101
101
102 <script type="text/javascript">process_dates()</script>
102 <script type="text/javascript">process_dates()</script>
103
103
104
104
105 </body>
105 </body>
106 </html>
106 </html>
107
107
108 [1]
108 [1]
109
109
110 should give a 404 - bad revision
110 should give a 404 - bad revision
111
111
112 $ get-with-headers.py localhost:$HGPORT 'file/spam/foo?style=raw'
112 $ get-with-headers.py localhost:$HGPORT 'file/spam/foo?style=raw'
113 404 Not Found
113 404 Not Found
114
114
115
115
116 error: revision not found: spam
116 error: revision not found: spam
117 [1]
117 [1]
118
118
119 should give a 400 - bad command
119 should give a 400 - bad command
120
120
121 $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
121 $ get-with-headers.py localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
122 400* (glob)
122 400* (glob)
123
123
124
124
125 error: no such method: spam
125 error: no such method: spam
126 [1]
126 [1]
127
127
128 $ get-with-headers.py --headeronly localhost:$HGPORT '?cmd=spam'
128 $ get-with-headers.py --headeronly localhost:$HGPORT '?cmd=spam'
129 400 no such method: spam
129 400 no such method: spam
130 [1]
130 [1]
131
131
132 should give a 400 - bad command as a part of url path (issue4071)
132 should give a 400 - bad command as a part of url path (issue4071)
133
133
134 $ get-with-headers.py --headeronly localhost:$HGPORT 'spam'
134 $ get-with-headers.py --headeronly localhost:$HGPORT 'spam'
135 400 no such method: spam
135 400 no such method: spam
136 [1]
136 [1]
137
137
138 $ get-with-headers.py --headeronly localhost:$HGPORT 'raw-spam'
138 $ get-with-headers.py --headeronly localhost:$HGPORT 'raw-spam'
139 400 no such method: spam
139 400 no such method: spam
140 [1]
140 [1]
141
141
142 $ get-with-headers.py --headeronly localhost:$HGPORT 'spam/tip/foo'
142 $ get-with-headers.py --headeronly localhost:$HGPORT 'spam/tip/foo'
143 400 no such method: spam
143 400 no such method: spam
144 [1]
144 [1]
145
145
146 should give a 404 - file does not exist
146 should give a 404 - file does not exist
147
147
148 $ get-with-headers.py localhost:$HGPORT 'file/tip/bork?style=raw'
148 $ get-with-headers.py localhost:$HGPORT 'file/tip/bork?style=raw'
149 404 Not Found
149 404 Not Found
150
150
151
151
152 error: bork@2ef0ac749a14: not found in manifest
152 error: bork@2ef0ac749a14: not found in manifest
153 [1]
153 [1]
154 $ get-with-headers.py localhost:$HGPORT 'file/tip/bork'
154 $ get-with-headers.py localhost:$HGPORT 'file/tip/bork'
155 404 Not Found
155 404 Not Found
156
156
157 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
157 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
158 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
158 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
159 <head>
159 <head>
160 <link rel="icon" href="/static/hgicon.png" type="image/png" />
160 <link rel="icon" href="/static/hgicon.png" type="image/png" />
161 <meta name="robots" content="index, nofollow" />
161 <meta name="robots" content="index, nofollow" />
162 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
162 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
163 <script type="text/javascript" src="/static/mercurial.js"></script>
163 <script type="text/javascript" src="/static/mercurial.js"></script>
164
164
165 <title>test: error</title>
165 <title>test: error</title>
166 </head>
166 </head>
167 <body>
167 <body>
168
168
169 <div class="container">
169 <div class="container">
170 <div class="menu">
170 <div class="menu">
171 <div class="logo">
171 <div class="logo">
172 <a href="http://mercurial.selenic.com/">
172 <a href="http://mercurial.selenic.com/">
173 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
173 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
174 </div>
174 </div>
175 <ul>
175 <ul>
176 <li><a href="/shortlog">log</a></li>
176 <li><a href="/shortlog">log</a></li>
177 <li><a href="/graph">graph</a></li>
177 <li><a href="/graph">graph</a></li>
178 <li><a href="/tags">tags</a></li>
178 <li><a href="/tags">tags</a></li>
179 <li><a href="/bookmarks">bookmarks</a></li>
179 <li><a href="/bookmarks">bookmarks</a></li>
180 <li><a href="/branches">branches</a></li>
180 <li><a href="/branches">branches</a></li>
181 </ul>
181 </ul>
182 <ul>
182 <ul>
183 <li><a href="/help">help</a></li>
183 <li><a href="/help">help</a></li>
184 </ul>
184 </ul>
185 </div>
185 </div>
186
186
187 <div class="main">
187 <div class="main">
188
188
189 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
189 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
190 <h3>error</h3>
190 <h3>error</h3>
191
191
192 <form class="search" action="/log">
192 <form class="search" action="/log">
193
193
194 <p><input name="rev" id="search1" type="text" size="30"></p>
194 <p><input name="rev" id="search1" type="text" size="30"></p>
195 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
195 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
196 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
196 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
197 </form>
197 </form>
198
198
199 <div class="description">
199 <div class="description">
200 <p>
200 <p>
201 An error occurred while processing your request:
201 An error occurred while processing your request:
202 </p>
202 </p>
203 <p>
203 <p>
204 bork@2ef0ac749a14: not found in manifest
204 bork@2ef0ac749a14: not found in manifest
205 </p>
205 </p>
206 </div>
206 </div>
207 </div>
207 </div>
208 </div>
208 </div>
209
209
210 <script type="text/javascript">process_dates()</script>
210 <script type="text/javascript">process_dates()</script>
211
211
212
212
213 </body>
213 </body>
214 </html>
214 </html>
215
215
216 [1]
216 [1]
217 $ get-with-headers.py localhost:$HGPORT 'diff/tip/bork?style=raw'
217 $ get-with-headers.py localhost:$HGPORT 'diff/tip/bork?style=raw'
218 404 Not Found
218 404 Not Found
219
219
220
220
221 error: bork@2ef0ac749a14: not found in manifest
221 error: bork@2ef0ac749a14: not found in manifest
222 [1]
222 [1]
223
223
224 try bad style
224 try bad style
225
225
226 $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=foobar')
226 $ (get-with-headers.py localhost:$HGPORT 'file/tip/?style=foobar')
227 200 Script output follows
227 200 Script output follows
228
228
229 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
229 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
230 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
230 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
231 <head>
231 <head>
232 <link rel="icon" href="/static/hgicon.png" type="image/png" />
232 <link rel="icon" href="/static/hgicon.png" type="image/png" />
233 <meta name="robots" content="index, nofollow" />
233 <meta name="robots" content="index, nofollow" />
234 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
234 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
235 <script type="text/javascript" src="/static/mercurial.js"></script>
235 <script type="text/javascript" src="/static/mercurial.js"></script>
236
236
237 <title>test: 2ef0ac749a14 /</title>
237 <title>test: 2ef0ac749a14 /</title>
238 </head>
238 </head>
239 <body>
239 <body>
240
240
241 <div class="container">
241 <div class="container">
242 <div class="menu">
242 <div class="menu">
243 <div class="logo">
243 <div class="logo">
244 <a href="http://mercurial.selenic.com/">
244 <a href="http://mercurial.selenic.com/">
245 <img src="/static/hglogo.png" alt="mercurial" /></a>
245 <img src="/static/hglogo.png" alt="mercurial" /></a>
246 </div>
246 </div>
247 <ul>
247 <ul>
248 <li><a href="/shortlog/tip">log</a></li>
248 <li><a href="/shortlog/tip">log</a></li>
249 <li><a href="/graph/tip">graph</a></li>
249 <li><a href="/graph/tip">graph</a></li>
250 <li><a href="/tags">tags</a></li>
250 <li><a href="/tags">tags</a></li>
251 <li><a href="/bookmarks">bookmarks</a></li>
251 <li><a href="/bookmarks">bookmarks</a></li>
252 <li><a href="/branches">branches</a></li>
252 <li><a href="/branches">branches</a></li>
253 </ul>
253 </ul>
254 <ul>
254 <ul>
255 <li><a href="/rev/tip">changeset</a></li>
255 <li><a href="/rev/tip">changeset</a></li>
256 <li class="active">browse</li>
256 <li class="active">browse</li>
257 </ul>
257 </ul>
258 <ul>
258 <ul>
259
259
260 </ul>
260 </ul>
261 <ul>
261 <ul>
262 <li><a href="/help">help</a></li>
262 <li><a href="/help">help</a></li>
263 </ul>
263 </ul>
264 </div>
264 </div>
265
265
266 <div class="main">
266 <div class="main">
267 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
267 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
268 <h3>
268 <h3>
269 directory / @ 0:<a href="/rev/2ef0ac749a14">2ef0ac749a14</a>
269 directory / @ 0:<a href="/rev/2ef0ac749a14">2ef0ac749a14</a>
270 <span class="tag">tip</span> <span class="tag">@</span> <span class="tag">a b c</span> <span class="tag">d/e/f</span>
270 <span class="tag">tip</span> <span class="tag">@</span> <span class="tag">a b c</span> <span class="tag">d/e/f</span>
271 </h3>
271 </h3>
272
272
273 <form class="search" action="/log">
273 <form class="search" action="/log">
274
274
275 <p><input name="rev" id="search1" type="text" size="30" /></p>
275 <p><input name="rev" id="search1" type="text" size="30" /></p>
276 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
276 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
277 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
277 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
278 </form>
278 </form>
279
279
280 <table class="bigtable">
280 <table class="bigtable">
281 <thead>
281 <thead>
282 <tr>
282 <tr>
283 <th class="name">name</th>
283 <th class="name">name</th>
284 <th class="size">size</th>
284 <th class="size">size</th>
285 <th class="permissions">permissions</th>
285 <th class="permissions">permissions</th>
286 </tr>
286 </tr>
287 </thead>
287 </thead>
288 <tbody class="stripes2">
288 <tbody class="stripes2">
289 <tr class="fileline">
289 <tr class="fileline">
290 <td class="name"><a href="/file/tip/">[up]</a></td>
290 <td class="name"><a href="/file/tip/">[up]</a></td>
291 <td class="size"></td>
291 <td class="size"></td>
292 <td class="permissions">drwxr-xr-x</td>
292 <td class="permissions">drwxr-xr-x</td>
293 </tr>
293 </tr>
294
294
295 <tr class="fileline">
295 <tr class="fileline">
296 <td class="name">
296 <td class="name">
297 <a href="/file/tip/da">
297 <a href="/file/tip/da">
298 <img src="/static/coal-folder.png" alt="dir."/> da/
298 <img src="/static/coal-folder.png" alt="dir."/> da/
299 </a>
299 </a>
300 <a href="/file/tip/da/">
300 <a href="/file/tip/da/">
301
301
302 </a>
302 </a>
303 </td>
303 </td>
304 <td class="size"></td>
304 <td class="size"></td>
305 <td class="permissions">drwxr-xr-x</td>
305 <td class="permissions">drwxr-xr-x</td>
306 </tr>
306 </tr>
307
307
308 <tr class="fileline">
308 <tr class="fileline">
309 <td class="filename">
309 <td class="filename">
310 <a href="/file/tip/foo">
310 <a href="/file/tip/foo">
311 <img src="/static/coal-file.png" alt="file"/> foo
311 <img src="/static/coal-file.png" alt="file"/> foo
312 </a>
312 </a>
313 </td>
313 </td>
314 <td class="size">4</td>
314 <td class="size">4</td>
315 <td class="permissions">-rw-r--r--</td>
315 <td class="permissions">-rw-r--r--</td>
316 </tr>
316 </tr>
317 </tbody>
317 </tbody>
318 </table>
318 </table>
319 </div>
319 </div>
320 </div>
320 </div>
321 <script type="text/javascript">process_dates()</script>
321 <script type="text/javascript">process_dates()</script>
322
322
323
323
324 </body>
324 </body>
325 </html>
325 </html>
326
326
327
327
328 stop and restart
328 stop and restart
329
329
330 $ killdaemons.py
330 $ killdaemons.py
331 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
331 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
332 $ cat hg.pid >> $DAEMON_PIDS
332 $ cat hg.pid >> $DAEMON_PIDS
333
333
334 Test the access/error files are opened in append mode
334 Test the access/error files are opened in append mode
335
335
336 $ $PYTHON -c "print len(file('access.log').readlines()), 'log lines written'"
336 $ $PYTHON -c "print len(file('access.log').readlines()), 'log lines written'"
337 14 log lines written
337 14 log lines written
338
338
339 static file
339 static file
340
340
341 $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
341 $ get-with-headers.py --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
342 200 Script output follows
342 200 Script output follows
343 content-length: 6264
343 content-length: 6379
344 content-type: text/css
344 content-type: text/css
345
345
346 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
346 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
347 a { color:#0000cc; }
347 a { color:#0000cc; }
348 a:hover, a:visited, a:active { color:#880000; }
348 a:hover, a:visited, a:active { color:#880000; }
349 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
349 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
350 div.page_header a:visited { color:#0000cc; }
350 div.page_header a:visited { color:#0000cc; }
351 div.page_header a:hover { color:#880000; }
351 div.page_header a:hover { color:#880000; }
352 div.page_nav { padding:8px; }
352 div.page_nav { padding:8px; }
353 div.page_nav a:visited { color:#0000cc; }
353 div.page_nav a:visited { color:#0000cc; }
354 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
354 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
355 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
355 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
356 div.page_footer_text { float:left; color:#555555; font-style:italic; }
356 div.page_footer_text { float:left; color:#555555; font-style:italic; }
357 div.page_body { padding:8px; }
357 div.page_body { padding:8px; }
358 div.title, a.title {
358 div.title, a.title {
359 display:block; padding:6px 8px;
359 display:block; padding:6px 8px;
360 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
360 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
361 }
361 }
362 a.title:hover { background-color: #d9d8d1; }
362 a.title:hover { background-color: #d9d8d1; }
363 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
363 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
364 div.log_body { padding:8px 8px 8px 150px; }
364 div.log_body { padding:8px 8px 8px 150px; }
365 .age { white-space:nowrap; }
365 .age { white-space:nowrap; }
366 span.age { position:relative; float:left; width:142px; font-style:italic; }
366 span.age { position:relative; float:left; width:142px; font-style:italic; }
367 div.log_link {
367 div.log_link {
368 padding:0px 8px;
368 padding:0px 8px;
369 font-size:10px; font-family:sans-serif; font-style:normal;
369 font-size:10px; font-family:sans-serif; font-style:normal;
370 position:relative; float:left; width:136px;
370 position:relative; float:left; width:136px;
371 }
371 }
372 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
372 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
373 a.list { text-decoration:none; color:#000000; }
373 a.list { text-decoration:none; color:#000000; }
374 a.list:hover { text-decoration:underline; color:#880000; }
374 a.list:hover { text-decoration:underline; color:#880000; }
375 table { padding:8px 4px; }
375 table { padding:8px 4px; }
376 th { padding:2px 5px; font-size:12px; text-align:left; }
376 th { padding:2px 5px; font-size:12px; text-align:left; }
377 tr.light:hover, .parity0:hover, pre.sourcelines.stripes > :nth-child(4n+1):hover { background-color:#edece6; }
377 tr.light:hover, .parity0:hover, pre.sourcelines.stripes > :nth-child(4n+1):hover { background-color:#edece6; }
378 tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+3) { background-color:#f6f6f0; }
378 tr.dark, .parity1, pre.sourcelines.stripes > :nth-child(4n+3) { background-color:#f6f6f0; }
379 tr.dark:hover, .parity1:hover, pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color:#edece6; }
379 tr.dark:hover, .parity1:hover, pre.sourcelines.stripes > :nth-child(4n+3):hover { background-color:#edece6; }
380 td { padding:2px 5px; font-size:12px; vertical-align:top; }
380 td { padding:2px 5px; font-size:12px; vertical-align:top; }
381 td.closed { background-color: #99f; }
381 td.closed { background-color: #99f; }
382 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
382 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
383 td.indexlinks { white-space: nowrap; }
383 td.indexlinks { white-space: nowrap; }
384 td.indexlinks a {
384 td.indexlinks a {
385 padding: 2px 5px; line-height: 10px;
385 padding: 2px 5px; line-height: 10px;
386 border: 1px solid;
386 border: 1px solid;
387 color: #ffffff; background-color: #7777bb;
387 color: #ffffff; background-color: #7777bb;
388 border-color: #aaaadd #333366 #333366 #aaaadd;
388 border-color: #aaaadd #333366 #333366 #aaaadd;
389 font-weight: bold; text-align: center; text-decoration: none;
389 font-weight: bold; text-align: center; text-decoration: none;
390 font-size: 10px;
390 font-size: 10px;
391 }
391 }
392 td.indexlinks a:hover { background-color: #6666aa; }
392 td.indexlinks a:hover { background-color: #6666aa; }
393 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
393 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
394 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
394 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
395 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
395 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
396 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
396 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
397 .linenr { color:#999999; text-decoration:none }
397 .linenr { color:#999999; text-decoration:none }
398 div.rss_logo { float: right; white-space: nowrap; }
398 div.rss_logo { float: right; white-space: nowrap; }
399 div.rss_logo a {
399 div.rss_logo a {
400 padding:3px 6px; line-height:10px;
400 padding:3px 6px; line-height:10px;
401 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
401 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
402 color:#ffffff; background-color:#ff6600;
402 color:#ffffff; background-color:#ff6600;
403 font-weight:bold; font-family:sans-serif; font-size:10px;
403 font-weight:bold; font-family:sans-serif; font-size:10px;
404 text-align:center; text-decoration:none;
404 text-align:center; text-decoration:none;
405 }
405 }
406 div.rss_logo a:hover { background-color:#ee5500; }
406 div.rss_logo a:hover { background-color:#ee5500; }
407 pre { margin: 0; }
407 pre { margin: 0; }
408 span.logtags span {
408 span.logtags span {
409 padding: 0px 4px;
409 padding: 0px 4px;
410 font-size: 10px;
410 font-size: 10px;
411 font-weight: normal;
411 font-weight: normal;
412 border: 1px solid;
412 border: 1px solid;
413 background-color: #ffaaff;
413 background-color: #ffaaff;
414 border-color: #ffccff #ff00ee #ff00ee #ffccff;
414 border-color: #ffccff #ff00ee #ff00ee #ffccff;
415 }
415 }
416 span.logtags span.tagtag {
416 span.logtags span.tagtag {
417 background-color: #ffffaa;
417 background-color: #ffffaa;
418 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
418 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
419 }
419 }
420 span.logtags span.branchtag {
420 span.logtags span.branchtag {
421 background-color: #aaffaa;
421 background-color: #aaffaa;
422 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
422 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
423 }
423 }
424 span.logtags span.inbranchtag {
424 span.logtags span.inbranchtag {
425 background-color: #d5dde6;
425 background-color: #d5dde6;
426 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
426 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
427 }
427 }
428 span.logtags span.bookmarktag {
428 span.logtags span.bookmarktag {
429 background-color: #afdffa;
429 background-color: #afdffa;
430 border-color: #ccecff #46ace6 #46ace6 #ccecff;
430 border-color: #ccecff #46ace6 #46ace6 #ccecff;
431 }
431 }
432 span.difflineplus { color:#008800; }
432 span.difflineplus { color:#008800; }
433 span.difflineminus { color:#cc0000; }
433 span.difflineminus { color:#cc0000; }
434 span.difflineat { color:#990099; }
434 span.difflineat { color:#990099; }
435 div.diffblocks { counter-reset: lineno; }
435 div.diffblocks { counter-reset: lineno; }
436 div.diffblock { counter-increment: lineno; }
436 div.diffblock { counter-increment: lineno; }
437 pre.sourcelines { position: relative; counter-reset: lineno; }
437 pre.sourcelines { position: relative; counter-reset: lineno; }
438 pre.sourcelines > span {
438 pre.sourcelines > span {
439 display: inline-block;
439 display: inline-block;
440 box-sizing: border-box;
440 box-sizing: border-box;
441 width: 100%;
441 width: 100%;
442 padding: 0 0 0 5em;
442 padding: 0 0 0 5em;
443 counter-increment: lineno;
443 counter-increment: lineno;
444 vertical-align: top;
444 vertical-align: top;
445 }
445 }
446 pre.sourcelines > span:before {
446 pre.sourcelines > span:before {
447 -moz-user-select: -moz-none;
447 -moz-user-select: -moz-none;
448 -khtml-user-select: none;
448 -khtml-user-select: none;
449 -webkit-user-select: none;
449 -webkit-user-select: none;
450 -ms-user-select: none;
450 -ms-user-select: none;
451 user-select: none;
451 user-select: none;
452 display: inline-block;
452 display: inline-block;
453 margin-left: -5em;
453 margin-left: -5em;
454 width: 4em;
454 width: 4em;
455 color: #999;
455 color: #999;
456 text-align: right;
456 text-align: right;
457 content: counters(lineno,".");
457 content: counters(lineno,".");
458 float: left;
458 float: left;
459 }
459 }
460 pre.sourcelines > a {
460 pre.sourcelines > a {
461 display: inline-block;
461 display: inline-block;
462 position: absolute;
462 position: absolute;
463 left: 0px;
463 left: 0px;
464 width: 4em;
464 width: 4em;
465 height: 1em;
465 height: 1em;
466 }
466 }
467 tr:target td,
468 pre.sourcelines > span:target,
469 pre.sourcelines.stripes > span:target {
470 background-color: #bfdfff;
471 }
467
472
468 /* Graph */
473 /* Graph */
469 div#wrapper {
474 div#wrapper {
470 position: relative;
475 position: relative;
471 margin: 0;
476 margin: 0;
472 padding: 0;
477 padding: 0;
473 margin-top: 3px;
478 margin-top: 3px;
474 }
479 }
475
480
476 canvas {
481 canvas {
477 position: absolute;
482 position: absolute;
478 z-index: 5;
483 z-index: 5;
479 top: -0.9em;
484 top: -0.9em;
480 margin: 0;
485 margin: 0;
481 }
486 }
482
487
483 ul#nodebgs {
488 ul#nodebgs {
484 list-style: none inside none;
489 list-style: none inside none;
485 padding: 0;
490 padding: 0;
486 margin: 0;
491 margin: 0;
487 top: -0.7em;
492 top: -0.7em;
488 }
493 }
489
494
490 ul#graphnodes li, ul#nodebgs li {
495 ul#graphnodes li, ul#nodebgs li {
491 height: 39px;
496 height: 39px;
492 }
497 }
493
498
494 ul#graphnodes {
499 ul#graphnodes {
495 position: absolute;
500 position: absolute;
496 z-index: 10;
501 z-index: 10;
497 top: -0.8em;
502 top: -0.8em;
498 list-style: none inside none;
503 list-style: none inside none;
499 padding: 0;
504 padding: 0;
500 }
505 }
501
506
502 ul#graphnodes li .info {
507 ul#graphnodes li .info {
503 display: block;
508 display: block;
504 font-size: 100%;
509 font-size: 100%;
505 position: relative;
510 position: relative;
506 top: -3px;
511 top: -3px;
507 font-style: italic;
512 font-style: italic;
508 }
513 }
509
514
510 /* Comparison */
515 /* Comparison */
511 .legend {
516 .legend {
512 padding: 1.5% 0 1.5% 0;
517 padding: 1.5% 0 1.5% 0;
513 }
518 }
514
519
515 .legendinfo {
520 .legendinfo {
516 border: 1px solid #d9d8d1;
521 border: 1px solid #d9d8d1;
517 font-size: 80%;
522 font-size: 80%;
518 text-align: center;
523 text-align: center;
519 padding: 0.5%;
524 padding: 0.5%;
520 }
525 }
521
526
522 .equal {
527 .equal {
523 background-color: #ffffff;
528 background-color: #ffffff;
524 }
529 }
525
530
526 .delete {
531 .delete {
527 background-color: #faa;
532 background-color: #faa;
528 color: #333;
533 color: #333;
529 }
534 }
530
535
531 .insert {
536 .insert {
532 background-color: #ffa;
537 background-color: #ffa;
533 }
538 }
534
539
535 .replace {
540 .replace {
536 background-color: #e8e8e8;
541 background-color: #e8e8e8;
537 }
542 }
538
543
539 .comparison {
544 .comparison {
540 overflow-x: auto;
545 overflow-x: auto;
541 }
546 }
542
547
543 .header th {
548 .header th {
544 text-align: center;
549 text-align: center;
545 }
550 }
546
551
547 .block {
552 .block {
548 border-top: 1px solid #d9d8d1;
553 border-top: 1px solid #d9d8d1;
549 }
554 }
550
555
551 .scroll-loading {
556 .scroll-loading {
552 -webkit-animation: change_color 1s linear 0s infinite alternate;
557 -webkit-animation: change_color 1s linear 0s infinite alternate;
553 -moz-animation: change_color 1s linear 0s infinite alternate;
558 -moz-animation: change_color 1s linear 0s infinite alternate;
554 -o-animation: change_color 1s linear 0s infinite alternate;
559 -o-animation: change_color 1s linear 0s infinite alternate;
555 animation: change_color 1s linear 0s infinite alternate;
560 animation: change_color 1s linear 0s infinite alternate;
556 }
561 }
557
562
558 @-webkit-keyframes change_color {
563 @-webkit-keyframes change_color {
559 from { background-color: #A0CEFF; } to { }
564 from { background-color: #A0CEFF; } to { }
560 }
565 }
561 @-moz-keyframes change_color {
566 @-moz-keyframes change_color {
562 from { background-color: #A0CEFF; } to { }
567 from { background-color: #A0CEFF; } to { }
563 }
568 }
564 @-o-keyframes change_color {
569 @-o-keyframes change_color {
565 from { background-color: #A0CEFF; } to { }
570 from { background-color: #A0CEFF; } to { }
566 }
571 }
567 @keyframes change_color {
572 @keyframes change_color {
568 from { background-color: #A0CEFF; } to { }
573 from { background-color: #A0CEFF; } to { }
569 }
574 }
570
575
571 .scroll-loading-error {
576 .scroll-loading-error {
572 background-color: #FFCCCC !important;
577 background-color: #FFCCCC !important;
573 }
578 }
574
579
575 #doc {
580 #doc {
576 margin: 0 8px;
581 margin: 0 8px;
577 }
582 }
578 304 Not Modified
583 304 Not Modified
579
584
580
585
581 phase changes are refreshed (issue4061)
586 phase changes are refreshed (issue4061)
582
587
583 $ echo bar >> foo
588 $ echo bar >> foo
584 $ hg ci -msecret --secret
589 $ hg ci -msecret --secret
585 $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
590 $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
586 200 Script output follows
591 200 Script output follows
587
592
588
593
589 # HG changelog
594 # HG changelog
590 # Node ID 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
595 # Node ID 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
591
596
592 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
597 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
593 revision: 0
598 revision: 0
594 user: test
599 user: test
595 date: Thu, 01 Jan 1970 00:00:00 +0000
600 date: Thu, 01 Jan 1970 00:00:00 +0000
596 summary: base
601 summary: base
597 branch: default
602 branch: default
598 tag: tip
603 tag: tip
599 bookmark: @
604 bookmark: @
600 bookmark: a b c
605 bookmark: a b c
601 bookmark: d/e/f
606 bookmark: d/e/f
602
607
603
608
604 $ hg phase --draft tip
609 $ hg phase --draft tip
605 $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
610 $ get-with-headers.py localhost:$HGPORT 'log?style=raw'
606 200 Script output follows
611 200 Script output follows
607
612
608
613
609 # HG changelog
614 # HG changelog
610 # Node ID a084749e708a9c4c0a5b652a2a446322ce290e04
615 # Node ID a084749e708a9c4c0a5b652a2a446322ce290e04
611
616
612 changeset: a084749e708a9c4c0a5b652a2a446322ce290e04
617 changeset: a084749e708a9c4c0a5b652a2a446322ce290e04
613 revision: 1
618 revision: 1
614 user: test
619 user: test
615 date: Thu, 01 Jan 1970 00:00:00 +0000
620 date: Thu, 01 Jan 1970 00:00:00 +0000
616 summary: secret
621 summary: secret
617 branch: default
622 branch: default
618 tag: tip
623 tag: tip
619
624
620 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
625 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
621 revision: 0
626 revision: 0
622 user: test
627 user: test
623 date: Thu, 01 Jan 1970 00:00:00 +0000
628 date: Thu, 01 Jan 1970 00:00:00 +0000
624 summary: base
629 summary: base
625 bookmark: @
630 bookmark: @
626 bookmark: a b c
631 bookmark: a b c
627 bookmark: d/e/f
632 bookmark: d/e/f
628
633
629
634
630
635
631 access bookmarks
636 access bookmarks
632
637
633 $ get-with-headers.py localhost:$HGPORT 'rev/@?style=paper' | egrep '^200|changeset 0:'
638 $ get-with-headers.py localhost:$HGPORT 'rev/@?style=paper' | egrep '^200|changeset 0:'
634 200 Script output follows
639 200 Script output follows
635 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
640 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
636
641
637 $ get-with-headers.py localhost:$HGPORT 'rev/%40?style=paper' | egrep '^200|changeset 0:'
642 $ get-with-headers.py localhost:$HGPORT 'rev/%40?style=paper' | egrep '^200|changeset 0:'
638 200 Script output follows
643 200 Script output follows
639 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
644 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
640
645
641 $ get-with-headers.py localhost:$HGPORT 'rev/a%20b%20c?style=paper' | egrep '^200|changeset 0:'
646 $ get-with-headers.py localhost:$HGPORT 'rev/a%20b%20c?style=paper' | egrep '^200|changeset 0:'
642 200 Script output follows
647 200 Script output follows
643 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
648 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
644
649
645 $ get-with-headers.py localhost:$HGPORT 'rev/d%252Fe%252Ff?style=paper' | egrep '^200|changeset 0:'
650 $ get-with-headers.py localhost:$HGPORT 'rev/d%252Fe%252Ff?style=paper' | egrep '^200|changeset 0:'
646 200 Script output follows
651 200 Script output follows
647 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
652 changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
648
653
649 no style can be loaded from directories other than the specified paths
654 no style can be loaded from directories other than the specified paths
650
655
651 $ mkdir -p x/templates/fallback
656 $ mkdir -p x/templates/fallback
652 $ cat <<EOF > x/templates/fallback/map
657 $ cat <<EOF > x/templates/fallback/map
653 > default = 'shortlog'
658 > default = 'shortlog'
654 > shortlog = 'fall back to default\n'
659 > shortlog = 'fall back to default\n'
655 > mimetype = 'text/plain'
660 > mimetype = 'text/plain'
656 > EOF
661 > EOF
657 $ cat <<EOF > x/map
662 $ cat <<EOF > x/map
658 > default = 'shortlog'
663 > default = 'shortlog'
659 > shortlog = 'access to outside of templates directory\n'
664 > shortlog = 'access to outside of templates directory\n'
660 > mimetype = 'text/plain'
665 > mimetype = 'text/plain'
661 > EOF
666 > EOF
662
667
663 $ killdaemons.py
668 $ killdaemons.py
664 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log \
669 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log \
665 > --config web.style=fallback --config web.templates=x/templates
670 > --config web.style=fallback --config web.templates=x/templates
666 $ cat hg.pid >> $DAEMON_PIDS
671 $ cat hg.pid >> $DAEMON_PIDS
667
672
668 $ get-with-headers.py localhost:$HGPORT "?style=`pwd`/x"
673 $ get-with-headers.py localhost:$HGPORT "?style=`pwd`/x"
669 200 Script output follows
674 200 Script output follows
670
675
671 fall back to default
676 fall back to default
672
677
673 $ get-with-headers.py localhost:$HGPORT '?style=..'
678 $ get-with-headers.py localhost:$HGPORT '?style=..'
674 200 Script output follows
679 200 Script output follows
675
680
676 fall back to default
681 fall back to default
677
682
678 $ get-with-headers.py localhost:$HGPORT '?style=./..'
683 $ get-with-headers.py localhost:$HGPORT '?style=./..'
679 200 Script output follows
684 200 Script output follows
680
685
681 fall back to default
686 fall back to default
682
687
683 $ get-with-headers.py localhost:$HGPORT '?style=.../.../'
688 $ get-with-headers.py localhost:$HGPORT '?style=.../.../'
684 200 Script output follows
689 200 Script output follows
685
690
686 fall back to default
691 fall back to default
687
692
688 errors
693 errors
689
694
690 $ cat errors.log
695 $ cat errors.log
691
696
692 Uncaught exceptions result in a logged error and canned HTTP response
697 Uncaught exceptions result in a logged error and canned HTTP response
693
698
694 $ killdaemons.py
699 $ killdaemons.py
695 $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
700 $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
696 $ cat hg.pid >> $DAEMON_PIDS
701 $ cat hg.pid >> $DAEMON_PIDS
697
702
698 $ get-with-headers.py localhost:$HGPORT 'raiseerror' transfer-encoding content-type
703 $ get-with-headers.py localhost:$HGPORT 'raiseerror' transfer-encoding content-type
699 500 Internal Server Error
704 500 Internal Server Error
700 transfer-encoding: chunked
705 transfer-encoding: chunked
701
706
702 Internal Server Error (no-eol)
707 Internal Server Error (no-eol)
703 [1]
708 [1]
704
709
705 $ killdaemons.py
710 $ killdaemons.py
706 $ head -1 errors.log
711 $ head -1 errors.log
707 .* Exception happened during processing request '/raiseerror': (re)
712 .* Exception happened during processing request '/raiseerror': (re)
708
713
709 Uncaught exception after partial content sent
714 Uncaught exception after partial content sent
710
715
711 $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
716 $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
712 $ cat hg.pid >> $DAEMON_PIDS
717 $ cat hg.pid >> $DAEMON_PIDS
713 $ get-with-headers.py localhost:$HGPORT 'raiseerror?partialresponse=1' transfer-encoding content-type
718 $ get-with-headers.py localhost:$HGPORT 'raiseerror?partialresponse=1' transfer-encoding content-type
714 200 Script output follows
719 200 Script output follows
715 transfer-encoding: chunked
720 transfer-encoding: chunked
716 content-type: text/plain
721 content-type: text/plain
717
722
718 partial content
723 partial content
719 Internal Server Error (no-eol)
724 Internal Server Error (no-eol)
720
725
721 $ killdaemons.py
726 $ killdaemons.py
722 $ cd ..
727 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now