##// END OF EJS Templates
hgweb: make stripes in directory view with CSS
Alexander Plavin -
r19447:182942b3 default
parent child Browse files
Show More
@@ -1,58 +1,60
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short} {path|escape}</title>
2 <title>{repo|escape}: {node|short} {path|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="{logourl}">
9 <a href="{logourl}">
10 <img src="{staticurl|urlescape}{logoimg}" alt="mercurial" /></a>
10 <img src="{staticurl|urlescape}{logoimg}" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
17 <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
17 <li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
18 </ul>
18 </ul>
19 <ul>
19 <ul>
20 <li><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
21 <li class="active">browse</li>
21 <li class="active">browse</li>
22 </ul>
22 </ul>
23 <ul>
23 <ul>
24 {archives%archiveentry}
24 {archives%archiveentry}
25 </ul>
25 </ul>
26 <ul>
26 <ul>
27 <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
27 <li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
28 </ul>
29 </div>
29 </div>
30
30
31 <div class="main">
31 <div class="main">
32 <h2 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb}</h2>
32 <h2 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb}</h2>
33 <h3>directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}</h3>
33 <h3>directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}</h3>
34
34
35 <form class="search" action="{url|urlescape}log">
35 <form class="search" action="{url|urlescape}log">
36 {sessionvars%hiddenformentry}
36 {sessionvars%hiddenformentry}
37 <p><input name="rev" id="search1" type="text" size="30" /></p>
37 <p><input name="rev" id="search1" type="text" size="30" /></p>
38 <div id="hint">find changesets by author, revision,
38 <div id="hint">find changesets by author, revision,
39 files, or words in the commit message</div>
39 files, or words in the commit message</div>
40 </form>
40 </form>
41
41
42 <table class="bigtable">
42 <table class="bigtable">
43 <tr>
43 <tr>
44 <th class="name">name</th>
44 <th class="name">name</th>
45 <th class="size">size</th>
45 <th class="size">size</th>
46 <th class="permissions">permissions</th>
46 <th class="permissions">permissions</th>
47 </tr>
47 </tr>
48 <tr class="fileline parity{upparity}">
48 <tbody class="stripes2">
49 <tr class="fileline">
49 <td class="name"><a href="{url|urlescape}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
50 <td class="name"><a href="{url|urlescape}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
50 <td class="size"></td>
51 <td class="size"></td>
51 <td class="permissions">drwxr-xr-x</td>
52 <td class="permissions">drwxr-xr-x</td>
52 </tr>
53 </tr>
53 {dentries%direntry}
54 {dentries%direntry}
54 {fentries%fileentry}
55 {fentries%fileentry}
56 </tbody>
55 </table>
57 </table>
56 </div>
58 </div>
57 </div>
59 </div>
58 {footer}
60 {footer}
@@ -1,245 +1,245
1 default = 'shortlog'
1 default = 'shortlog'
2
2
3 mimetype = 'text/html; charset={encoding}'
3 mimetype = 'text/html; charset={encoding}'
4 header = header.tmpl
4 header = header.tmpl
5 footer = footer.tmpl
5 footer = footer.tmpl
6 search = search.tmpl
6 search = search.tmpl
7
7
8 changelog = shortlog.tmpl
8 changelog = shortlog.tmpl
9 shortlog = shortlog.tmpl
9 shortlog = shortlog.tmpl
10 shortlogentry = shortlogentry.tmpl
10 shortlogentry = shortlogentry.tmpl
11 graph = graph.tmpl
11 graph = graph.tmpl
12 help = help.tmpl
12 help = help.tmpl
13 helptopics = helptopics.tmpl
13 helptopics = helptopics.tmpl
14
14
15 helpentry = '
15 helpentry = '
16 <tr><td>
16 <tr><td>
17 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
18 {topic|escape}
18 {topic|escape}
19 </a>
19 </a>
20 </td><td>
20 </td><td>
21 {summary|escape}
21 {summary|escape}
22 </td></tr>'
22 </td></tr>'
23
23
24 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
27 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
27 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
28 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
29 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
29 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
30 filenolink = '{file|escape} '
30 filenolink = '{file|escape} '
31 fileellipses = '...'
31 fileellipses = '...'
32 diffstatlink = diffstat.tmpl
32 diffstatlink = diffstat.tmpl
33 diffstatnolink = diffstat.tmpl
33 diffstatnolink = diffstat.tmpl
34 changelogentry = shortlogentry.tmpl
34 changelogentry = shortlogentry.tmpl
35 searchentry = shortlogentry.tmpl
35 searchentry = shortlogentry.tmpl
36 changeset = changeset.tmpl
36 changeset = changeset.tmpl
37 manifest = manifest.tmpl
37 manifest = manifest.tmpl
38
38
39 nav = '{before%naventry} {after%naventry}'
39 nav = '{before%naventry} {after%naventry}'
40 navshort = '{before%navshortentry}{after%navshortentry}'
40 navshort = '{before%navshortentry}{after%navshortentry}'
41 navgraph = '{before%navgraphentry}{after%navgraphentry}'
41 navgraph = '{before%navgraphentry}{after%navgraphentry}'
42 filenav = '{before%filenaventry}{after%filenaventry}'
42 filenav = '{before%filenaventry}{after%filenaventry}'
43
43
44 direntry = '
44 direntry = '
45 <tr class="fileline parity{parity}">
45 <tr class="fileline">
46 <td class="name">
46 <td class="name">
47 <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
47 <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
48 <img src="{staticurl|urlescape}coal-folder.png" alt="dir."/> {basename|escape}/
48 <img src="{staticurl|urlescape}coal-folder.png" alt="dir."/> {basename|escape}/
49 </a>
49 </a>
50 <a href="{url|urlescape}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
50 <a href="{url|urlescape}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
51 {emptydirs|escape}
51 {emptydirs|escape}
52 </a>
52 </a>
53 </td>
53 </td>
54 <td class="size"></td>
54 <td class="size"></td>
55 <td class="permissions">drwxr-xr-x</td>
55 <td class="permissions">drwxr-xr-x</td>
56 </tr>'
56 </tr>'
57
57
58 fileentry = '
58 fileentry = '
59 <tr class="fileline parity{parity}">
59 <tr class="fileline">
60 <td class="filename">
60 <td class="filename">
61 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
61 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
62 <img src="{staticurl|urlescape}coal-file.png" alt="file"/> {basename|escape}
62 <img src="{staticurl|urlescape}coal-file.png" alt="file"/> {basename|escape}
63 </a>
63 </a>
64 </td>
64 </td>
65 <td class="size">{size}</td>
65 <td class="size">{size}</td>
66 <td class="permissions">{permissions|permissions}</td>
66 <td class="permissions">{permissions|permissions}</td>
67 </tr>'
67 </tr>'
68
68
69 filerevision = filerevision.tmpl
69 filerevision = filerevision.tmpl
70 fileannotate = fileannotate.tmpl
70 fileannotate = fileannotate.tmpl
71 filediff = filediff.tmpl
71 filediff = filediff.tmpl
72 filecomparison = filecomparison.tmpl
72 filecomparison = filecomparison.tmpl
73 filelog = filelog.tmpl
73 filelog = filelog.tmpl
74 fileline = '
74 fileline = '
75 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
75 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
76 filelogentry = filelogentry.tmpl
76 filelogentry = filelogentry.tmpl
77
77
78 annotateline = '
78 annotateline = '
79 <tr class="parity{parity}">
79 <tr class="parity{parity}">
80 <td class="annotate">
80 <td class="annotate">
81 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
81 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
82 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
82 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
83 </td>
83 </td>
84 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
84 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
85 </tr>'
85 </tr>'
86
86
87 diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
87 diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
88 difflineplus = '
88 difflineplus = '
89 <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
89 <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
90 difflineminus = '
90 difflineminus = '
91 <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
91 <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
92 difflineat = '
92 difflineat = '
93 <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
93 <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
94 diffline = '
94 diffline = '
95 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
95 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
96
96
97 comparisonblock ='
97 comparisonblock ='
98 <tbody class="block">
98 <tbody class="block">
99 {lines}
99 {lines}
100 </tbody>'
100 </tbody>'
101 comparisonline = '
101 comparisonline = '
102 <tr>
102 <tr>
103 <td class="source {type}"><a href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
103 <td class="source {type}"><a href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
104 <td class="source {type}"><a href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
104 <td class="source {type}"><a href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
105 </tr>'
105 </tr>'
106
106
107 changelogparent = '
107 changelogparent = '
108 <tr>
108 <tr>
109 <th class="parent">parent {rev}:</th>
109 <th class="parent">parent {rev}:</th>
110 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
110 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
111 </tr>'
111 </tr>'
112
112
113 changesetparent = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
113 changesetparent = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
114
114
115 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">{node|short}</a> '
115 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">{node|short}</a> '
116
116
117 filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
117 filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
118 filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
118 filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
119
119
120 filerename = '{file|escape}@'
120 filerename = '{file|escape}@'
121 filelogrename = '
121 filelogrename = '
122 <span class="base">
122 <span class="base">
123 base
123 base
124 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
124 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
125 {file|escape}@{node|short}
125 {file|escape}@{node|short}
126 </a>
126 </a>
127 </span>'
127 </span>'
128 fileannotateparent = '
128 fileannotateparent = '
129 <tr>
129 <tr>
130 <td class="metatag">parent:</td>
130 <td class="metatag">parent:</td>
131 <td>
131 <td>
132 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
132 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
133 {rename%filerename}{node|short}
133 {rename%filerename}{node|short}
134 </a>
134 </a>
135 </td>
135 </td>
136 </tr>'
136 </tr>'
137 changesetchild = ' <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
137 changesetchild = ' <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
138 changelogchild = '
138 changelogchild = '
139 <tr>
139 <tr>
140 <th class="child">child</th>
140 <th class="child">child</th>
141 <td class="child">
141 <td class="child">
142 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
142 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
143 {node|short}
143 {node|short}
144 </a>
144 </a>
145 </td>
145 </td>
146 </tr>'
146 </tr>'
147 fileannotatechild = '
147 fileannotatechild = '
148 <tr>
148 <tr>
149 <td class="metatag">child:</td>
149 <td class="metatag">child:</td>
150 <td>
150 <td>
151 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
151 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
152 {node|short}
152 {node|short}
153 </a>
153 </a>
154 </td>
154 </td>
155 </tr>'
155 </tr>'
156 tags = tags.tmpl
156 tags = tags.tmpl
157 tagentry = '
157 tagentry = '
158 <tr class="tagEntry parity{parity}">
158 <tr class="tagEntry parity{parity}">
159 <td>
159 <td>
160 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
160 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
161 {tag|escape}
161 {tag|escape}
162 </a>
162 </a>
163 </td>
163 </td>
164 <td class="node">
164 <td class="node">
165 {node|short}
165 {node|short}
166 </td>
166 </td>
167 </tr>'
167 </tr>'
168 bookmarks = bookmarks.tmpl
168 bookmarks = bookmarks.tmpl
169 bookmarkentry = '
169 bookmarkentry = '
170 <tr class="tagEntry">
170 <tr class="tagEntry">
171 <td>
171 <td>
172 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
172 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
173 {bookmark|escape}
173 {bookmark|escape}
174 </a>
174 </a>
175 </td>
175 </td>
176 <td class="node">
176 <td class="node">
177 {node|short}
177 {node|short}
178 </td>
178 </td>
179 </tr>'
179 </tr>'
180 branches = branches.tmpl
180 branches = branches.tmpl
181 branchentry = '
181 branchentry = '
182 <tr class="tagEntry parity{parity}">
182 <tr class="tagEntry parity{parity}">
183 <td>
183 <td>
184 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
184 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
185 {branch|escape}
185 {branch|escape}
186 </a>
186 </a>
187 </td>
187 </td>
188 <td class="node">
188 <td class="node">
189 {node|short}
189 {node|short}
190 </td>
190 </td>
191 </tr>'
191 </tr>'
192 changelogtag = '<span class="tag">{name|escape}</span> '
192 changelogtag = '<span class="tag">{name|escape}</span> '
193 changesettag = '<span class="tag">{tag|escape}</span> '
193 changesettag = '<span class="tag">{tag|escape}</span> '
194 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
194 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
195 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
195 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
196 changelogbranchname = '<span class="branchname">{name|escape}</span> '
196 changelogbranchname = '<span class="branchname">{name|escape}</span> '
197
197
198 filediffparent = '
198 filediffparent = '
199 <tr>
199 <tr>
200 <th class="parent">parent {rev}:</th>
200 <th class="parent">parent {rev}:</th>
201 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
201 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
202 </tr>'
202 </tr>'
203 filelogparent = '
203 filelogparent = '
204 <tr>
204 <tr>
205 <th>parent {rev}:</th>
205 <th>parent {rev}:</th>
206 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
206 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
207 </tr>'
207 </tr>'
208 filediffchild = '
208 filediffchild = '
209 <tr>
209 <tr>
210 <th class="child">child {rev}:</th>
210 <th class="child">child {rev}:</th>
211 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
211 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
212 </td>
212 </td>
213 </tr>'
213 </tr>'
214 filelogchild = '
214 filelogchild = '
215 <tr>
215 <tr>
216 <th>child {rev}:</th>
216 <th>child {rev}:</th>
217 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
217 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
218 </tr>'
218 </tr>'
219
219
220 indexentry = '
220 indexentry = '
221 <tr class="parity{parity}">
221 <tr class="parity{parity}">
222 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
222 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
223 <td>{description}</td>
223 <td>{description}</td>
224 <td>{contact|obfuscate}</td>
224 <td>{contact|obfuscate}</td>
225 <td class="age">{lastchange|rfc822date}</td>
225 <td class="age">{lastchange|rfc822date}</td>
226 <td class="indexlinks">{archives%indexarchiveentry}</td>
226 <td class="indexlinks">{archives%indexarchiveentry}</td>
227 <td>
227 <td>
228 {if(isdirectory, '',
228 {if(isdirectory, '',
229 '<a href="{url|urlescape}atom-log" title="subscribe to repository atom feed">
229 '<a href="{url|urlescape}atom-log" title="subscribe to repository atom feed">
230 <img class="atom-logo" src="{staticurl|urlescape}feed-icon-14x14.png" alt="subscribe to repository atom feed">
230 <img class="atom-logo" src="{staticurl|urlescape}feed-icon-14x14.png" alt="subscribe to repository atom feed">
231 </a>'
231 </a>'
232 )}
232 )}
233 </td>
233 </td>
234 </tr>\n'
234 </tr>\n'
235 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
235 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
236 index = index.tmpl
236 index = index.tmpl
237 archiveentry = '
237 archiveentry = '
238 <li>
238 <li>
239 <a href="{url|urlescape}archive/{node|short}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a>
239 <a href="{url|urlescape}archive/{node|short}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a>
240 </li>'
240 </li>'
241 notfound = notfound.tmpl
241 notfound = notfound.tmpl
242 error = error.tmpl
242 error = error.tmpl
243 urlparameter = '{separator}{name}={value|urlescape}'
243 urlparameter = '{separator}{name}={value|urlescape}'
244 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
244 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
245 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
245 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,144 +1,146
1 $ "$TESTDIR/hghave" serve || exit 80
1 $ "$TESTDIR/hghave" serve || exit 80
2
2
3 Test chains of near empty directories, terminating 3 different ways:
3 Test chains of near empty directories, terminating 3 different ways:
4 - a1: file at level 4 (deepest)
4 - a1: file at level 4 (deepest)
5 - b1: two dirs at level 3
5 - b1: two dirs at level 3
6 - e1: file at level 2
6 - e1: file at level 2
7
7
8 Set up the repo
8 Set up the repo
9
9
10 $ hg init test
10 $ hg init test
11 $ cd test
11 $ cd test
12 $ mkdir -p a1/a2/a3/a4
12 $ mkdir -p a1/a2/a3/a4
13 $ mkdir -p b1/b2/b3/b4
13 $ mkdir -p b1/b2/b3/b4
14 $ mkdir -p b1/b2/c3/c4
14 $ mkdir -p b1/b2/c3/c4
15 $ mkdir -p d1/d2/d3/d4
15 $ mkdir -p d1/d2/d3/d4
16 $ echo foo > a1/a2/a3/a4/foo
16 $ echo foo > a1/a2/a3/a4/foo
17 $ echo foo > b1/b2/b3/b4/foo
17 $ echo foo > b1/b2/b3/b4/foo
18 $ echo foo > b1/b2/c3/c4/foo
18 $ echo foo > b1/b2/c3/c4/foo
19 $ echo foo > d1/d2/d3/d4/foo
19 $ echo foo > d1/d2/d3/d4/foo
20 $ echo foo > d1/d2/foo
20 $ echo foo > d1/d2/foo
21 $ hg ci -Ama
21 $ hg ci -Ama
22 adding a1/a2/a3/a4/foo
22 adding a1/a2/a3/a4/foo
23 adding b1/b2/b3/b4/foo
23 adding b1/b2/b3/b4/foo
24 adding b1/b2/c3/c4/foo
24 adding b1/b2/c3/c4/foo
25 adding d1/d2/d3/d4/foo
25 adding d1/d2/d3/d4/foo
26 adding d1/d2/foo
26 adding d1/d2/foo
27 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
27 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
28 $ cat hg.pid >> $DAEMON_PIDS
28 $ cat hg.pid >> $DAEMON_PIDS
29
29
30 manifest with descending
30 manifest with descending
31
31
32 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file'
32 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file'
33 200 Script output follows
33 200 Script output follows
34
34
35 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
35 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
36 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
36 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
37 <head>
37 <head>
38 <link rel="icon" href="/static/hgicon.png" type="image/png" />
38 <link rel="icon" href="/static/hgicon.png" type="image/png" />
39 <meta name="robots" content="index, nofollow" />
39 <meta name="robots" content="index, nofollow" />
40 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
40 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
41 <script type="text/javascript" src="/static/mercurial.js"></script>
41 <script type="text/javascript" src="/static/mercurial.js"></script>
42
42
43 <title>test: 9087c84a0f5d /</title>
43 <title>test: 9087c84a0f5d /</title>
44 </head>
44 </head>
45 <body>
45 <body>
46
46
47 <div class="container">
47 <div class="container">
48 <div class="menu">
48 <div class="menu">
49 <div class="logo">
49 <div class="logo">
50 <a href="http://mercurial.selenic.com/">
50 <a href="http://mercurial.selenic.com/">
51 <img src="/static/hglogo.png" alt="mercurial" /></a>
51 <img src="/static/hglogo.png" alt="mercurial" /></a>
52 </div>
52 </div>
53 <ul>
53 <ul>
54 <li><a href="/shortlog/9087c84a0f5d">log</a></li>
54 <li><a href="/shortlog/9087c84a0f5d">log</a></li>
55 <li><a href="/graph/9087c84a0f5d">graph</a></li>
55 <li><a href="/graph/9087c84a0f5d">graph</a></li>
56 <li><a href="/tags">tags</a></li>
56 <li><a href="/tags">tags</a></li>
57 <li><a href="/bookmarks">bookmarks</a></li>
57 <li><a href="/bookmarks">bookmarks</a></li>
58 <li><a href="/branches">branches</a></li>
58 <li><a href="/branches">branches</a></li>
59 </ul>
59 </ul>
60 <ul>
60 <ul>
61 <li><a href="/rev/9087c84a0f5d">changeset</a></li>
61 <li><a href="/rev/9087c84a0f5d">changeset</a></li>
62 <li class="active">browse</li>
62 <li class="active">browse</li>
63 </ul>
63 </ul>
64 <ul>
64 <ul>
65
65
66 </ul>
66 </ul>
67 <ul>
67 <ul>
68 <li><a href="/help">help</a></li>
68 <li><a href="/help">help</a></li>
69 </ul>
69 </ul>
70 </div>
70 </div>
71
71
72 <div class="main">
72 <div class="main">
73 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
73 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
74 <h3>directory / @ 0:9087c84a0f5d <span class="tag">tip</span> </h3>
74 <h3>directory / @ 0:9087c84a0f5d <span class="tag">tip</span> </h3>
75
75
76 <form class="search" action="/log">
76 <form class="search" action="/log">
77
77
78 <p><input name="rev" id="search1" type="text" size="30" /></p>
78 <p><input name="rev" id="search1" type="text" size="30" /></p>
79 <div id="hint">find changesets by author, revision,
79 <div id="hint">find changesets by author, revision,
80 files, or words in the commit message</div>
80 files, or words in the commit message</div>
81 </form>
81 </form>
82
82
83 <table class="bigtable">
83 <table class="bigtable">
84 <tr>
84 <tr>
85 <th class="name">name</th>
85 <th class="name">name</th>
86 <th class="size">size</th>
86 <th class="size">size</th>
87 <th class="permissions">permissions</th>
87 <th class="permissions">permissions</th>
88 </tr>
88 </tr>
89 <tr class="fileline parity0">
89 <tbody class="stripes2">
90 <tr class="fileline">
90 <td class="name"><a href="/file/9087c84a0f5d/">[up]</a></td>
91 <td class="name"><a href="/file/9087c84a0f5d/">[up]</a></td>
91 <td class="size"></td>
92 <td class="size"></td>
92 <td class="permissions">drwxr-xr-x</td>
93 <td class="permissions">drwxr-xr-x</td>
93 </tr>
94 </tr>
94
95
95 <tr class="fileline parity1">
96 <tr class="fileline">
96 <td class="name">
97 <td class="name">
97 <a href="/file/9087c84a0f5d/a1">
98 <a href="/file/9087c84a0f5d/a1">
98 <img src="/static/coal-folder.png" alt="dir."/> a1/
99 <img src="/static/coal-folder.png" alt="dir."/> a1/
99 </a>
100 </a>
100 <a href="/file/9087c84a0f5d/a1/a2/a3/a4">
101 <a href="/file/9087c84a0f5d/a1/a2/a3/a4">
101 a2/a3/a4
102 a2/a3/a4
102 </a>
103 </a>
103 </td>
104 </td>
104 <td class="size"></td>
105 <td class="size"></td>
105 <td class="permissions">drwxr-xr-x</td>
106 <td class="permissions">drwxr-xr-x</td>
106 </tr>
107 </tr>
107 <tr class="fileline parity0">
108 <tr class="fileline">
108 <td class="name">
109 <td class="name">
109 <a href="/file/9087c84a0f5d/b1">
110 <a href="/file/9087c84a0f5d/b1">
110 <img src="/static/coal-folder.png" alt="dir."/> b1/
111 <img src="/static/coal-folder.png" alt="dir."/> b1/
111 </a>
112 </a>
112 <a href="/file/9087c84a0f5d/b1/b2">
113 <a href="/file/9087c84a0f5d/b1/b2">
113 b2
114 b2
114 </a>
115 </a>
115 </td>
116 </td>
116 <td class="size"></td>
117 <td class="size"></td>
117 <td class="permissions">drwxr-xr-x</td>
118 <td class="permissions">drwxr-xr-x</td>
118 </tr>
119 </tr>
119 <tr class="fileline parity1">
120 <tr class="fileline">
120 <td class="name">
121 <td class="name">
121 <a href="/file/9087c84a0f5d/d1">
122 <a href="/file/9087c84a0f5d/d1">
122 <img src="/static/coal-folder.png" alt="dir."/> d1/
123 <img src="/static/coal-folder.png" alt="dir."/> d1/
123 </a>
124 </a>
124 <a href="/file/9087c84a0f5d/d1/d2">
125 <a href="/file/9087c84a0f5d/d1/d2">
125 d2
126 d2
126 </a>
127 </a>
127 </td>
128 </td>
128 <td class="size"></td>
129 <td class="size"></td>
129 <td class="permissions">drwxr-xr-x</td>
130 <td class="permissions">drwxr-xr-x</td>
130 </tr>
131 </tr>
131
132
133 </tbody>
132 </table>
134 </table>
133 </div>
135 </div>
134 </div>
136 </div>
135 <script type="text/javascript">process_dates()</script>
137 <script type="text/javascript">process_dates()</script>
136
138
137
139
138 </body>
140 </body>
139 </html>
141 </html>
140
142
141
143
142 $ cat errors.log
144 $ cat errors.log
143
145
144 $ cd ..
146 $ cd ..
@@ -1,411 +1,413
1 $ "$TESTDIR/hghave" serve || exit 80
1 $ "$TESTDIR/hghave" serve || exit 80
2
2
3 Some tests for hgweb in an empty repository
3 Some tests for hgweb in an empty repository
4
4
5 $ hg init test
5 $ hg init test
6 $ cd test
6 $ cd test
7 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
7 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
8 $ cat hg.pid >> $DAEMON_PIDS
8 $ cat hg.pid >> $DAEMON_PIDS
9 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'shortlog')
9 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'shortlog')
10 200 Script output follows
10 200 Script output follows
11
11
12 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
12 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
13 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
13 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
14 <head>
14 <head>
15 <link rel="icon" href="/static/hgicon.png" type="image/png" />
15 <link rel="icon" href="/static/hgicon.png" type="image/png" />
16 <meta name="robots" content="index, nofollow" />
16 <meta name="robots" content="index, nofollow" />
17 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
17 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
18 <script type="text/javascript" src="/static/mercurial.js"></script>
18 <script type="text/javascript" src="/static/mercurial.js"></script>
19
19
20 <title>test: log</title>
20 <title>test: log</title>
21 <link rel="alternate" type="application/atom+xml"
21 <link rel="alternate" type="application/atom+xml"
22 href="/atom-log" title="Atom feed for test" />
22 href="/atom-log" title="Atom feed for test" />
23 <link rel="alternate" type="application/rss+xml"
23 <link rel="alternate" type="application/rss+xml"
24 href="/rss-log" title="RSS feed for test" />
24 href="/rss-log" title="RSS feed for test" />
25 </head>
25 </head>
26 <body>
26 <body>
27
27
28 <div class="container">
28 <div class="container">
29 <div class="menu">
29 <div class="menu">
30 <div class="logo">
30 <div class="logo">
31 <a href="http://mercurial.selenic.com/">
31 <a href="http://mercurial.selenic.com/">
32 <img src="/static/hglogo.png" alt="mercurial" /></a>
32 <img src="/static/hglogo.png" alt="mercurial" /></a>
33 </div>
33 </div>
34 <ul>
34 <ul>
35 <li class="active">log</li>
35 <li class="active">log</li>
36 <li><a href="/graph/000000000000">graph</a></li>
36 <li><a href="/graph/000000000000">graph</a></li>
37 <li><a href="/tags">tags</a></li>
37 <li><a href="/tags">tags</a></li>
38 <li><a href="/bookmarks">bookmarks</a></li>
38 <li><a href="/bookmarks">bookmarks</a></li>
39 <li><a href="/branches">branches</a></li>
39 <li><a href="/branches">branches</a></li>
40 </ul>
40 </ul>
41 <ul>
41 <ul>
42 <li><a href="/rev/000000000000">changeset</a></li>
42 <li><a href="/rev/000000000000">changeset</a></li>
43 <li><a href="/file/000000000000">browse</a></li>
43 <li><a href="/file/000000000000">browse</a></li>
44 </ul>
44 </ul>
45 <ul>
45 <ul>
46
46
47 </ul>
47 </ul>
48 <ul>
48 <ul>
49 <li><a href="/help">help</a></li>
49 <li><a href="/help">help</a></li>
50 </ul>
50 </ul>
51 <p>
51 <p>
52 <div class="atom-logo">
52 <div class="atom-logo">
53 <a href="/atom-log" title="subscribe to atom feed">
53 <a href="/atom-log" title="subscribe to atom feed">
54 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="atom feed">
54 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="atom feed">
55 </a>
55 </a>
56 </div>
56 </div>
57 </div>
57 </div>
58
58
59 <div class="main">
59 <div class="main">
60 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
60 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
61 <h3>log</h3>
61 <h3>log</h3>
62
62
63 <form class="search" action="/log">
63 <form class="search" action="/log">
64
64
65 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
65 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
66 <div id="hint">find changesets by author, revision,
66 <div id="hint">find changesets by author, revision,
67 files, or words in the commit message</div>
67 files, or words in the commit message</div>
68 </form>
68 </form>
69
69
70 <div class="navigate">
70 <div class="navigate">
71 <a href="/shortlog/-1?revcount=30">less</a>
71 <a href="/shortlog/-1?revcount=30">less</a>
72 <a href="/shortlog/-1?revcount=120">more</a>
72 <a href="/shortlog/-1?revcount=120">more</a>
73 | rev -1:
73 | rev -1:
74 </div>
74 </div>
75
75
76 <table class="bigtable">
76 <table class="bigtable">
77 <tr>
77 <tr>
78 <th class="age">age</th>
78 <th class="age">age</th>
79 <th class="author">author</th>
79 <th class="author">author</th>
80 <th class="description">description</th>
80 <th class="description">description</th>
81 </tr>
81 </tr>
82
82
83 </table>
83 </table>
84
84
85 <div class="navigate">
85 <div class="navigate">
86 <a href="/shortlog/-1?revcount=30">less</a>
86 <a href="/shortlog/-1?revcount=30">less</a>
87 <a href="/shortlog/-1?revcount=120">more</a>
87 <a href="/shortlog/-1?revcount=120">more</a>
88 | rev -1:
88 | rev -1:
89 </div>
89 </div>
90
90
91 </div>
91 </div>
92 </div>
92 </div>
93
93
94 <script type="text/javascript">process_dates()</script>
94 <script type="text/javascript">process_dates()</script>
95
95
96
96
97 </body>
97 </body>
98 </html>
98 </html>
99
99
100 $ echo babar
100 $ echo babar
101 babar
101 babar
102 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log')
102 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log')
103 200 Script output follows
103 200 Script output follows
104
104
105 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
105 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
106 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
106 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
107 <head>
107 <head>
108 <link rel="icon" href="/static/hgicon.png" type="image/png" />
108 <link rel="icon" href="/static/hgicon.png" type="image/png" />
109 <meta name="robots" content="index, nofollow" />
109 <meta name="robots" content="index, nofollow" />
110 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
110 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
111 <script type="text/javascript" src="/static/mercurial.js"></script>
111 <script type="text/javascript" src="/static/mercurial.js"></script>
112
112
113 <title>test: log</title>
113 <title>test: log</title>
114 <link rel="alternate" type="application/atom+xml"
114 <link rel="alternate" type="application/atom+xml"
115 href="/atom-log" title="Atom feed for test" />
115 href="/atom-log" title="Atom feed for test" />
116 <link rel="alternate" type="application/rss+xml"
116 <link rel="alternate" type="application/rss+xml"
117 href="/rss-log" title="RSS feed for test" />
117 href="/rss-log" title="RSS feed for test" />
118 </head>
118 </head>
119 <body>
119 <body>
120
120
121 <div class="container">
121 <div class="container">
122 <div class="menu">
122 <div class="menu">
123 <div class="logo">
123 <div class="logo">
124 <a href="http://mercurial.selenic.com/">
124 <a href="http://mercurial.selenic.com/">
125 <img src="/static/hglogo.png" alt="mercurial" /></a>
125 <img src="/static/hglogo.png" alt="mercurial" /></a>
126 </div>
126 </div>
127 <ul>
127 <ul>
128 <li class="active">log</li>
128 <li class="active">log</li>
129 <li><a href="/graph/000000000000">graph</a></li>
129 <li><a href="/graph/000000000000">graph</a></li>
130 <li><a href="/tags">tags</a></li>
130 <li><a href="/tags">tags</a></li>
131 <li><a href="/bookmarks">bookmarks</a></li>
131 <li><a href="/bookmarks">bookmarks</a></li>
132 <li><a href="/branches">branches</a></li>
132 <li><a href="/branches">branches</a></li>
133 </ul>
133 </ul>
134 <ul>
134 <ul>
135 <li><a href="/rev/000000000000">changeset</a></li>
135 <li><a href="/rev/000000000000">changeset</a></li>
136 <li><a href="/file/000000000000">browse</a></li>
136 <li><a href="/file/000000000000">browse</a></li>
137 </ul>
137 </ul>
138 <ul>
138 <ul>
139
139
140 </ul>
140 </ul>
141 <ul>
141 <ul>
142 <li><a href="/help">help</a></li>
142 <li><a href="/help">help</a></li>
143 </ul>
143 </ul>
144 <p>
144 <p>
145 <div class="atom-logo">
145 <div class="atom-logo">
146 <a href="/atom-log" title="subscribe to atom feed">
146 <a href="/atom-log" title="subscribe to atom feed">
147 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="atom feed">
147 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="atom feed">
148 </a>
148 </a>
149 </div>
149 </div>
150 </div>
150 </div>
151
151
152 <div class="main">
152 <div class="main">
153 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
153 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
154 <h3>log</h3>
154 <h3>log</h3>
155
155
156 <form class="search" action="/log">
156 <form class="search" action="/log">
157
157
158 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
158 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
159 <div id="hint">find changesets by author, revision,
159 <div id="hint">find changesets by author, revision,
160 files, or words in the commit message</div>
160 files, or words in the commit message</div>
161 </form>
161 </form>
162
162
163 <div class="navigate">
163 <div class="navigate">
164 <a href="/shortlog/-1?revcount=5">less</a>
164 <a href="/shortlog/-1?revcount=5">less</a>
165 <a href="/shortlog/-1?revcount=20">more</a>
165 <a href="/shortlog/-1?revcount=20">more</a>
166 | rev -1:
166 | rev -1:
167 </div>
167 </div>
168
168
169 <table class="bigtable">
169 <table class="bigtable">
170 <tr>
170 <tr>
171 <th class="age">age</th>
171 <th class="age">age</th>
172 <th class="author">author</th>
172 <th class="author">author</th>
173 <th class="description">description</th>
173 <th class="description">description</th>
174 </tr>
174 </tr>
175
175
176 </table>
176 </table>
177
177
178 <div class="navigate">
178 <div class="navigate">
179 <a href="/shortlog/-1?revcount=5">less</a>
179 <a href="/shortlog/-1?revcount=5">less</a>
180 <a href="/shortlog/-1?revcount=20">more</a>
180 <a href="/shortlog/-1?revcount=20">more</a>
181 | rev -1:
181 | rev -1:
182 </div>
182 </div>
183
183
184 </div>
184 </div>
185 </div>
185 </div>
186
186
187 <script type="text/javascript">process_dates()</script>
187 <script type="text/javascript">process_dates()</script>
188
188
189
189
190 </body>
190 </body>
191 </html>
191 </html>
192
192
193 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'graph')
193 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'graph')
194 200 Script output follows
194 200 Script output follows
195
195
196 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
196 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
197 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
197 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
198 <head>
198 <head>
199 <link rel="icon" href="/static/hgicon.png" type="image/png" />
199 <link rel="icon" href="/static/hgicon.png" type="image/png" />
200 <meta name="robots" content="index, nofollow" />
200 <meta name="robots" content="index, nofollow" />
201 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
201 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
202 <script type="text/javascript" src="/static/mercurial.js"></script>
202 <script type="text/javascript" src="/static/mercurial.js"></script>
203
203
204 <title>test: revision graph</title>
204 <title>test: revision graph</title>
205 <link rel="alternate" type="application/atom+xml"
205 <link rel="alternate" type="application/atom+xml"
206 href="/atom-log" title="Atom feed for test: log" />
206 href="/atom-log" title="Atom feed for test: log" />
207 <link rel="alternate" type="application/rss+xml"
207 <link rel="alternate" type="application/rss+xml"
208 href="/rss-log" title="RSS feed for test: log" />
208 href="/rss-log" title="RSS feed for test: log" />
209 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
209 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
210 </head>
210 </head>
211 <body>
211 <body>
212
212
213 <div class="container">
213 <div class="container">
214 <div class="menu">
214 <div class="menu">
215 <div class="logo">
215 <div class="logo">
216 <a href="http://mercurial.selenic.com/">
216 <a href="http://mercurial.selenic.com/">
217 <img src="/static/hglogo.png" alt="mercurial" /></a>
217 <img src="/static/hglogo.png" alt="mercurial" /></a>
218 </div>
218 </div>
219 <ul>
219 <ul>
220 <li><a href="/shortlog/000000000000">log</a></li>
220 <li><a href="/shortlog/000000000000">log</a></li>
221 <li class="active">graph</li>
221 <li class="active">graph</li>
222 <li><a href="/tags">tags</a></li>
222 <li><a href="/tags">tags</a></li>
223 <li><a href="/bookmarks">bookmarks</a></li>
223 <li><a href="/bookmarks">bookmarks</a></li>
224 <li><a href="/branches">branches</a></li>
224 <li><a href="/branches">branches</a></li>
225 </ul>
225 </ul>
226 <ul>
226 <ul>
227 <li><a href="/rev/000000000000">changeset</a></li>
227 <li><a href="/rev/000000000000">changeset</a></li>
228 <li><a href="/file/000000000000">browse</a></li>
228 <li><a href="/file/000000000000">browse</a></li>
229 </ul>
229 </ul>
230 <ul>
230 <ul>
231 <li><a href="/help">help</a></li>
231 <li><a href="/help">help</a></li>
232 </ul>
232 </ul>
233 <p>
233 <p>
234 <div class="atom-logo">
234 <div class="atom-logo">
235 <a href="/atom-log" title="subscribe to atom feed">
235 <a href="/atom-log" title="subscribe to atom feed">
236 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="atom feed">
236 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="atom feed">
237 </a>
237 </a>
238 </div>
238 </div>
239 </div>
239 </div>
240
240
241 <div class="main">
241 <div class="main">
242 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
242 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
243 <h3>graph</h3>
243 <h3>graph</h3>
244
244
245 <form class="search" action="/log">
245 <form class="search" action="/log">
246
246
247 <p><input name="rev" id="search1" type="text" size="30" /></p>
247 <p><input name="rev" id="search1" type="text" size="30" /></p>
248 <div id="hint">find changesets by author, revision,
248 <div id="hint">find changesets by author, revision,
249 files, or words in the commit message</div>
249 files, or words in the commit message</div>
250 </form>
250 </form>
251
251
252 <div class="navigate">
252 <div class="navigate">
253 <a href="/graph/-1?revcount=30">less</a>
253 <a href="/graph/-1?revcount=30">less</a>
254 <a href="/graph/-1?revcount=120">more</a>
254 <a href="/graph/-1?revcount=120">more</a>
255 | rev -1:
255 | rev -1:
256 </div>
256 </div>
257
257
258 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
258 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
259
259
260 <div id="wrapper">
260 <div id="wrapper">
261 <ul id="nodebgs"></ul>
261 <ul id="nodebgs"></ul>
262 <canvas id="graph" width="480" height="12"></canvas>
262 <canvas id="graph" width="480" height="12"></canvas>
263 <ul id="graphnodes"></ul>
263 <ul id="graphnodes"></ul>
264 </div>
264 </div>
265
265
266 <script type="text/javascript">
266 <script type="text/javascript">
267 <!-- hide script content
267 <!-- hide script content
268
268
269 var data = [];
269 var data = [];
270 var graph = new Graph();
270 var graph = new Graph();
271 graph.scale(39);
271 graph.scale(39);
272
272
273 graph.vertex = function(x, y, color, parity, cur) {
273 graph.vertex = function(x, y, color, parity, cur) {
274
274
275 this.ctx.beginPath();
275 this.ctx.beginPath();
276 color = this.setColor(color, 0.25, 0.75);
276 color = this.setColor(color, 0.25, 0.75);
277 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
277 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
278 this.ctx.fill();
278 this.ctx.fill();
279
279
280 var bg = '<li class="bg parity' + parity + '"></li>';
280 var bg = '<li class="bg parity' + parity + '"></li>';
281 var left = (this.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
281 var left = (this.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
282 var nstyle = 'padding-left: ' + left + 'px;';
282 var nstyle = 'padding-left: ' + left + 'px;';
283
283
284 var tagspan = '';
284 var tagspan = '';
285 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
285 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
286 tagspan = '<span class="logtags">';
286 tagspan = '<span class="logtags">';
287 if (cur[6][1]) {
287 if (cur[6][1]) {
288 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
288 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
289 tagspan += cur[6][0] + '</span> ';
289 tagspan += cur[6][0] + '</span> ';
290 } else if (!cur[6][1] && cur[6][0] != 'default') {
290 } else if (!cur[6][1] && cur[6][0] != 'default') {
291 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
291 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
292 tagspan += cur[6][0] + '</span> ';
292 tagspan += cur[6][0] + '</span> ';
293 }
293 }
294 if (cur[7].length) {
294 if (cur[7].length) {
295 for (var t in cur[7]) {
295 for (var t in cur[7]) {
296 var tag = cur[7][t];
296 var tag = cur[7][t];
297 tagspan += '<span class="tag">' + tag + '</span> ';
297 tagspan += '<span class="tag">' + tag + '</span> ';
298 }
298 }
299 }
299 }
300 if (cur[8].length) {
300 if (cur[8].length) {
301 for (var b in cur[8]) {
301 for (var b in cur[8]) {
302 var bookmark = cur[8][b];
302 var bookmark = cur[8][b];
303 tagspan += '<span class="tag">' + bookmark + '</span> ';
303 tagspan += '<span class="tag">' + bookmark + '</span> ';
304 }
304 }
305 }
305 }
306 tagspan += '</span>';
306 tagspan += '</span>';
307 }
307 }
308
308
309 var item = '<li style="' + nstyle + '"><span class="desc">';
309 var item = '<li style="' + nstyle + '"><span class="desc">';
310 item += '<a href="/rev/' + cur[0] + '" title="' + cur[0] + '">' + cur[3] + '</a>';
310 item += '<a href="/rev/' + cur[0] + '" title="' + cur[0] + '">' + cur[3] + '</a>';
311 item += '</span>' + tagspan + '<span class="info">' + cur[5] + ', by ' + cur[4] + '</span></li>';
311 item += '</span>' + tagspan + '<span class="info">' + cur[5] + ', by ' + cur[4] + '</span></li>';
312
312
313 return [bg, item];
313 return [bg, item];
314
314
315 }
315 }
316
316
317 graph.render(data);
317 graph.render(data);
318
318
319 // stop hiding script -->
319 // stop hiding script -->
320 </script>
320 </script>
321
321
322 <div class="navigate">
322 <div class="navigate">
323 <a href="/graph/-1?revcount=30">less</a>
323 <a href="/graph/-1?revcount=30">less</a>
324 <a href="/graph/-1?revcount=120">more</a>
324 <a href="/graph/-1?revcount=120">more</a>
325 | rev -1:
325 | rev -1:
326 </div>
326 </div>
327
327
328 </div>
328 </div>
329 </div>
329 </div>
330
330
331 <script type="text/javascript">process_dates()</script>
331 <script type="text/javascript">process_dates()</script>
332
332
333
333
334 </body>
334 </body>
335 </html>
335 </html>
336
336
337 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file')
337 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file')
338 200 Script output follows
338 200 Script output follows
339
339
340 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
340 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
341 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
341 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
342 <head>
342 <head>
343 <link rel="icon" href="/static/hgicon.png" type="image/png" />
343 <link rel="icon" href="/static/hgicon.png" type="image/png" />
344 <meta name="robots" content="index, nofollow" />
344 <meta name="robots" content="index, nofollow" />
345 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
345 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
346 <script type="text/javascript" src="/static/mercurial.js"></script>
346 <script type="text/javascript" src="/static/mercurial.js"></script>
347
347
348 <title>test: 000000000000 /</title>
348 <title>test: 000000000000 /</title>
349 </head>
349 </head>
350 <body>
350 <body>
351
351
352 <div class="container">
352 <div class="container">
353 <div class="menu">
353 <div class="menu">
354 <div class="logo">
354 <div class="logo">
355 <a href="http://mercurial.selenic.com/">
355 <a href="http://mercurial.selenic.com/">
356 <img src="/static/hglogo.png" alt="mercurial" /></a>
356 <img src="/static/hglogo.png" alt="mercurial" /></a>
357 </div>
357 </div>
358 <ul>
358 <ul>
359 <li><a href="/shortlog/000000000000">log</a></li>
359 <li><a href="/shortlog/000000000000">log</a></li>
360 <li><a href="/graph/000000000000">graph</a></li>
360 <li><a href="/graph/000000000000">graph</a></li>
361 <li><a href="/tags">tags</a></li>
361 <li><a href="/tags">tags</a></li>
362 <li><a href="/bookmarks">bookmarks</a></li>
362 <li><a href="/bookmarks">bookmarks</a></li>
363 <li><a href="/branches">branches</a></li>
363 <li><a href="/branches">branches</a></li>
364 </ul>
364 </ul>
365 <ul>
365 <ul>
366 <li><a href="/rev/000000000000">changeset</a></li>
366 <li><a href="/rev/000000000000">changeset</a></li>
367 <li class="active">browse</li>
367 <li class="active">browse</li>
368 </ul>
368 </ul>
369 <ul>
369 <ul>
370
370
371 </ul>
371 </ul>
372 <ul>
372 <ul>
373 <li><a href="/help">help</a></li>
373 <li><a href="/help">help</a></li>
374 </ul>
374 </ul>
375 </div>
375 </div>
376
376
377 <div class="main">
377 <div class="main">
378 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
378 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
379 <h3>directory / @ -1:000000000000 <span class="tag">tip</span> </h3>
379 <h3>directory / @ -1:000000000000 <span class="tag">tip</span> </h3>
380
380
381 <form class="search" action="/log">
381 <form class="search" action="/log">
382
382
383 <p><input name="rev" id="search1" type="text" size="30" /></p>
383 <p><input name="rev" id="search1" type="text" size="30" /></p>
384 <div id="hint">find changesets by author, revision,
384 <div id="hint">find changesets by author, revision,
385 files, or words in the commit message</div>
385 files, or words in the commit message</div>
386 </form>
386 </form>
387
387
388 <table class="bigtable">
388 <table class="bigtable">
389 <tr>
389 <tr>
390 <th class="name">name</th>
390 <th class="name">name</th>
391 <th class="size">size</th>
391 <th class="size">size</th>
392 <th class="permissions">permissions</th>
392 <th class="permissions">permissions</th>
393 </tr>
393 </tr>
394 <tr class="fileline parity0">
394 <tbody class="stripes2">
395 <tr class="fileline">
395 <td class="name"><a href="/file/000000000000/">[up]</a></td>
396 <td class="name"><a href="/file/000000000000/">[up]</a></td>
396 <td class="size"></td>
397 <td class="size"></td>
397 <td class="permissions">drwxr-xr-x</td>
398 <td class="permissions">drwxr-xr-x</td>
398 </tr>
399 </tr>
399
400
400
401
402 </tbody>
401 </table>
403 </table>
402 </div>
404 </div>
403 </div>
405 </div>
404 <script type="text/javascript">process_dates()</script>
406 <script type="text/javascript">process_dates()</script>
405
407
406
408
407 </body>
409 </body>
408 </html>
410 </html>
409
411
410
412
411 $ cd ..
413 $ cd ..
@@ -1,494 +1,496
1 $ "$TESTDIR/hghave" serve || exit 80
1 $ "$TESTDIR/hghave" serve || exit 80
2
2
3 Some tests for hgweb. Tests static files, plain files and different 404's.
3 Some tests for hgweb. Tests static files, plain files and different 404's.
4
4
5 $ hg init test
5 $ hg init test
6 $ cd test
6 $ cd test
7 $ mkdir da
7 $ mkdir da
8 $ echo foo > da/foo
8 $ echo foo > da/foo
9 $ echo foo > foo
9 $ echo foo > foo
10 $ hg ci -Ambase
10 $ hg ci -Ambase
11 adding da/foo
11 adding da/foo
12 adding foo
12 adding foo
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
14 $ cat hg.pid >> $DAEMON_PIDS
14 $ cat hg.pid >> $DAEMON_PIDS
15
15
16 manifest
16 manifest
17
17
18 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw')
18 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw')
19 200 Script output follows
19 200 Script output follows
20
20
21
21
22 drwxr-xr-x da
22 drwxr-xr-x da
23 -rw-r--r-- 4 foo
23 -rw-r--r-- 4 foo
24
24
25
25
26 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/da?style=raw')
26 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/da?style=raw')
27 200 Script output follows
27 200 Script output follows
28
28
29
29
30 -rw-r--r-- 4 foo
30 -rw-r--r-- 4 foo
31
31
32
32
33
33
34 plain file
34 plain file
35
35
36 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?style=raw'
36 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?style=raw'
37 200 Script output follows
37 200 Script output follows
38
38
39 foo
39 foo
40
40
41 should give a 404 - static file that does not exist
41 should give a 404 - static file that does not exist
42
42
43 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'static/bogus'
43 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'static/bogus'
44 404 Not Found
44 404 Not Found
45
45
46 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
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">
47 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
48 <head>
48 <head>
49 <link rel="icon" href="/static/hgicon.png" type="image/png" />
49 <link rel="icon" href="/static/hgicon.png" type="image/png" />
50 <meta name="robots" content="index, nofollow" />
50 <meta name="robots" content="index, nofollow" />
51 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
51 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
52 <script type="text/javascript" src="/static/mercurial.js"></script>
52 <script type="text/javascript" src="/static/mercurial.js"></script>
53
53
54 <title>test: error</title>
54 <title>test: error</title>
55 </head>
55 </head>
56 <body>
56 <body>
57
57
58 <div class="container">
58 <div class="container">
59 <div class="menu">
59 <div class="menu">
60 <div class="logo">
60 <div class="logo">
61 <a href="http://mercurial.selenic.com/">
61 <a href="http://mercurial.selenic.com/">
62 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
62 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
63 </div>
63 </div>
64 <ul>
64 <ul>
65 <li><a href="/shortlog">log</a></li>
65 <li><a href="/shortlog">log</a></li>
66 <li><a href="/graph">graph</a></li>
66 <li><a href="/graph">graph</a></li>
67 <li><a href="/tags">tags</a></li>
67 <li><a href="/tags">tags</a></li>
68 <li><a href="/bookmarks">bookmarks</a></li>
68 <li><a href="/bookmarks">bookmarks</a></li>
69 <li><a href="/branches">branches</a></li>
69 <li><a href="/branches">branches</a></li>
70 </ul>
70 </ul>
71 <ul>
71 <ul>
72 <li><a href="/help">help</a></li>
72 <li><a href="/help">help</a></li>
73 </ul>
73 </ul>
74 </div>
74 </div>
75
75
76 <div class="main">
76 <div class="main">
77
77
78 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
78 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
79 <h3>error</h3>
79 <h3>error</h3>
80
80
81 <form class="search" action="/log">
81 <form class="search" action="/log">
82
82
83 <p><input name="rev" id="search1" type="text" size="30"></p>
83 <p><input name="rev" id="search1" type="text" size="30"></p>
84 <div id="hint">find changesets by author, revision,
84 <div id="hint">find changesets by author, revision,
85 files, or words in the commit message</div>
85 files, or words in the commit message</div>
86 </form>
86 </form>
87
87
88 <div class="description">
88 <div class="description">
89 <p>
89 <p>
90 An error occurred while processing your request:
90 An error occurred while processing your request:
91 </p>
91 </p>
92 <p>
92 <p>
93 Not Found
93 Not Found
94 </p>
94 </p>
95 </div>
95 </div>
96 </div>
96 </div>
97 </div>
97 </div>
98
98
99 <script type="text/javascript">process_dates()</script>
99 <script type="text/javascript">process_dates()</script>
100
100
101
101
102 </body>
102 </body>
103 </html>
103 </html>
104
104
105 [1]
105 [1]
106
106
107 should give a 404 - bad revision
107 should give a 404 - bad revision
108
108
109 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/spam/foo?style=raw'
109 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/spam/foo?style=raw'
110 404 Not Found
110 404 Not Found
111
111
112
112
113 error: revision not found: spam
113 error: revision not found: spam
114 [1]
114 [1]
115
115
116 should give a 400 - bad command
116 should give a 400 - bad command
117
117
118 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
118 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
119 400* (glob)
119 400* (glob)
120
120
121
121
122 error: no such method: spam
122 error: no such method: spam
123 [1]
123 [1]
124
124
125 should give a 404 - file does not exist
125 should give a 404 - file does not exist
126
126
127 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork?style=raw'
127 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork?style=raw'
128 404 Not Found
128 404 Not Found
129
129
130
130
131 error: bork@2ef0ac749a14: not found in manifest
131 error: bork@2ef0ac749a14: not found in manifest
132 [1]
132 [1]
133 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork'
133 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork'
134 404 Not Found
134 404 Not Found
135
135
136 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
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">
137 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
138 <head>
138 <head>
139 <link rel="icon" href="/static/hgicon.png" type="image/png" />
139 <link rel="icon" href="/static/hgicon.png" type="image/png" />
140 <meta name="robots" content="index, nofollow" />
140 <meta name="robots" content="index, nofollow" />
141 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
141 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
142 <script type="text/javascript" src="/static/mercurial.js"></script>
142 <script type="text/javascript" src="/static/mercurial.js"></script>
143
143
144 <title>test: error</title>
144 <title>test: error</title>
145 </head>
145 </head>
146 <body>
146 <body>
147
147
148 <div class="container">
148 <div class="container">
149 <div class="menu">
149 <div class="menu">
150 <div class="logo">
150 <div class="logo">
151 <a href="http://mercurial.selenic.com/">
151 <a href="http://mercurial.selenic.com/">
152 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
152 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
153 </div>
153 </div>
154 <ul>
154 <ul>
155 <li><a href="/shortlog">log</a></li>
155 <li><a href="/shortlog">log</a></li>
156 <li><a href="/graph">graph</a></li>
156 <li><a href="/graph">graph</a></li>
157 <li><a href="/tags">tags</a></li>
157 <li><a href="/tags">tags</a></li>
158 <li><a href="/bookmarks">bookmarks</a></li>
158 <li><a href="/bookmarks">bookmarks</a></li>
159 <li><a href="/branches">branches</a></li>
159 <li><a href="/branches">branches</a></li>
160 </ul>
160 </ul>
161 <ul>
161 <ul>
162 <li><a href="/help">help</a></li>
162 <li><a href="/help">help</a></li>
163 </ul>
163 </ul>
164 </div>
164 </div>
165
165
166 <div class="main">
166 <div class="main">
167
167
168 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
168 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
169 <h3>error</h3>
169 <h3>error</h3>
170
170
171 <form class="search" action="/log">
171 <form class="search" action="/log">
172
172
173 <p><input name="rev" id="search1" type="text" size="30"></p>
173 <p><input name="rev" id="search1" type="text" size="30"></p>
174 <div id="hint">find changesets by author, revision,
174 <div id="hint">find changesets by author, revision,
175 files, or words in the commit message</div>
175 files, or words in the commit message</div>
176 </form>
176 </form>
177
177
178 <div class="description">
178 <div class="description">
179 <p>
179 <p>
180 An error occurred while processing your request:
180 An error occurred while processing your request:
181 </p>
181 </p>
182 <p>
182 <p>
183 bork@2ef0ac749a14: not found in manifest
183 bork@2ef0ac749a14: not found in manifest
184 </p>
184 </p>
185 </div>
185 </div>
186 </div>
186 </div>
187 </div>
187 </div>
188
188
189 <script type="text/javascript">process_dates()</script>
189 <script type="text/javascript">process_dates()</script>
190
190
191
191
192 </body>
192 </body>
193 </html>
193 </html>
194
194
195 [1]
195 [1]
196 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/bork?style=raw'
196 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/bork?style=raw'
197 404 Not Found
197 404 Not Found
198
198
199
199
200 error: bork@2ef0ac749a14: not found in manifest
200 error: bork@2ef0ac749a14: not found in manifest
201 [1]
201 [1]
202
202
203 try bad style
203 try bad style
204
204
205 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=foobar')
205 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=foobar')
206 200 Script output follows
206 200 Script output follows
207
207
208 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
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">
209 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
210 <head>
210 <head>
211 <link rel="icon" href="/static/hgicon.png" type="image/png" />
211 <link rel="icon" href="/static/hgicon.png" type="image/png" />
212 <meta name="robots" content="index, nofollow" />
212 <meta name="robots" content="index, nofollow" />
213 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
213 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
214 <script type="text/javascript" src="/static/mercurial.js"></script>
214 <script type="text/javascript" src="/static/mercurial.js"></script>
215
215
216 <title>test: 2ef0ac749a14 /</title>
216 <title>test: 2ef0ac749a14 /</title>
217 </head>
217 </head>
218 <body>
218 <body>
219
219
220 <div class="container">
220 <div class="container">
221 <div class="menu">
221 <div class="menu">
222 <div class="logo">
222 <div class="logo">
223 <a href="http://mercurial.selenic.com/">
223 <a href="http://mercurial.selenic.com/">
224 <img src="/static/hglogo.png" alt="mercurial" /></a>
224 <img src="/static/hglogo.png" alt="mercurial" /></a>
225 </div>
225 </div>
226 <ul>
226 <ul>
227 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
227 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
228 <li><a href="/graph/2ef0ac749a14">graph</a></li>
228 <li><a href="/graph/2ef0ac749a14">graph</a></li>
229 <li><a href="/tags">tags</a></li>
229 <li><a href="/tags">tags</a></li>
230 <li><a href="/bookmarks">bookmarks</a></li>
230 <li><a href="/bookmarks">bookmarks</a></li>
231 <li><a href="/branches">branches</a></li>
231 <li><a href="/branches">branches</a></li>
232 </ul>
232 </ul>
233 <ul>
233 <ul>
234 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
234 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
235 <li class="active">browse</li>
235 <li class="active">browse</li>
236 </ul>
236 </ul>
237 <ul>
237 <ul>
238
238
239 </ul>
239 </ul>
240 <ul>
240 <ul>
241 <li><a href="/help">help</a></li>
241 <li><a href="/help">help</a></li>
242 </ul>
242 </ul>
243 </div>
243 </div>
244
244
245 <div class="main">
245 <div class="main">
246 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
246 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
247 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
247 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
248
248
249 <form class="search" action="/log">
249 <form class="search" action="/log">
250
250
251 <p><input name="rev" id="search1" type="text" size="30" /></p>
251 <p><input name="rev" id="search1" type="text" size="30" /></p>
252 <div id="hint">find changesets by author, revision,
252 <div id="hint">find changesets by author, revision,
253 files, or words in the commit message</div>
253 files, or words in the commit message</div>
254 </form>
254 </form>
255
255
256 <table class="bigtable">
256 <table class="bigtable">
257 <tr>
257 <tr>
258 <th class="name">name</th>
258 <th class="name">name</th>
259 <th class="size">size</th>
259 <th class="size">size</th>
260 <th class="permissions">permissions</th>
260 <th class="permissions">permissions</th>
261 </tr>
261 </tr>
262 <tr class="fileline parity0">
262 <tbody class="stripes2">
263 <tr class="fileline">
263 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
264 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
264 <td class="size"></td>
265 <td class="size"></td>
265 <td class="permissions">drwxr-xr-x</td>
266 <td class="permissions">drwxr-xr-x</td>
266 </tr>
267 </tr>
267
268
268 <tr class="fileline parity1">
269 <tr class="fileline">
269 <td class="name">
270 <td class="name">
270 <a href="/file/2ef0ac749a14/da">
271 <a href="/file/2ef0ac749a14/da">
271 <img src="/static/coal-folder.png" alt="dir."/> da/
272 <img src="/static/coal-folder.png" alt="dir."/> da/
272 </a>
273 </a>
273 <a href="/file/2ef0ac749a14/da/">
274 <a href="/file/2ef0ac749a14/da/">
274
275
275 </a>
276 </a>
276 </td>
277 </td>
277 <td class="size"></td>
278 <td class="size"></td>
278 <td class="permissions">drwxr-xr-x</td>
279 <td class="permissions">drwxr-xr-x</td>
279 </tr>
280 </tr>
280
281
281 <tr class="fileline parity0">
282 <tr class="fileline">
282 <td class="filename">
283 <td class="filename">
283 <a href="/file/2ef0ac749a14/foo">
284 <a href="/file/2ef0ac749a14/foo">
284 <img src="/static/coal-file.png" alt="file"/> foo
285 <img src="/static/coal-file.png" alt="file"/> foo
285 </a>
286 </a>
286 </td>
287 </td>
287 <td class="size">4</td>
288 <td class="size">4</td>
288 <td class="permissions">-rw-r--r--</td>
289 <td class="permissions">-rw-r--r--</td>
289 </tr>
290 </tr>
291 </tbody>
290 </table>
292 </table>
291 </div>
293 </div>
292 </div>
294 </div>
293 <script type="text/javascript">process_dates()</script>
295 <script type="text/javascript">process_dates()</script>
294
296
295
297
296 </body>
298 </body>
297 </html>
299 </html>
298
300
299
301
300 stop and restart
302 stop and restart
301
303
302 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
304 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
303 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
305 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
304 $ cat hg.pid >> $DAEMON_PIDS
306 $ cat hg.pid >> $DAEMON_PIDS
305
307
306 Test the access/error files are opened in append mode
308 Test the access/error files are opened in append mode
307
309
308 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
310 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
309 10 log lines written
311 10 log lines written
310
312
311 static file
313 static file
312
314
313 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
315 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
314 200 Script output follows
316 200 Script output follows
315 content-length: 4607
317 content-length: 4607
316 content-type: text/css
318 content-type: text/css
317
319
318 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
320 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
319 a { color:#0000cc; }
321 a { color:#0000cc; }
320 a:hover, a:visited, a:active { color:#880000; }
322 a:hover, a:visited, a:active { color:#880000; }
321 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
323 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
322 div.page_header a:visited { color:#0000cc; }
324 div.page_header a:visited { color:#0000cc; }
323 div.page_header a:hover { color:#880000; }
325 div.page_header a:hover { color:#880000; }
324 div.page_nav { padding:8px; }
326 div.page_nav { padding:8px; }
325 div.page_nav a:visited { color:#0000cc; }
327 div.page_nav a:visited { color:#0000cc; }
326 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
328 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
327 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
329 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
328 div.page_footer_text { float:left; color:#555555; font-style:italic; }
330 div.page_footer_text { float:left; color:#555555; font-style:italic; }
329 div.page_body { padding:8px; }
331 div.page_body { padding:8px; }
330 div.title, a.title {
332 div.title, a.title {
331 display:block; padding:6px 8px;
333 display:block; padding:6px 8px;
332 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
334 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
333 }
335 }
334 a.title:hover { background-color: #d9d8d1; }
336 a.title:hover { background-color: #d9d8d1; }
335 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
337 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
336 div.log_body { padding:8px 8px 8px 150px; }
338 div.log_body { padding:8px 8px 8px 150px; }
337 .age { white-space:nowrap; }
339 .age { white-space:nowrap; }
338 span.age { position:relative; float:left; width:142px; font-style:italic; }
340 span.age { position:relative; float:left; width:142px; font-style:italic; }
339 div.log_link {
341 div.log_link {
340 padding:0px 8px;
342 padding:0px 8px;
341 font-size:10px; font-family:sans-serif; font-style:normal;
343 font-size:10px; font-family:sans-serif; font-style:normal;
342 position:relative; float:left; width:136px;
344 position:relative; float:left; width:136px;
343 }
345 }
344 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
346 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
345 a.list { text-decoration:none; color:#000000; }
347 a.list { text-decoration:none; color:#000000; }
346 a.list:hover { text-decoration:underline; color:#880000; }
348 a.list:hover { text-decoration:underline; color:#880000; }
347 table { padding:8px 4px; }
349 table { padding:8px 4px; }
348 th { padding:2px 5px; font-size:12px; text-align:left; }
350 th { padding:2px 5px; font-size:12px; text-align:left; }
349 tr.light:hover, .parity0:hover { background-color:#edece6; }
351 tr.light:hover, .parity0:hover { background-color:#edece6; }
350 tr.dark, .parity1 { background-color:#f6f6f0; }
352 tr.dark, .parity1 { background-color:#f6f6f0; }
351 tr.dark:hover, .parity1:hover { background-color:#edece6; }
353 tr.dark:hover, .parity1:hover { background-color:#edece6; }
352 td { padding:2px 5px; font-size:12px; vertical-align:top; }
354 td { padding:2px 5px; font-size:12px; vertical-align:top; }
353 td.closed { background-color: #99f; }
355 td.closed { background-color: #99f; }
354 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
356 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
355 td.indexlinks { white-space: nowrap; }
357 td.indexlinks { white-space: nowrap; }
356 td.indexlinks a {
358 td.indexlinks a {
357 padding: 2px 5px; line-height: 10px;
359 padding: 2px 5px; line-height: 10px;
358 border: 1px solid;
360 border: 1px solid;
359 color: #ffffff; background-color: #7777bb;
361 color: #ffffff; background-color: #7777bb;
360 border-color: #aaaadd #333366 #333366 #aaaadd;
362 border-color: #aaaadd #333366 #333366 #aaaadd;
361 font-weight: bold; text-align: center; text-decoration: none;
363 font-weight: bold; text-align: center; text-decoration: none;
362 font-size: 10px;
364 font-size: 10px;
363 }
365 }
364 td.indexlinks a:hover { background-color: #6666aa; }
366 td.indexlinks a:hover { background-color: #6666aa; }
365 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
367 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
366 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
368 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
367 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
369 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
368 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
370 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
369 .linenr { color:#999999; text-decoration:none }
371 .linenr { color:#999999; text-decoration:none }
370 div.rss_logo { float: right; white-space: nowrap; }
372 div.rss_logo { float: right; white-space: nowrap; }
371 div.rss_logo a {
373 div.rss_logo a {
372 padding:3px 6px; line-height:10px;
374 padding:3px 6px; line-height:10px;
373 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
375 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
374 color:#ffffff; background-color:#ff6600;
376 color:#ffffff; background-color:#ff6600;
375 font-weight:bold; font-family:sans-serif; font-size:10px;
377 font-weight:bold; font-family:sans-serif; font-size:10px;
376 text-align:center; text-decoration:none;
378 text-align:center; text-decoration:none;
377 }
379 }
378 div.rss_logo a:hover { background-color:#ee5500; }
380 div.rss_logo a:hover { background-color:#ee5500; }
379 pre { margin: 0; }
381 pre { margin: 0; }
380 span.logtags span {
382 span.logtags span {
381 padding: 0px 4px;
383 padding: 0px 4px;
382 font-size: 10px;
384 font-size: 10px;
383 font-weight: normal;
385 font-weight: normal;
384 border: 1px solid;
386 border: 1px solid;
385 background-color: #ffaaff;
387 background-color: #ffaaff;
386 border-color: #ffccff #ff00ee #ff00ee #ffccff;
388 border-color: #ffccff #ff00ee #ff00ee #ffccff;
387 }
389 }
388 span.logtags span.tagtag {
390 span.logtags span.tagtag {
389 background-color: #ffffaa;
391 background-color: #ffffaa;
390 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
392 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
391 }
393 }
392 span.logtags span.branchtag {
394 span.logtags span.branchtag {
393 background-color: #aaffaa;
395 background-color: #aaffaa;
394 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
396 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
395 }
397 }
396 span.logtags span.inbranchtag {
398 span.logtags span.inbranchtag {
397 background-color: #d5dde6;
399 background-color: #d5dde6;
398 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
400 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
399 }
401 }
400 span.logtags span.bookmarktag {
402 span.logtags span.bookmarktag {
401 background-color: #afdffa;
403 background-color: #afdffa;
402 border-color: #ccecff #46ace6 #46ace6 #ccecff;
404 border-color: #ccecff #46ace6 #46ace6 #ccecff;
403 }
405 }
404
406
405 /* Graph */
407 /* Graph */
406 div#wrapper {
408 div#wrapper {
407 position: relative;
409 position: relative;
408 margin: 0;
410 margin: 0;
409 padding: 0;
411 padding: 0;
410 margin-top: 3px;
412 margin-top: 3px;
411 }
413 }
412
414
413 canvas {
415 canvas {
414 position: absolute;
416 position: absolute;
415 z-index: 5;
417 z-index: 5;
416 top: -0.9em;
418 top: -0.9em;
417 margin: 0;
419 margin: 0;
418 }
420 }
419
421
420 ul#nodebgs {
422 ul#nodebgs {
421 list-style: none inside none;
423 list-style: none inside none;
422 padding: 0;
424 padding: 0;
423 margin: 0;
425 margin: 0;
424 top: -0.7em;
426 top: -0.7em;
425 }
427 }
426
428
427 ul#graphnodes li, ul#nodebgs li {
429 ul#graphnodes li, ul#nodebgs li {
428 height: 39px;
430 height: 39px;
429 }
431 }
430
432
431 ul#graphnodes {
433 ul#graphnodes {
432 position: absolute;
434 position: absolute;
433 z-index: 10;
435 z-index: 10;
434 top: -0.8em;
436 top: -0.8em;
435 list-style: none inside none;
437 list-style: none inside none;
436 padding: 0;
438 padding: 0;
437 }
439 }
438
440
439 ul#graphnodes li .info {
441 ul#graphnodes li .info {
440 display: block;
442 display: block;
441 font-size: 100%;
443 font-size: 100%;
442 position: relative;
444 position: relative;
443 top: -3px;
445 top: -3px;
444 font-style: italic;
446 font-style: italic;
445 }
447 }
446
448
447 /* Comparison */
449 /* Comparison */
448 .legend {
450 .legend {
449 padding: 1.5% 0 1.5% 0;
451 padding: 1.5% 0 1.5% 0;
450 }
452 }
451
453
452 .legendinfo {
454 .legendinfo {
453 border: 1px solid #d9d8d1;
455 border: 1px solid #d9d8d1;
454 font-size: 80%;
456 font-size: 80%;
455 text-align: center;
457 text-align: center;
456 padding: 0.5%;
458 padding: 0.5%;
457 }
459 }
458
460
459 .equal {
461 .equal {
460 background-color: #ffffff;
462 background-color: #ffffff;
461 }
463 }
462
464
463 .delete {
465 .delete {
464 background-color: #faa;
466 background-color: #faa;
465 color: #333;
467 color: #333;
466 }
468 }
467
469
468 .insert {
470 .insert {
469 background-color: #ffa;
471 background-color: #ffa;
470 }
472 }
471
473
472 .replace {
474 .replace {
473 background-color: #e8e8e8;
475 background-color: #e8e8e8;
474 }
476 }
475
477
476 .comparison {
478 .comparison {
477 overflow-x: auto;
479 overflow-x: auto;
478 }
480 }
479
481
480 .header th {
482 .header th {
481 text-align: center;
483 text-align: center;
482 }
484 }
483
485
484 .block {
486 .block {
485 border-top: 1px solid #d9d8d1;
487 border-top: 1px solid #d9d8d1;
486 }
488 }
487 304 Not Modified
489 304 Not Modified
488
490
489
491
490 errors
492 errors
491
493
492 $ cat errors.log
494 $ cat errors.log
493
495
494 $ cd ..
496 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now