Mercurial > hg
annotate tests/test-hgweb.t @ 17616:9535a0dc41f2
store: implement fncache basic path encoding in C
(This is not yet enabled; it will be turned on in a followup patch.)
The path encoding performed by fncache is complex and (perhaps
surprisingly) slow enough to negatively affect the overall performance
of Mercurial.
For a short path (< 120 bytes), the Python code can be reduced to a fairly
tractable state machine that either determines that nothing needs to be
done in a single pass, or performs the encoding in a second pass.
For longer paths, we avoid the more complicated hashed encoding scheme
for now, and fall back to Python.
Raw performance: I measured in a repo containing 150,000 files in its tip
manifest, with a median path name length of 57 bytes, and 95th percentile
of 96 bytes.
In this repo, the Python code takes 3.1 seconds to encode all path
names, while the hybrid C-and-Python code (called from Python) takes
0.21 seconds, for a speedup of about 14.
Across several other large repositories, I've measured the speedup from
the C code at between 26x and 40x.
For path names above 120 bytes where we must fall back to Python for
hashed encoding, the speedup is about 1.7x. Thus absolute performance
will depend strongly on the characteristics of a particular repository.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Tue, 18 Sep 2012 15:42:19 -0700 |
parents | d5a3bda6e170 |
children | d6ebdbdd70a5 |
rev | line source |
---|---|
15446
c5c9ca3719f9
tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents:
14046
diff
changeset
|
1 $ "$TESTDIR/hghave" serve || exit 80 |
c5c9ca3719f9
tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents:
14046
diff
changeset
|
2 |
12432 | 3 Some tests for hgweb. Tests static files, plain files and different 404's. |
4 | |
5 $ hg init test | |
6 $ cd test | |
7 $ mkdir da | |
8 $ echo foo > da/foo | |
9 $ echo foo > foo | |
10 $ hg ci -Ambase | |
11 adding da/foo | |
12 adding foo | |
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | |
14 $ cat hg.pid >> $DAEMON_PIDS | |
15 | |
16 manifest | |
3942 | 17 |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
18 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw') |
12432 | 19 200 Script output follows |
20 | |
21 | |
22 drwxr-xr-x da | |
23 -rw-r--r-- 4 foo | |
24 | |
25 | |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
26 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/da?style=raw') |
12432 | 27 200 Script output follows |
28 | |
29 | |
30 -rw-r--r-- 4 foo | |
31 | |
32 | |
33 | |
34 plain file | |
35 | |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
36 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?style=raw' |
12432 | 37 200 Script output follows |
38 | |
39 foo | |
40 | |
41 should give a 404 - static file that does not exist | |
9842
d3dbdca92458
hgweb: don't choke when an inexistent style is requested (issue1901)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8167
diff
changeset
|
42 |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
43 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'static/bogus' |
12432 | 44 404 Not Found |
45 | |
46 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
47 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"> | |
48 <head> | |
49 <link rel="icon" href="/static/hgicon.png" type="image/png" /> | |
50 <meta name="robots" content="index, nofollow" /> | |
51 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> | |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
13863
diff
changeset
|
52 <script type="text/javascript" src="/static/mercurial.js"></script> |
12432 | 53 |
54 <title>test: error</title> | |
55 </head> | |
56 <body> | |
57 | |
58 <div class="container"> | |
59 <div class="menu"> | |
60 <div class="logo"> | |
61 <a href="http://mercurial.selenic.com/"> | |
62 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a> | |
63 </div> | |
64 <ul> | |
65 <li><a href="/shortlog">log</a></li> | |
66 <li><a href="/graph">graph</a></li> | |
67 <li><a href="/tags">tags</a></li> | |
13597
38c9837b1f75
hgweb: add separate page with bookmarks listing
Alexander Solovyov <alexander@solovyov.net>
parents:
12846
diff
changeset
|
68 <li><a href="/bookmarks">bookmarks</a></li> |
12432 | 69 <li><a href="/branches">branches</a></li> |
17290
7a9246abf9fe
hgweb: make paper:error consistent with template
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
17243
diff
changeset
|
70 </ul> |
7a9246abf9fe
hgweb: make paper:error consistent with template
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
17243
diff
changeset
|
71 <ul> |
12680
d664547ef540
hgweb: add help link to templates missed in ead4e21f49f1
Augie Fackler <durin42@gmail.com>
parents:
12666
diff
changeset
|
72 <li><a href="/help">help</a></li> |
12432 | 73 </ul> |
74 </div> | |
75 | |
76 <div class="main"> | |
77 | |
78 <h2><a href="/">test</a></h2> | |
79 <h3>error</h3> | |
80 | |
81 <form class="search" action="/log"> | |
82 | |
83 <p><input name="rev" id="search1" type="text" size="30"></p> | |
84 <div id="hint">find changesets by author, revision, | |
85 files, or words in the commit message</div> | |
86 </form> | |
87 | |
88 <div class="description"> | |
89 <p> | |
90 An error occurred while processing your request: | |
91 </p> | |
92 <p> | |
93 Not Found | |
94 </p> | |
95 </div> | |
96 </div> | |
97 </div> | |
98 | |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
13863
diff
changeset
|
99 <script type="text/javascript">process_dates()</script> |
12432 | 100 |
101 | |
102 </body> | |
103 </html> | |
104 | |
105 [1] | |
106 | |
107 should give a 404 - bad revision | |
108 | |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
109 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/spam/foo?style=raw' |
12432 | 110 404 Not Found |
111 | |
112 | |
113 error: revision not found: spam | |
114 [1] | |
115 | |
116 should give a 400 - bad command | |
9842
d3dbdca92458
hgweb: don't choke when an inexistent style is requested (issue1901)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8167
diff
changeset
|
117 |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
118 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw' |
12432 | 119 400* (glob) |
120 | |
121 | |
122 error: no such method: spam | |
123 [1] | |
124 | |
125 should give a 404 - file does not exist | |
5561
22713dce19f6
hgweb: return meaningful HTTP status codes instead of nonsense
Bryan O'Sullivan <bos@serpentine.com>
parents:
5384
diff
changeset
|
126 |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
127 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork?style=raw' |
12432 | 128 404 Not Found |
129 | |
130 | |
131 error: bork@2ef0ac749a14: not found in manifest | |
132 [1] | |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
133 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork' |
12432 | 134 404 Not Found |
135 | |
136 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
137 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"> | |
138 <head> | |
139 <link rel="icon" href="/static/hgicon.png" type="image/png" /> | |
140 <meta name="robots" content="index, nofollow" /> | |
141 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> | |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
13863
diff
changeset
|
142 <script type="text/javascript" src="/static/mercurial.js"></script> |
12432 | 143 |
144 <title>test: error</title> | |
145 </head> | |
146 <body> | |
147 | |
148 <div class="container"> | |
149 <div class="menu"> | |
150 <div class="logo"> | |
151 <a href="http://mercurial.selenic.com/"> | |
152 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a> | |
153 </div> | |
154 <ul> | |
155 <li><a href="/shortlog">log</a></li> | |
156 <li><a href="/graph">graph</a></li> | |
157 <li><a href="/tags">tags</a></li> | |
13597
38c9837b1f75
hgweb: add separate page with bookmarks listing
Alexander Solovyov <alexander@solovyov.net>
parents:
12846
diff
changeset
|
158 <li><a href="/bookmarks">bookmarks</a></li> |
12432 | 159 <li><a href="/branches">branches</a></li> |
17290
7a9246abf9fe
hgweb: make paper:error consistent with template
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
17243
diff
changeset
|
160 </ul> |
7a9246abf9fe
hgweb: make paper:error consistent with template
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
17243
diff
changeset
|
161 <ul> |
12680
d664547ef540
hgweb: add help link to templates missed in ead4e21f49f1
Augie Fackler <durin42@gmail.com>
parents:
12666
diff
changeset
|
162 <li><a href="/help">help</a></li> |
12432 | 163 </ul> |
164 </div> | |
165 | |
166 <div class="main"> | |
167 | |
168 <h2><a href="/">test</a></h2> | |
169 <h3>error</h3> | |
170 | |
171 <form class="search" action="/log"> | |
172 | |
173 <p><input name="rev" id="search1" type="text" size="30"></p> | |
174 <div id="hint">find changesets by author, revision, | |
175 files, or words in the commit message</div> | |
176 </form> | |
177 | |
178 <div class="description"> | |
179 <p> | |
180 An error occurred while processing your request: | |
181 </p> | |
182 <p> | |
183 bork@2ef0ac749a14: not found in manifest | |
184 </p> | |
185 </div> | |
186 </div> | |
187 </div> | |
188 | |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
13863
diff
changeset
|
189 <script type="text/javascript">process_dates()</script> |
12432 | 190 |
191 | |
192 </body> | |
193 </html> | |
194 | |
195 [1] | |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
196 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/bork?style=raw' |
12432 | 197 404 Not Found |
198 | |
199 | |
200 error: bork@2ef0ac749a14: not found in manifest | |
201 [1] | |
5561
22713dce19f6
hgweb: return meaningful HTTP status codes instead of nonsense
Bryan O'Sullivan <bos@serpentine.com>
parents:
5384
diff
changeset
|
202 |
12432 | 203 try bad style |
5561
22713dce19f6
hgweb: return meaningful HTTP status codes instead of nonsense
Bryan O'Sullivan <bos@serpentine.com>
parents:
5384
diff
changeset
|
204 |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
205 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=foobar') |
12432 | 206 200 Script output follows |
207 | |
208 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
209 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"> | |
210 <head> | |
211 <link rel="icon" href="/static/hgicon.png" type="image/png" /> | |
212 <meta name="robots" content="index, nofollow" /> | |
213 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> | |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
13863
diff
changeset
|
214 <script type="text/javascript" src="/static/mercurial.js"></script> |
12432 | 215 |
216 <title>test: 2ef0ac749a14 /</title> | |
217 </head> | |
218 <body> | |
219 | |
220 <div class="container"> | |
221 <div class="menu"> | |
222 <div class="logo"> | |
223 <a href="http://mercurial.selenic.com/"> | |
224 <img src="/static/hglogo.png" alt="mercurial" /></a> | |
225 </div> | |
226 <ul> | |
227 <li><a href="/shortlog/2ef0ac749a14">log</a></li> | |
228 <li><a href="/graph/2ef0ac749a14">graph</a></li> | |
229 <li><a href="/tags">tags</a></li> | |
13597
38c9837b1f75
hgweb: add separate page with bookmarks listing
Alexander Solovyov <alexander@solovyov.net>
parents:
12846
diff
changeset
|
230 <li><a href="/bookmarks">bookmarks</a></li> |
12432 | 231 <li><a href="/branches">branches</a></li> |
232 </ul> | |
233 <ul> | |
234 <li><a href="/rev/2ef0ac749a14">changeset</a></li> | |
235 <li class="active">browse</li> | |
236 </ul> | |
237 <ul> | |
238 | |
239 </ul> | |
12666
ead4e21f49f1
web: add a help view for getting hg help output
Augie Fackler <durin42@gmail.com>
parents:
12432
diff
changeset
|
240 <ul> |
ead4e21f49f1
web: add a help view for getting hg help output
Augie Fackler <durin42@gmail.com>
parents:
12432
diff
changeset
|
241 <li><a href="/help">help</a></li> |
ead4e21f49f1
web: add a help view for getting hg help output
Augie Fackler <durin42@gmail.com>
parents:
12432
diff
changeset
|
242 </ul> |
12432 | 243 </div> |
244 | |
245 <div class="main"> | |
246 <h2><a href="/">test</a></h2> | |
247 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3> | |
248 | |
249 <form class="search" action="/log"> | |
250 | |
251 <p><input name="rev" id="search1" type="text" size="30" /></p> | |
252 <div id="hint">find changesets by author, revision, | |
253 files, or words in the commit message</div> | |
254 </form> | |
255 | |
256 <table class="bigtable"> | |
257 <tr> | |
258 <th class="name">name</th> | |
259 <th class="size">size</th> | |
260 <th class="permissions">permissions</th> | |
261 </tr> | |
262 <tr class="fileline parity0"> | |
263 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td> | |
264 <td class="size"></td> | |
265 <td class="permissions">drwxr-xr-x</td> | |
266 </tr> | |
267 | |
268 <tr class="fileline parity1"> | |
269 <td class="name"> | |
270 <a href="/file/2ef0ac749a14/da"> | |
271 <img src="/static/coal-folder.png" alt="dir."/> da/ | |
272 </a> | |
273 <a href="/file/2ef0ac749a14/da/"> | |
274 | |
275 </a> | |
276 </td> | |
277 <td class="size"></td> | |
278 <td class="permissions">drwxr-xr-x</td> | |
279 </tr> | |
280 | |
281 <tr class="fileline parity0"> | |
282 <td class="filename"> | |
283 <a href="/file/2ef0ac749a14/foo"> | |
284 <img src="/static/coal-file.png" alt="file"/> foo | |
285 </a> | |
286 </td> | |
287 <td class="size">4</td> | |
288 <td class="permissions">-rw-r--r--</td> | |
289 </tr> | |
290 </table> | |
291 </div> | |
292 </div> | |
14046
b24e5a708fad
web: Made elapsed time calculation dynamic (javascript).
Benoit Allard <benoit@aeteurope.nl>
parents:
13863
diff
changeset
|
293 <script type="text/javascript">process_dates()</script> |
12432 | 294 |
295 | |
296 </body> | |
297 </html> | |
298 | |
5561
22713dce19f6
hgweb: return meaningful HTTP status codes instead of nonsense
Bryan O'Sullivan <bos@serpentine.com>
parents:
5384
diff
changeset
|
299 |
12432 | 300 stop and restart |
301 | |
17466
d5a3bda6e170
killdaemons: take file argument explicitely
Patrick Mezard <patrick@mezard.eu>
parents:
17290
diff
changeset
|
302 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS |
12432 | 303 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log |
304 $ cat hg.pid >> $DAEMON_PIDS | |
5561
22713dce19f6
hgweb: return meaningful HTTP status codes instead of nonsense
Bryan O'Sullivan <bos@serpentine.com>
parents:
5384
diff
changeset
|
305 |
12432 | 306 Test the access/error files are opened in append mode |
307 | |
308 $ python -c "print len(file('access.log').readlines()), 'log lines written'" | |
309 10 log lines written | |
310 | |
311 static file | |
5561
22713dce19f6
hgweb: return meaningful HTTP status codes instead of nonsense
Bryan O'Sullivan <bos@serpentine.com>
parents:
5384
diff
changeset
|
312 |
17017
953faba28e91
tests: prepare get-with-headers.py for MSYS
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
313 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT 'static/style-gitweb.css' |
12432 | 314 200 Script output follows |
315 | |
316 body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; } | |
317 a { color:#0000cc; } | |
318 a:hover, a:visited, a:active { color:#880000; } | |
319 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; } | |
320 div.page_header a:visited { color:#0000cc; } | |
321 div.page_header a:hover { color:#880000; } | |
322 div.page_nav { padding:8px; } | |
323 div.page_nav a:visited { color:#0000cc; } | |
324 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px} | |
325 div.page_footer { padding:4px 8px; background-color: #d9d8d1; } | |
326 div.page_footer_text { float:left; color:#555555; font-style:italic; } | |
327 div.page_body { padding:8px; } | |
328 div.title, a.title { | |
329 display:block; padding:6px 8px; | |
330 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000; | |
331 } | |
332 a.title:hover { background-color: #d9d8d1; } | |
333 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; } | |
334 div.log_body { padding:8px 8px 8px 150px; } | |
335 .age { white-space:nowrap; } | |
336 span.age { position:relative; float:left; width:142px; font-style:italic; } | |
337 div.log_link { | |
338 padding:0px 8px; | |
339 font-size:10px; font-family:sans-serif; font-style:normal; | |
340 position:relative; float:left; width:136px; | |
341 } | |
342 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; } | |
343 a.list { text-decoration:none; color:#000000; } | |
344 a.list:hover { text-decoration:underline; color:#880000; } | |
345 table { padding:8px 4px; } | |
346 th { padding:2px 5px; font-size:12px; text-align:left; } | |
347 tr.light:hover, .parity0:hover { background-color:#edece6; } | |
348 tr.dark, .parity1 { background-color:#f6f6f0; } | |
349 tr.dark:hover, .parity1:hover { background-color:#edece6; } | |
350 td { padding:2px 5px; font-size:12px; vertical-align:top; } | |
351 td.closed { background-color: #99f; } | |
352 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; } | |
353 td.indexlinks { white-space: nowrap; } | |
354 td.indexlinks a { | |
355 padding: 2px 5px; line-height: 10px; | |
356 border: 1px solid; | |
357 color: #ffffff; background-color: #7777bb; | |
358 border-color: #aaaadd #333366 #333366 #aaaadd; | |
359 font-weight: bold; text-align: center; text-decoration: none; | |
360 font-size: 10px; | |
361 } | |
362 td.indexlinks a:hover { background-color: #6666aa; } | |
363 div.pre { font-family:monospace; font-size:12px; white-space:pre; } | |
364 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; } | |
365 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; } | |
366 div.search { margin:4px 8px; position:absolute; top:56px; right:12px } | |
367 .linenr { color:#999999; text-decoration:none } | |
368 div.rss_logo { float: right; white-space: nowrap; } | |
369 div.rss_logo a { | |
370 padding:3px 6px; line-height:10px; | |
371 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e; | |
372 color:#ffffff; background-color:#ff6600; | |
373 font-weight:bold; font-family:sans-serif; font-size:10px; | |
374 text-align:center; text-decoration:none; | |
375 } | |
376 div.rss_logo a:hover { background-color:#ee5500; } | |
377 pre { margin: 0; } | |
378 span.logtags span { | |
379 padding: 0px 4px; | |
380 font-size: 10px; | |
381 font-weight: normal; | |
382 border: 1px solid; | |
383 background-color: #ffaaff; | |
384 border-color: #ffccff #ff00ee #ff00ee #ffccff; | |
385 } | |
386 span.logtags span.tagtag { | |
387 background-color: #ffffaa; | |
388 border-color: #ffffcc #ffee00 #ffee00 #ffffcc; | |
389 } | |
390 span.logtags span.branchtag { | |
391 background-color: #aaffaa; | |
392 border-color: #ccffcc #00cc33 #00cc33 #ccffcc; | |
393 } | |
394 span.logtags span.inbranchtag { | |
395 background-color: #d5dde6; | |
396 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4; | |
397 } | |
13863
b602ac02f1ba
hgweb: add bookmark labels to gitweb theme (based on 270f57d35525)
Yuya Nishihara <yuya@tcha.org>
parents:
13597
diff
changeset
|
398 span.logtags span.bookmarktag { |
b602ac02f1ba
hgweb: add bookmark labels to gitweb theme (based on 270f57d35525)
Yuya Nishihara <yuya@tcha.org>
parents:
13597
diff
changeset
|
399 background-color: #afdffa; |
b602ac02f1ba
hgweb: add bookmark labels to gitweb theme (based on 270f57d35525)
Yuya Nishihara <yuya@tcha.org>
parents:
13597
diff
changeset
|
400 border-color: #ccecff #46ace6 #46ace6 #ccecff; |
b602ac02f1ba
hgweb: add bookmark labels to gitweb theme (based on 270f57d35525)
Yuya Nishihara <yuya@tcha.org>
parents:
13597
diff
changeset
|
401 } |
12432 | 402 |
403 /* Graph */ | |
404 div#wrapper { | |
405 position: relative; | |
406 margin: 0; | |
407 padding: 0; | |
408 margin-top: 3px; | |
409 } | |
410 | |
411 canvas { | |
412 position: absolute; | |
413 z-index: 5; | |
414 top: -0.9em; | |
415 margin: 0; | |
416 } | |
417 | |
418 ul#nodebgs { | |
419 list-style: none inside none; | |
420 padding: 0; | |
421 margin: 0; | |
422 top: -0.7em; | |
423 } | |
424 | |
425 ul#graphnodes li, ul#nodebgs li { | |
426 height: 39px; | |
427 } | |
428 | |
429 ul#graphnodes { | |
430 position: absolute; | |
431 z-index: 10; | |
432 top: -0.8em; | |
433 list-style: none inside none; | |
434 padding: 0; | |
435 } | |
436 | |
437 ul#graphnodes li .info { | |
438 display: block; | |
439 font-size: 100%; | |
440 position: relative; | |
441 top: -3px; | |
442 font-style: italic; | |
443 } | |
17202
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
444 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
445 /* Comparison */ |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
446 .legend { |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
447 padding: 1.5% 0 1.5% 0; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
448 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
449 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
450 .legendinfo { |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
451 border: 1px solid #d9d8d1; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
452 font-size: 80%; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
453 text-align: center; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
454 padding: 0.5%; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
455 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
456 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
457 .equal { |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
458 background-color: #ffffff; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
459 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
460 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
461 .delete { |
17243
106cdea0183d
hgweb: improve colors for comparison page
Matt Mackall <mpm@selenic.com>
parents:
17202
diff
changeset
|
462 background-color: #faa; |
106cdea0183d
hgweb: improve colors for comparison page
Matt Mackall <mpm@selenic.com>
parents:
17202
diff
changeset
|
463 color: #333; |
17202
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
464 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
465 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
466 .insert { |
17243
106cdea0183d
hgweb: improve colors for comparison page
Matt Mackall <mpm@selenic.com>
parents:
17202
diff
changeset
|
467 background-color: #ffa; |
17202
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
468 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
469 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
470 .replace { |
17243
106cdea0183d
hgweb: improve colors for comparison page
Matt Mackall <mpm@selenic.com>
parents:
17202
diff
changeset
|
471 background-color: #e8e8e8; |
17202
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
472 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
473 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
474 .comparison { |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
475 overflow-x: auto; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
476 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
477 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
478 .header th { |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
479 text-align: center; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
480 } |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
481 |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
482 .block { |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
483 border-top: 1px solid #d9d8d1; |
1ae119269ddc
hgweb: side-by-side comparison functionality
wujek srujek
parents:
17017
diff
changeset
|
484 } |
12432 | 485 304 Not Modified |
486 | |
9842
d3dbdca92458
hgweb: don't choke when an inexistent style is requested (issue1901)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8167
diff
changeset
|
487 |
12432 | 488 errors |
5690
1b365c5723bc
server: append to logfiles
Mirko Friedenhagen <mirko-lists@friedenhagen.de>
parents:
5580
diff
changeset
|
489 |
12432 | 490 $ cat errors.log |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15446
diff
changeset
|
491 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15446
diff
changeset
|
492 $ cd .. |