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