##// END OF EJS Templates
hgweb: add links to diff and changeset in hover-box on annotate view
Denis Laxalde -
r29523:4b6afd1b default
parent child Browse files
Show More
@@ -1,339 +1,341
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {if(basename, '{basename|escape}', '{topic|escape}')}
17 {if(basename, '{basename|escape}', '{topic|escape}')}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td class="link">
32 <td class="link">
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td class="link">
44 <td class="link">
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td style="font-family:monospace">drwxr-xr-x</td>
65 <td style="font-family:monospace">drwxr-xr-x</td>
66 <td style="font-family:monospace"></td>
66 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
68 <td>
68 <td>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
71 </td>
71 </td>
72 <td class="link">
72 <td class="link">
73 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a>
73 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a>
74 </td>
74 </td>
75 </tr>'
75 </tr>'
76 fileentry = '
76 fileentry = '
77 <tr class="parity{parity}">
77 <tr class="parity{parity}">
78 <td style="font-family:monospace">{permissions|permissions}</td>
78 <td style="font-family:monospace">{permissions|permissions}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
81 <td class="list">
81 <td class="list">
82 <a class="list" href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
82 <a class="list" href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
83 </td>
83 </td>
84 <td class="link">
84 <td class="link">
85 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
85 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
86 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
86 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
87 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
87 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
88 </td>
88 </td>
89 </tr>'
89 </tr>'
90 filerevision = filerevision.tmpl
90 filerevision = filerevision.tmpl
91 fileannotate = fileannotate.tmpl
91 fileannotate = fileannotate.tmpl
92 filediff = filediff.tmpl
92 filediff = filediff.tmpl
93 filecomparison = filecomparison.tmpl
93 filecomparison = filecomparison.tmpl
94 filelog = filelog.tmpl
94 filelog = filelog.tmpl
95 fileline = '
95 fileline = '
96 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
96 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
97 annotateline = '
97 annotateline = '
98 <tr id="{lineid}" style="font-family:monospace" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
98 <tr id="{lineid}" style="font-family:monospace" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
99 <td class="annotate linenr" style="text-align: right;">
99 <td class="annotate linenr" style="text-align: right;">
100 {if(blockhead,
100 {if(blockhead,
101 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
101 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
102 {author|user}@{rev}
102 {author|user}@{rev}
103 </a>')}
103 </a>')}
104 <div class="annotate-info">
104 <div class="annotate-info">
105 <div>{node|short}: {desc|escape|firstline}</div>
105 <div>{node|short}: {desc|escape|firstline}</div>
106 <div>parents: {parents%annotateparent}</div>
106 <div>parents: {parents%annotateparent}</div>
107 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
108 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
107 </div>
109 </div>
108 </td>
110 </td>
109 <td><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
111 <td><pre><a class="linenr" href="#{lineid}">{linenumber}</a></pre></td>
110 <td><pre>{line|escape}</pre></td>
112 <td><pre>{line|escape}</pre></td>
111 </tr>'
113 </tr>'
112 annotateparent = '
114 annotateparent = '
113 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
115 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
114 difflineplus = '
116 difflineplus = '
115 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
117 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
116 difflineminus = '
118 difflineminus = '
117 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
119 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
118 difflineat = '
120 difflineat = '
119 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
121 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
120 diffline = '
122 diffline = '
121 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
123 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
122
124
123 comparisonblock ='
125 comparisonblock ='
124 <tbody class="block">
126 <tbody class="block">
125 {lines}
127 {lines}
126 </tbody>'
128 </tbody>'
127 comparisonline = '
129 comparisonline = '
128 <tr id="{lineid}" style="font-family:monospace">
130 <tr id="{lineid}" style="font-family:monospace">
129 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
131 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
130 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
132 <td class="{type}"><pre><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
131 </tr>'
133 </tr>'
132
134
133 changelogparent = '
135 changelogparent = '
134 <tr>
136 <tr>
135 <th class="parent">parent {rev}:</th>
137 <th class="parent">parent {rev}:</th>
136 <td class="parent">
138 <td class="parent">
137 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
139 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
138 </td>
140 </td>
139 </tr>'
141 </tr>'
140 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
142 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
141 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
143 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
142 changesetparent = '
144 changesetparent = '
143 <tr>
145 <tr>
144 <td>parent {rev}</td>
146 <td>parent {rev}</td>
145 <td style="font-family:monospace">
147 <td style="font-family:monospace">
146 {changesetlink}
148 {changesetlink}
147 </td>
149 </td>
148 </tr>'
150 </tr>'
149 changesetparentdiff = '
151 changesetparentdiff = '
150 <tr>
152 <tr>
151 <td>parent {rev}</td>
153 <td>parent {rev}</td>
152 <td style="font-family:monospace">
154 <td style="font-family:monospace">
153 {changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}
155 {changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}
154 </td>
156 </td>
155 </tr>'
157 </tr>'
156 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
158 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
157 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
159 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
158 filerevparent = '
160 filerevparent = '
159 <tr>
161 <tr>
160 <td>parent {rev}</td>
162 <td>parent {rev}</td>
161 <td style="font-family:monospace">
163 <td style="font-family:monospace">
162 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
164 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
163 {rename%filerename}{node|short}
165 {rename%filerename}{node|short}
164 </a>
166 </a>
165 </td>
167 </td>
166 </tr>'
168 </tr>'
167 filerename = '{file|escape}@'
169 filerename = '{file|escape}@'
168 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
170 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
169 fileannotateparent = '
171 fileannotateparent = '
170 <tr>
172 <tr>
171 <td>parent {rev}</td>
173 <td>parent {rev}</td>
172 <td style="font-family:monospace">
174 <td style="font-family:monospace">
173 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
175 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
174 {rename%filerename}{node|short}
176 {rename%filerename}{node|short}
175 </a>
177 </a>
176 </td>
178 </td>
177 </tr>'
179 </tr>'
178 changelogchild = '
180 changelogchild = '
179 <tr>
181 <tr>
180 <th class="child">child {rev}:</th>
182 <th class="child">child {rev}:</th>
181 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
183 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
182 </tr>'
184 </tr>'
183 changesetchild = '
185 changesetchild = '
184 <tr>
186 <tr>
185 <td>child {rev}</td>
187 <td>child {rev}</td>
186 <td style="font-family:monospace">
188 <td style="font-family:monospace">
187 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
189 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
188 </td>
190 </td>
189 </tr>'
191 </tr>'
190 filerevchild = '
192 filerevchild = '
191 <tr>
193 <tr>
192 <td>child {rev}</td>
194 <td>child {rev}</td>
193 <td style="font-family:monospace">
195 <td style="font-family:monospace">
194 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
196 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
195 </tr>'
197 </tr>'
196 fileannotatechild = '
198 fileannotatechild = '
197 <tr>
199 <tr>
198 <td>child {rev}</td>
200 <td>child {rev}</td>
199 <td style="font-family:monospace">
201 <td style="font-family:monospace">
200 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
202 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
201 </tr>'
203 </tr>'
202 tags = tags.tmpl
204 tags = tags.tmpl
203 tagentry = '
205 tagentry = '
204 <tr class="parity{parity}">
206 <tr class="parity{parity}">
205 <td class="age"><i class="age">{date|rfc822date}</i></td>
207 <td class="age"><i class="age">{date|rfc822date}</i></td>
206 <td><a class="list" href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
208 <td><a class="list" href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
207 <td class="link">
209 <td class="link">
208 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
210 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
209 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
211 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
210 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
212 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
211 </td>
213 </td>
212 </tr>'
214 </tr>'
213 bookmarks = bookmarks.tmpl
215 bookmarks = bookmarks.tmpl
214 bookmarkentry = '
216 bookmarkentry = '
215 <tr class="parity{parity}">
217 <tr class="parity{parity}">
216 <td class="age"><i class="age">{date|rfc822date}</i></td>
218 <td class="age"><i class="age">{date|rfc822date}</i></td>
217 <td><a class="list" href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
219 <td><a class="list" href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
218 <td class="link">
220 <td class="link">
219 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
221 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
220 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
222 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
221 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
223 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
222 </td>
224 </td>
223 </tr>'
225 </tr>'
224 branches = branches.tmpl
226 branches = branches.tmpl
225 branchentry = '
227 branchentry = '
226 <tr class="parity{parity}">
228 <tr class="parity{parity}">
227 <td class="age"><i class="age">{date|rfc822date}</i></td>
229 <td class="age"><i class="age">{date|rfc822date}</i></td>
228 <td class="{status}"><a class="list" href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}"><b>{branch|escape}</b></a></td>
230 <td class="{status}"><a class="list" href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}"><b>{branch|escape}</b></a></td>
229 <td class="link">
231 <td class="link">
230 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
232 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
231 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
233 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
232 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
234 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
233 </td>
235 </td>
234 </tr>'
236 </tr>'
235 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
237 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
236 filediffparent = '
238 filediffparent = '
237 <tr>
239 <tr>
238 <td>parent {rev}</td>
240 <td>parent {rev}</td>
239 <td style="font-family:monospace">
241 <td style="font-family:monospace">
240 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
242 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
241 {node|short}
243 {node|short}
242 </a>
244 </a>
243 </td>
245 </td>
244 </tr>'
246 </tr>'
245 filecompparent = '
247 filecompparent = '
246 <tr>
248 <tr>
247 <td>parent {rev}</td>
249 <td>parent {rev}</td>
248 <td style="font-family:monospace">
250 <td style="font-family:monospace">
249 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
251 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
250 {node|short}
252 {node|short}
251 </a>
253 </a>
252 </td>
254 </td>
253 </tr>'
255 </tr>'
254 filelogparent = '
256 filelogparent = '
255 <tr>
257 <tr>
256 <td align="right">parent {rev}:&nbsp;</td>
258 <td align="right">parent {rev}:&nbsp;</td>
257 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
259 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
258 </tr>'
260 </tr>'
259 filediffchild = '
261 filediffchild = '
260 <tr>
262 <tr>
261 <td>child {rev}</td>
263 <td>child {rev}</td>
262 <td style="font-family:monospace">
264 <td style="font-family:monospace">
263 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
265 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
264 </td>
266 </td>
265 </tr>'
267 </tr>'
266 filecompchild = '
268 filecompchild = '
267 <tr>
269 <tr>
268 <td>child {rev}</td>
270 <td>child {rev}</td>
269 <td style="font-family:monospace">
271 <td style="font-family:monospace">
270 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
272 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
271 </td>
273 </td>
272 </tr>'
274 </tr>'
273 filelogchild = '
275 filelogchild = '
274 <tr>
276 <tr>
275 <td align="right">child {rev}:&nbsp;</td>
277 <td align="right">child {rev}:&nbsp;</td>
276 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
278 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
277 </tr>'
279 </tr>'
278 shortlog = shortlog.tmpl
280 shortlog = shortlog.tmpl
279 graph = graph.tmpl
281 graph = graph.tmpl
280 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
282 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
281 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
283 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
282 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
284 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
283 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
285 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
284 shortlogentry = '
286 shortlogentry = '
285 <tr class="parity{parity}">
287 <tr class="parity{parity}">
286 <td class="age"><i class="age">{date|rfc822date}</i></td>
288 <td class="age"><i class="age">{date|rfc822date}</i></td>
287 <td><i>{author|person}</i></td>
289 <td><i>{author|person}</i></td>
288 <td>
290 <td>
289 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
291 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
290 <b>{desc|strip|firstline|escape|nonempty}</b>
292 <b>{desc|strip|firstline|escape|nonempty}</b>
291 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
293 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
292 </a>
294 </a>
293 </td>
295 </td>
294 <td class="link" nowrap>
296 <td class="link" nowrap>
295 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
297 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
296 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
298 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
297 </td>
299 </td>
298 </tr>'
300 </tr>'
299 filelogentry = '
301 filelogentry = '
300 <tr class="parity{parity}">
302 <tr class="parity{parity}">
301 <td class="age"><i class="age">{date|rfc822date}</i></td>
303 <td class="age"><i class="age">{date|rfc822date}</i></td>
302 <td><i>{author|person}</i></td>
304 <td><i>{author|person}</i></td>
303 <td>
305 <td>
304 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
306 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
305 <b>{desc|strip|firstline|escape|nonempty}</b>
307 <b>{desc|strip|firstline|escape|nonempty}</b>
306 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
308 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
307 </a>
309 </a>
308 </td>
310 </td>
309 <td class="link">
311 <td class="link">
310 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
312 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
311 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
313 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
312 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
314 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
313 {rename%filelogrename}
315 {rename%filelogrename}
314 </td>
316 </td>
315 </tr>'
317 </tr>'
316 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
318 archiveentry = ' | <a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
317 indexentry = '
319 indexentry = '
318 <tr class="parity{parity}">
320 <tr class="parity{parity}">
319 <td>
321 <td>
320 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
322 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
321 <b>{name|escape}</b>
323 <b>{name|escape}</b>
322 </a>
324 </a>
323 </td>
325 </td>
324 <td>{description}</td>
326 <td>{description}</td>
325 <td>{contact|obfuscate}</td>
327 <td>{contact|obfuscate}</td>
326 <td class="age">{lastchange|rfc822date}</td>
328 <td class="age">{lastchange|rfc822date}</td>
327 <td class="indexlinks">{archives%indexarchiveentry}</td>
329 <td class="indexlinks">{archives%indexarchiveentry}</td>
328 <td>{if(isdirectory, '',
330 <td>{if(isdirectory, '',
329 '<div class="rss_logo">
331 '<div class="rss_logo">
330 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
332 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
331 </div>'
333 </div>'
332 )}
334 )}
333 </td>
335 </td>
334 </tr>\n'
336 </tr>\n'
335 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
337 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
336 index = index.tmpl
338 index = index.tmpl
337 urlparameter = '{separator}{name}={value|urlescape}'
339 urlparameter = '{separator}{name}={value|urlescape}'
338 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
340 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
339 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
341 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,294 +1,296
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {if(basename, '{basename|escape}', '{topic|escape}')}
17 {if(basename, '{basename|escape}', '{topic|escape}')}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td>
32 <td>
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td>
44 <td>
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td>drwxr-xr-x</td>
65 <td>drwxr-xr-x</td>
66 <td></td>
66 <td></td>
67 <td></td>
67 <td></td>
68 <td>
68 <td>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
69 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
70 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
71 </td>
71 </td>
72 <td><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
72 <td><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
73 </tr>'
73 </tr>'
74 fileentry = '
74 fileentry = '
75 <tr class="parity{parity}">
75 <tr class="parity{parity}">
76 <td>{permissions|permissions}</td>
76 <td>{permissions|permissions}</td>
77 <td>{date|isodate}</td>
77 <td>{date|isodate}</td>
78 <td>{size}</td>
78 <td>{size}</td>
79 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
79 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
80 <td>
80 <td>
81 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
81 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
82 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
82 <a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
83 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
83 <a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
84 </td>
84 </td>
85 </tr>'
85 </tr>'
86 filerevision = filerevision.tmpl
86 filerevision = filerevision.tmpl
87 fileannotate = fileannotate.tmpl
87 fileannotate = fileannotate.tmpl
88 filediff = filediff.tmpl
88 filediff = filediff.tmpl
89 filecomparison = filecomparison.tmpl
89 filecomparison = filecomparison.tmpl
90 filelog = filelog.tmpl
90 filelog = filelog.tmpl
91 fileline = '
91 fileline = '
92 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
92 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
93 annotateline = '
93 annotateline = '
94 <tr id="{lineid}" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
94 <tr id="{lineid}" class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
95 <td class="annotate linenr">
95 <td class="annotate linenr">
96 {if(blockhead,
96 {if(blockhead,
97 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
97 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
98 {author|user}@{rev}
98 {author|user}@{rev}
99 </a>')}
99 </a>')}
100 <div class="annotate-info">
100 <div class="annotate-info">
101 <div>{node|short}: {desc|escape|firstline}</div>
101 <div>{node|short}: {desc|escape|firstline}</div>
102 <div>parents: {parents%annotateparent}</div>
102 <div>parents: {parents%annotateparent}</div>
103 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
104 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
103 </div>
105 </div>
104 </td>
106 </td>
105 <td class="lineno">
107 <td class="lineno">
106 <a href="#{lineid}">{linenumber}</a>
108 <a href="#{lineid}">{linenumber}</a>
107 </td>
109 </td>
108 <td class="source">{line|escape}</td>
110 <td class="source">{line|escape}</td>
109 </tr>'
111 </tr>'
110 annotateparent = '
112 annotateparent = '
111 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
113 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
112 difflineplus = '
114 difflineplus = '
113 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
115 <a href="#{lineid}"></a><span id="{lineid}" class="difflineplus">{strip(line|escape, '\r\n')}</span>'
114 difflineminus = '
116 difflineminus = '
115 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
117 <a href="#{lineid}"></a><span id="{lineid}" class="difflineminus">{strip(line|escape, '\r\n')}</span>'
116 difflineat = '
118 difflineat = '
117 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
119 <a href="#{lineid}"></a><span id="{lineid}" class="difflineat">{strip(line|escape, '\r\n')}</span>'
118 diffline = '
120 diffline = '
119 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
121 <a href="#{lineid}"></a><span id="{lineid}">{strip(line|escape, '\r\n')}</span>'
120
122
121 comparisonblock ='
123 comparisonblock ='
122 <tbody class="block">
124 <tbody class="block">
123 {lines}
125 {lines}
124 </tbody>'
126 </tbody>'
125 comparisonline = '
127 comparisonline = '
126 <tr id="{lineid}">
128 <tr id="{lineid}">
127 <td class="source {type}"><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
129 <td class="source {type}"><a class="linenr" href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
128 <td class="source {type}"><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
130 <td class="source {type}"><a class="linenr" href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
129 </tr>'
131 </tr>'
130
132
131 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
133 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
132 changelogparent = '
134 changelogparent = '
133 <tr>
135 <tr>
134 <th class="parent">parent {rev}:</th>
136 <th class="parent">parent {rev}:</th>
135 <td class="parent">
137 <td class="parent">
136 {changesetlink}
138 {changesetlink}
137 </td>
139 </td>
138 </tr>'
140 </tr>'
139 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
141 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
140 changesetparent = '
142 changesetparent = '
141 <dt>parent {rev}</dt>
143 <dt>parent {rev}</dt>
142 <dd>{changesetlink}</dd>'
144 <dd>{changesetlink}</dd>'
143 changesetparentdiff = '
145 changesetparentdiff = '
144 <dt>parent {rev}</dt>
146 <dt>parent {rev}</dt>
145 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</dd>'
147 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</dd>'
146 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
148 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
147 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
149 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
148 filerevparent = '
150 filerevparent = '
149 <dt>parent {rev}</dt>
151 <dt>parent {rev}</dt>
150 <dd>
152 <dd>
151 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
153 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
152 {rename%filerename}{node|short}
154 {rename%filerename}{node|short}
153 </a>
155 </a>
154 </dd>'
156 </dd>'
155 filerename = '{file|escape}@'
157 filerename = '{file|escape}@'
156 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
158 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
157 fileannotateparent = '
159 fileannotateparent = '
158 <dt>parent {rev}</dt>
160 <dt>parent {rev}</dt>
159 <dd>
161 <dd>
160 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
162 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
161 {rename%filerename}{node|short}
163 {rename%filerename}{node|short}
162 </a>
164 </a>
163 </dd>'
165 </dd>'
164 changelogchild = '
166 changelogchild = '
165 <dt>child {rev}:</dt>
167 <dt>child {rev}:</dt>
166 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
168 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
167 changesetchild = '
169 changesetchild = '
168 <dt>child {rev}</dt>
170 <dt>child {rev}</dt>
169 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
171 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
170 filerevchild = '
172 filerevchild = '
171 <dt>child {rev}</dt>
173 <dt>child {rev}</dt>
172 <dd>
174 <dd>
173 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
175 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
174 </dd>'
176 </dd>'
175 fileannotatechild = '
177 fileannotatechild = '
176 <dt>child {rev}</dt>
178 <dt>child {rev}</dt>
177 <dd>
179 <dd>
178 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
180 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
179 </dd>'
181 </dd>'
180 tags = tags.tmpl
182 tags = tags.tmpl
181 tagentry = '
183 tagentry = '
182 <tr class="parity{parity}">
184 <tr class="parity{parity}">
183 <td class="nowrap age">{date|rfc822date}</td>
185 <td class="nowrap age">{date|rfc822date}</td>
184 <td><a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">{tag|escape}</a></td>
186 <td><a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">{tag|escape}</a></td>
185 <td class="nowrap">
187 <td class="nowrap">
186 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
188 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
187 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
189 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
188 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
190 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
189 </td>
191 </td>
190 </tr>'
192 </tr>'
191 bookmarks = bookmarks.tmpl
193 bookmarks = bookmarks.tmpl
192 bookmarkentry = '
194 bookmarkentry = '
193 <tr class="parity{parity}">
195 <tr class="parity{parity}">
194 <td class="nowrap age">{date|rfc822date}</td>
196 <td class="nowrap age">{date|rfc822date}</td>
195 <td><a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
197 <td><a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
196 <td class="nowrap">
198 <td class="nowrap">
197 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
199 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
198 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
200 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
199 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
201 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
200 </td>
202 </td>
201 </tr>'
203 </tr>'
202 branches = branches.tmpl
204 branches = branches.tmpl
203 branchentry = '
205 branchentry = '
204 <tr class="parity{parity}">
206 <tr class="parity{parity}">
205 <td class="nowrap age">{date|rfc822date}</td>
207 <td class="nowrap age">{date|rfc822date}</td>
206 <td class="{status}"><a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}">{branch|escape}</a></td>
208 <td class="{status}"><a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}">{branch|escape}</a></td>
207 <td class="nowrap">
209 <td class="nowrap">
208 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
210 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
209 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
211 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
210 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
212 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
211 </td>
213 </td>
212 </tr>'
214 </tr>'
213 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
215 diffblock = '<div class="diffblock"><pre class="sourcelines">{lines}</pre></div>'
214 filediffparent = '
216 filediffparent = '
215 <dt>parent {rev}</dt>
217 <dt>parent {rev}</dt>
216 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
218 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
217 filecompparent = '
219 filecompparent = '
218 <dt>parent {rev}</dt>
220 <dt>parent {rev}</dt>
219 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
221 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
220 filelogparent = '
222 filelogparent = '
221 <tr>
223 <tr>
222 <td align="right">parent {rev}:&nbsp;</td>
224 <td align="right">parent {rev}:&nbsp;</td>
223 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
225 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
224 </tr>'
226 </tr>'
225 filediffchild = '
227 filediffchild = '
226 <dt>child {rev}</dt>
228 <dt>child {rev}</dt>
227 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
229 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
228 filecompchild = '
230 filecompchild = '
229 <dt>child {rev}</dt>
231 <dt>child {rev}</dt>
230 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
232 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
231 filelogchild = '
233 filelogchild = '
232 <tr>
234 <tr>
233 <td align="right">child {rev}:&nbsp;</td>
235 <td align="right">child {rev}:&nbsp;</td>
234 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
236 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
235 </tr>'
237 </tr>'
236 shortlog = shortlog.tmpl
238 shortlog = shortlog.tmpl
237 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
239 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
238 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
240 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
239 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
241 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
240 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
242 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
241 shortlogentry = '
243 shortlogentry = '
242 <tr class="parity{parity}">
244 <tr class="parity{parity}">
243 <td class="nowrap age">{date|rfc822date}</td>
245 <td class="nowrap age">{date|rfc822date}</td>
244 <td>{author|person}</td>
246 <td>{author|person}</td>
245 <td>
247 <td>
246 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
248 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
247 {desc|strip|firstline|escape|nonempty}
249 {desc|strip|firstline|escape|nonempty}
248 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
250 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
249 </a>
251 </a>
250 </td>
252 </td>
251 <td class="nowrap">
253 <td class="nowrap">
252 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
254 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
253 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
255 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
254 </td>
256 </td>
255 </tr>'
257 </tr>'
256 filelogentry = '
258 filelogentry = '
257 <tr class="parity{parity}">
259 <tr class="parity{parity}">
258 <td class="nowrap age">{date|rfc822date}</td>
260 <td class="nowrap age">{date|rfc822date}</td>
259 <td>{author|person}</td>
261 <td>{author|person}</td>
260 <td>
262 <td>
261 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
263 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
262 {desc|strip|firstline|escape|nonempty}
264 {desc|strip|firstline|escape|nonempty}
263 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
265 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
264 </a>
266 </a>
265 </td>
267 </td>
266 <td class="nowrap">
268 <td class="nowrap">
267 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
269 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
268 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
270 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
269 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
271 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
270 {rename%filelogrename}
272 {rename%filelogrename}
271 </td>
273 </td>
272 </tr>'
274 </tr>'
273 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
275 archiveentry = '<li><a href="{url|urlescape}archive/{symrev}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
274 indexentry = '
276 indexentry = '
275 <tr class="parity{parity}">
277 <tr class="parity{parity}">
276 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
278 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
277 <td>{description}</td>
279 <td>{description}</td>
278 <td>{contact|obfuscate}</td>
280 <td>{contact|obfuscate}</td>
279 <td class="age">{lastchange|rfc822date}</td>
281 <td class="age">{lastchange|rfc822date}</td>
280 <td class="indexlinks">{archives%indexarchiveentry}</td>
282 <td class="indexlinks">{archives%indexarchiveentry}</td>
281 <td>
283 <td>
282 {if(isdirectory, '',
284 {if(isdirectory, '',
283 '<div class="rss_logo">
285 '<div class="rss_logo">
284 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
286 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
285 </div>'
287 </div>'
286 )}
288 )}
287 </td>
289 </td>
288 </tr>\n'
290 </tr>\n'
289 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
291 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
290 index = index.tmpl
292 index = index.tmpl
291 urlparameter = '{separator}{name}={value|urlescape}'
293 urlparameter = '{separator}{name}={value|urlescape}'
292 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
294 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
293 graph = graph.tmpl
295 graph = graph.tmpl
294 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
296 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,265 +1,267
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 {if(basename, '{basename|escape}', '{topic|escape}')}
18 {if(basename, '{basename|escape}', '{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">
45 <tr class="fileline">
46 <td class="name">
46 <td class="name">
47 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">
47 <a href="{url|urlescape}file/{symrev}{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/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
50 <a href="{url|urlescape}file/{symrev}{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">
59 <tr class="fileline">
60 <td class="filename">
60 <td class="filename">
61 <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">
61 <a href="{url|urlescape}file/{symrev}/{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 id="{lineid}"{ifeq(node, originalnode, ' class="thisrev"')}>
79 <tr id="{lineid}"{ifeq(node, originalnode, ' class="thisrev"')}>
80 <td class="annotate">
80 <td class="annotate">
81 {if(blockhead,
81 {if(blockhead,
82 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
82 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
83 {author|user}@{rev}
83 {author|user}@{rev}
84 </a>')}
84 </a>')}
85 <div class="annotate-info">
85 <div class="annotate-info">
86 <div>{node|short}: {desc|escape|firstline}</div>
86 <div>{node|short}: {desc|escape|firstline}</div>
87 <div>parents: {parents%annotateparent}</div>
87 <div>parents: {parents%annotateparent}</div>
88 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
89 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
88 </div>
90 </div>
89 </td>
91 </td>
90 <td class="source"><a href="#{lineid}">{linenumber}</a> {line|escape}</td>
92 <td class="source"><a href="#{lineid}">{linenumber}</a> {line|escape}</td>
91 </tr>'
93 </tr>'
92 annotateparent = '
94 annotateparent = '
93 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
95 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
94 diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
96 diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>'
95 difflineplus = '
97 difflineplus = '
96 <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
98 <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
97 difflineminus = '
99 difflineminus = '
98 <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
100 <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
99 difflineat = '
101 difflineat = '
100 <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
102 <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
101 diffline = '
103 diffline = '
102 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
104 <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>'
103
105
104 comparisonblock ='
106 comparisonblock ='
105 <tbody class="block">
107 <tbody class="block">
106 {lines}
108 {lines}
107 </tbody>'
109 </tbody>'
108 comparisonline = '
110 comparisonline = '
109 <tr id="{lineid}">
111 <tr id="{lineid}">
110 <td class="source {type}"><a href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
112 <td class="source {type}"><a href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
111 <td class="source {type}"><a href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
113 <td class="source {type}"><a href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
112 </tr>'
114 </tr>'
113
115
114 changelogparent = '
116 changelogparent = '
115 <tr>
117 <tr>
116 <th class="parent">parent {rev}:</th>
118 <th class="parent">parent {rev}:</th>
117 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
119 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
118 </tr>'
120 </tr>'
119
121
120 changesetparent = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
122 changesetparent = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
121
123
122 changesetparentdiff = '
124 changesetparentdiff = '
123 {changesetparent}
125 {changesetparent}
124 {ifeq(node, basenode, '(current diff)', '({difffrom})')}'
126 {ifeq(node, basenode, '(current diff)', '({difffrom})')}'
125
127
126 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
128 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
127
129
128 filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
130 filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
129 filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
131 filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
130
132
131 filerename = '{file|escape}@'
133 filerename = '{file|escape}@'
132 filelogrename = '
134 filelogrename = '
133 <span class="base">
135 <span class="base">
134 base
136 base
135 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
137 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
136 {file|escape}@{node|short}
138 {file|escape}@{node|short}
137 </a>
139 </a>
138 </span>'
140 </span>'
139 fileannotateparent = '
141 fileannotateparent = '
140 <tr>
142 <tr>
141 <td class="metatag">parent:</td>
143 <td class="metatag">parent:</td>
142 <td>
144 <td>
143 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
145 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
144 {rename%filerename}{node|short}
146 {rename%filerename}{node|short}
145 </a>
147 </a>
146 </td>
148 </td>
147 </tr>'
149 </tr>'
148 changesetchild = ' <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
150 changesetchild = ' <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
149 changelogchild = '
151 changelogchild = '
150 <tr>
152 <tr>
151 <th class="child">child</th>
153 <th class="child">child</th>
152 <td class="child">
154 <td class="child">
153 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
155 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
154 {node|short}
156 {node|short}
155 </a>
157 </a>
156 </td>
158 </td>
157 </tr>'
159 </tr>'
158 fileannotatechild = '
160 fileannotatechild = '
159 <tr>
161 <tr>
160 <td class="metatag">child:</td>
162 <td class="metatag">child:</td>
161 <td>
163 <td>
162 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
164 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
163 {node|short}
165 {node|short}
164 </a>
166 </a>
165 </td>
167 </td>
166 </tr>'
168 </tr>'
167 tags = tags.tmpl
169 tags = tags.tmpl
168 tagentry = '
170 tagentry = '
169 <tr class="tagEntry">
171 <tr class="tagEntry">
170 <td>
172 <td>
171 <a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">
173 <a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}">
172 {tag|escape}
174 {tag|escape}
173 </a>
175 </a>
174 </td>
176 </td>
175 <td class="node">
177 <td class="node">
176 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
178 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
177 {node|short}
179 {node|short}
178 </a>
180 </a>
179 </td>
181 </td>
180 </tr>'
182 </tr>'
181 bookmarks = bookmarks.tmpl
183 bookmarks = bookmarks.tmpl
182 bookmarkentry = '
184 bookmarkentry = '
183 <tr class="tagEntry">
185 <tr class="tagEntry">
184 <td>
186 <td>
185 <a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">
187 <a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}">
186 {bookmark|escape}
188 {bookmark|escape}
187 </a>
189 </a>
188 </td>
190 </td>
189 <td class="node">
191 <td class="node">
190 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
192 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
191 {node|short}
193 {node|short}
192 </a>
194 </a>
193 </td>
195 </td>
194 </tr>'
196 </tr>'
195 branches = branches.tmpl
197 branches = branches.tmpl
196 branchentry = '
198 branchentry = '
197 <tr class="tagEntry">
199 <tr class="tagEntry">
198 <td>
200 <td>
199 <a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}" class="{status}">
201 <a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}" class="{status}">
200 {branch|escape}
202 {branch|escape}
201 </a>
203 </a>
202 </td>
204 </td>
203 <td class="node">
205 <td class="node">
204 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
206 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
205 {node|short}
207 {node|short}
206 </a>
208 </a>
207 </td>
209 </td>
208 </tr>'
210 </tr>'
209 changelogtag = '<span class="tag">{name|escape}</span> '
211 changelogtag = '<span class="tag">{name|escape}</span> '
210 changesettag = '<span class="tag">{tag|escape}</span> '
212 changesettag = '<span class="tag">{tag|escape}</span> '
211 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
213 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
212 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
214 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
213 changelogbranchname = '<span class="branchname">{name|escape}</span> '
215 changelogbranchname = '<span class="branchname">{name|escape}</span> '
214
216
215 filediffparent = '
217 filediffparent = '
216 <tr>
218 <tr>
217 <th class="parent">parent {rev}:</th>
219 <th class="parent">parent {rev}:</th>
218 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
220 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
219 </tr>'
221 </tr>'
220 filelogparent = '
222 filelogparent = '
221 <tr>
223 <tr>
222 <th>parent {rev}:</th>
224 <th>parent {rev}:</th>
223 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
225 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
224 </tr>'
226 </tr>'
225 filediffchild = '
227 filediffchild = '
226 <tr>
228 <tr>
227 <th class="child">child {rev}:</th>
229 <th class="child">child {rev}:</th>
228 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
230 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
229 </td>
231 </td>
230 </tr>'
232 </tr>'
231 filelogchild = '
233 filelogchild = '
232 <tr>
234 <tr>
233 <th>child {rev}:</th>
235 <th>child {rev}:</th>
234 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
236 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
235 </tr>'
237 </tr>'
236
238
237 indexentry = '
239 indexentry = '
238 <tr>
240 <tr>
239 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
241 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
240 <td>{description}</td>
242 <td>{description}</td>
241 <td>{contact|obfuscate}</td>
243 <td>{contact|obfuscate}</td>
242 <td class="age">{lastchange|rfc822date}</td>
244 <td class="age">{lastchange|rfc822date}</td>
243 <td class="indexlinks">{archives%indexarchiveentry}</td>
245 <td class="indexlinks">{archives%indexarchiveentry}</td>
244 <td>
246 <td>
245 {if(isdirectory, '',
247 {if(isdirectory, '',
246 '<a href="{url|urlescape}atom-log" title="subscribe to repository atom feed">
248 '<a href="{url|urlescape}atom-log" title="subscribe to repository atom feed">
247 <img class="atom-logo" src="{staticurl|urlescape}feed-icon-14x14.png" alt="subscribe to repository atom feed">
249 <img class="atom-logo" src="{staticurl|urlescape}feed-icon-14x14.png" alt="subscribe to repository atom feed">
248 </a>'
250 </a>'
249 )}
251 )}
250 </td>
252 </td>
251 </tr>\n'
253 </tr>\n'
252 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
254 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
253 index = index.tmpl
255 index = index.tmpl
254 archiveentry = '
256 archiveentry = '
255 <li>
257 <li>
256 <a href="{url|urlescape}archive/{symrev}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a>
258 <a href="{url|urlescape}archive/{symrev}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a>
257 </li>'
259 </li>'
258 notfound = notfound.tmpl
260 notfound = notfound.tmpl
259 error = error.tmpl
261 error = error.tmpl
260 urlparameter = '{separator}{name}={value|urlescape}'
262 urlparameter = '{separator}{name}={value|urlescape}'
261 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
263 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
262 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
264 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
263
265
264 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
266 searchhint = 'Find changesets by keywords (author, files, the commit message), revision
265 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
267 number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'
@@ -1,199 +1,201
1 default = 'shortlog'
1 default = 'shortlog'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 shortlog = shortlog.tmpl
7 shortlog = shortlog.tmpl
8 shortlogentry = shortlogentry.tmpl
8 shortlogentry = shortlogentry.tmpl
9 graph = graph.tmpl
9 graph = graph.tmpl
10 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
10 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
13 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
13 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
14 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
14 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
16 filenolink = '{file|escape} '
16 filenolink = '{file|escape} '
17 fileellipses = '...'
17 fileellipses = '...'
18 changelogentry = changelogentry.tmpl
18 changelogentry = changelogentry.tmpl
19 searchentry = changelogentry.tmpl
19 searchentry = changelogentry.tmpl
20 changeset = changeset.tmpl
20 changeset = changeset.tmpl
21 manifest = manifest.tmpl
21 manifest = manifest.tmpl
22
22
23 nav = '{before%naventry} {after%naventry}'
23 nav = '{before%naventry} {after%naventry}'
24 navshort = '{before%navshortentry}{after%navshortentry}'
24 navshort = '{before%navshortentry}{after%navshortentry}'
25 navgraph = '{before%navgraphentry}{after%navgraphentry}'
25 navgraph = '{before%navgraphentry}{after%navgraphentry}'
26 filenav = '{before%filenaventry}{after%filenaventry}'
26 filenav = '{before%filenaventry}{after%filenaventry}'
27
27
28 direntry = '
28 direntry = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><tt>drwxr-xr-x</tt>&nbsp;
30 <td><tt>drwxr-xr-x</tt>&nbsp;
31 <td>&nbsp;
31 <td>&nbsp;
32 <td>&nbsp;
32 <td>&nbsp;
33 <td>
33 <td>
34 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
34 <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
35 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
35 <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
36 {emptydirs|urlescape}
36 {emptydirs|urlescape}
37 </a>'
37 </a>'
38
38
39 fileentry = '
39 fileentry = '
40 <tr class="parity{parity}">
40 <tr class="parity{parity}">
41 <td><tt>{permissions|permissions}</tt>&nbsp;
41 <td><tt>{permissions|permissions}</tt>&nbsp;
42 <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
42 <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
43 <td align=right><tt>{size}</tt>&nbsp;
43 <td align=right><tt>{size}</tt>&nbsp;
44 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
44 <td><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
45
45
46 filerevision = filerevision.tmpl
46 filerevision = filerevision.tmpl
47 fileannotate = fileannotate.tmpl
47 fileannotate = fileannotate.tmpl
48 filediff = filediff.tmpl
48 filediff = filediff.tmpl
49 filelog = filelog.tmpl
49 filelog = filelog.tmpl
50 fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
50 fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
51 filelogentry = filelogentry.tmpl
51 filelogentry = filelogentry.tmpl
52
52
53 # The &nbsp; ensures that all table cells have content (even if there
53 # The &nbsp; ensures that all table cells have content (even if there
54 # is an empty line in the annotated file), which in turn ensures that
54 # is an empty line in the annotated file), which in turn ensures that
55 # all table rows have equal height.
55 # all table rows have equal height.
56 annotateline = '
56 annotateline = '
57 <tr class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
57 <tr class="parity{parity}{ifeq(node, originalnode, ' thisrev')}">
58 <td class="annotate">
58 <td class="annotate">
59 {if(blockhead,
59 {if(blockhead,
60 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
60 '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}">
61 {author|user}@{rev}
61 {author|user}@{rev}
62 </a>')}
62 </a>')}
63 <div class="annotate-info">
63 <div class="annotate-info">
64 <div>{node|short}: {desc|escape|firstline}</div>
64 <div>{node|short}: {desc|escape|firstline}</div>
65 <div>parents: {parents%annotateparent}</div>
65 <div>parents: {parents%annotateparent}</div>
66 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
67 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
66 </div>
68 </div>
67 </td>
69 </td>
68 <td>
70 <td>
69 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
71 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
70 </td>
72 </td>
71 <td><pre>&nbsp;{line|escape}</pre></td>
73 <td><pre>&nbsp;{line|escape}</pre></td>
72 </tr>'
74 </tr>'
73 annotateparent = '
75 annotateparent = '
74 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
76 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>'
75 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
77 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
76 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
78 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
77 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
79 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
78 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
80 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
79 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
81 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
80 changelogparent = '
82 changelogparent = '
81 <tr>
83 <tr>
82 <th class="parent">parent {rev}:</th>
84 <th class="parent">parent {rev}:</th>
83 <td class="parent">
85 <td class="parent">
84 {changesetlink}
86 {changesetlink}
85 </td>
87 </td>
86 </tr>'
88 </tr>'
87 changesetparent = '
89 changesetparent = '
88 <tr>
90 <tr>
89 <th class="parent">parent {rev}:</th>
91 <th class="parent">parent {rev}:</th>
90 <td class="parent">{changesetlink}</td>
92 <td class="parent">{changesetlink}</td>
91 </tr>'
93 </tr>'
92 changesetparentdiff = '
94 changesetparentdiff = '
93 <tr>
95 <tr>
94 <th class="parent">parent {rev}:</th>
96 <th class="parent">parent {rev}:</th>
95 <td class="parent">{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</td>
97 <td class="parent">{changesetlink} {ifeq(node, basenode, '(current diff)', '({difffrom})')}</td>
96 </tr>'
98 </tr>'
97 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
99 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
98 filerevparent = '
100 filerevparent = '
99 <tr>
101 <tr>
100 <td class="metatag">parent:</td>
102 <td class="metatag">parent:</td>
101 <td>
103 <td>
102 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
104 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
103 {rename%filerename}{node|short}
105 {rename%filerename}{node|short}
104 </a>
106 </a>
105 </td>
107 </td>
106 </tr>'
108 </tr>'
107 filerename = '{file|escape}@'
109 filerename = '{file|escape}@'
108 filelogrename = '
110 filelogrename = '
109 <tr>
111 <tr>
110 <th>base:</th>
112 <th>base:</th>
111 <td>
113 <td>
112 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
114 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
113 {file|escape}@{node|short}
115 {file|escape}@{node|short}
114 </a>
116 </a>
115 </td>
117 </td>
116 </tr>'
118 </tr>'
117 fileannotateparent = '
119 fileannotateparent = '
118 <tr>
120 <tr>
119 <td class="metatag">parent:</td>
121 <td class="metatag">parent:</td>
120 <td>
122 <td>
121 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
123 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
122 {rename%filerename}{node|short}
124 {rename%filerename}{node|short}
123 </a>
125 </a>
124 </td>
126 </td>
125 </tr>'
127 </tr>'
126 changesetchild = '
128 changesetchild = '
127 <tr>
129 <tr>
128 <th class="child">child {rev}:</th>
130 <th class="child">child {rev}:</th>
129 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
131 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
130 </tr>'
132 </tr>'
131 changelogchild = '
133 changelogchild = '
132 <tr>
134 <tr>
133 <th class="child">child {rev}:</th>
135 <th class="child">child {rev}:</th>
134 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
136 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
135 </tr>'
137 </tr>'
136 filerevchild = '
138 filerevchild = '
137 <tr>
139 <tr>
138 <td class="metatag">child:</td>
140 <td class="metatag">child:</td>
139 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
141 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
140 </tr>'
142 </tr>'
141 fileannotatechild = '
143 fileannotatechild = '
142 <tr>
144 <tr>
143 <td class="metatag">child:</td>
145 <td class="metatag">child:</td>
144 <td><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
146 <td><a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
145 </tr>'
147 </tr>'
146 tags = tags.tmpl
148 tags = tags.tmpl
147 tagentry = '
149 tagentry = '
148 <li class="tagEntry parity{parity}">
150 <li class="tagEntry parity{parity}">
149 <tt class="node">{node}</tt>
151 <tt class="node">{node}</tt>
150 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
152 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
151 </li>'
153 </li>'
152 branches = branches.tmpl
154 branches = branches.tmpl
153 branchentry = '
155 branchentry = '
154 <li class="tagEntry parity{parity}">
156 <li class="tagEntry parity{parity}">
155 <tt class="node">{node}</tt>
157 <tt class="node">{node}</tt>
156 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
158 <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
157 </li>'
159 </li>'
158 diffblock = '<pre class="parity{parity}">{lines}</pre>'
160 diffblock = '<pre class="parity{parity}">{lines}</pre>'
159 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
161 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
160 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
162 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
161 filediffparent = '
163 filediffparent = '
162 <tr>
164 <tr>
163 <th class="parent">parent {rev}:</th>
165 <th class="parent">parent {rev}:</th>
164 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
166 <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
165 </tr>'
167 </tr>'
166 filelogparent = '
168 filelogparent = '
167 <tr>
169 <tr>
168 <th>parent {rev}:</th>
170 <th>parent {rev}:</th>
169 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
171 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
170 </tr>'
172 </tr>'
171 filediffchild = '
173 filediffchild = '
172 <tr>
174 <tr>
173 <th class="child">child {rev}:</th>
175 <th class="child">child {rev}:</th>
174 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
176 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
175 </tr>'
177 </tr>'
176 filelogchild = '
178 filelogchild = '
177 <tr>
179 <tr>
178 <th>child {rev}:</th>
180 <th>child {rev}:</th>
179 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
181 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
180 </tr>'
182 </tr>'
181 indexentry = '
183 indexentry = '
182 <tr class="parity{parity}">
184 <tr class="parity{parity}">
183 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
185 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
184 <td>{description}</td>
186 <td>{description}</td>
185 <td>{contact|obfuscate}</td>
187 <td>{contact|obfuscate}</td>
186 <td class="age">{lastchange|rfc822date}</td>
188 <td class="age">{lastchange|rfc822date}</td>
187 <td class="indexlinks">
189 <td class="indexlinks">
188 <a href="{url|urlescape}rss-log">RSS</a>
190 <a href="{url|urlescape}rss-log">RSS</a>
189 <a href="{url|urlescape}atom-log">Atom</a>
191 <a href="{url|urlescape}atom-log">Atom</a>
190 {archives%archiveentry}
192 {archives%archiveentry}
191 </td>
193 </td>
192 </tr>'
194 </tr>'
193 index = index.tmpl
195 index = index.tmpl
194 archiveentry = '<a href="{url|urlescape}archive/{symrev}{extension|urlescape}">{type|escape}</a> '
196 archiveentry = '<a href="{url|urlescape}archive/{symrev}{extension|urlescape}">{type|escape}</a> '
195 notfound = notfound.tmpl
197 notfound = notfound.tmpl
196 error = error.tmpl
198 error = error.tmpl
197 urlparameter = '{separator}{name}={value|urlescape}'
199 urlparameter = '{separator}{name}={value|urlescape}'
198 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
200 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
199 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
201 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,1057 +1,1077
1 #require serve
1 #require serve
2
2
3 Test symbolic revision usage in links produced by hgweb pages. There are
3 Test symbolic revision usage in links produced by hgweb pages. There are
4 multiple issues related to this:
4 multiple issues related to this:
5 - issue2296
5 - issue2296
6 - issue2826
6 - issue2826
7 - issue3594
7 - issue3594
8 - issue3634
8 - issue3634
9
9
10 Set up the repo
10 Set up the repo
11
11
12 $ hg init test
12 $ hg init test
13 $ cd test
13 $ cd test
14 $ echo 0 > foo
14 $ echo 0 > foo
15 $ mkdir dir
15 $ mkdir dir
16 $ echo 0 > dir/bar
16 $ echo 0 > dir/bar
17 $ hg ci -Am 'first'
17 $ hg ci -Am 'first'
18 adding dir/bar
18 adding dir/bar
19 adding foo
19 adding foo
20 $ echo 1 >> foo
20 $ echo 1 >> foo
21 $ hg ci -m 'second'
21 $ hg ci -m 'second'
22 $ echo 2 >> foo
22 $ echo 2 >> foo
23 $ hg ci -m 'third'
23 $ hg ci -m 'third'
24 $ hg bookmark -r1 xyzzy
24 $ hg bookmark -r1 xyzzy
25
25
26 $ hg log -G --template '{rev}:{node|short} {tags} {bookmarks}\n'
26 $ hg log -G --template '{rev}:{node|short} {tags} {bookmarks}\n'
27 @ 2:9d8c40cba617 tip
27 @ 2:9d8c40cba617 tip
28 |
28 |
29 o 1:a7c1559b7bba xyzzy
29 o 1:a7c1559b7bba xyzzy
30 |
30 |
31 o 0:43c799df6e75
31 o 0:43c799df6e75
32
32
33 $ hg serve --config web.allow_archive=zip -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
33 $ hg serve --config web.allow_archive=zip -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
34 $ cat hg.pid >> $DAEMON_PIDS
34 $ cat hg.pid >> $DAEMON_PIDS
35
35
36 $ REVLINKS='href=[^>]+(rev=|/)(43c799df6e75|0|a7c1559b7bba|1|xyzzy|9d8c40cba617|2|tip|default)'
36 $ REVLINKS='href=[^>]+(rev=|/)(43c799df6e75|0|a7c1559b7bba|1|xyzzy|9d8c40cba617|2|tip|default)'
37
37
38 (De)referencing symbolic revisions (paper)
38 (De)referencing symbolic revisions (paper)
39
39
40 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=paper' | egrep $REVLINKS
40 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=paper' | egrep $REVLINKS
41 <li><a href="/graph/tip?style=paper">graph</a></li>
41 <li><a href="/graph/tip?style=paper">graph</a></li>
42 <li><a href="/rev/tip?style=paper">changeset</a></li>
42 <li><a href="/rev/tip?style=paper">changeset</a></li>
43 <li><a href="/file/tip?style=paper">browse</a></li>
43 <li><a href="/file/tip?style=paper">browse</a></li>
44 <a href="/archive/tip.zip">zip</a>
44 <a href="/archive/tip.zip">zip</a>
45 <a href="/shortlog/tip?revcount=30&style=paper">less</a>
45 <a href="/shortlog/tip?revcount=30&style=paper">less</a>
46 <a href="/shortlog/tip?revcount=120&style=paper">more</a>
46 <a href="/shortlog/tip?revcount=120&style=paper">more</a>
47 | rev 2: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
47 | rev 2: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
48 <a href="/rev/9d8c40cba617?style=paper">third</a>
48 <a href="/rev/9d8c40cba617?style=paper">third</a>
49 <a href="/rev/a7c1559b7bba?style=paper">second</a>
49 <a href="/rev/a7c1559b7bba?style=paper">second</a>
50 <a href="/rev/43c799df6e75?style=paper">first</a>
50 <a href="/rev/43c799df6e75?style=paper">first</a>
51 <a href="/shortlog/tip?revcount=30&style=paper">less</a>
51 <a href="/shortlog/tip?revcount=30&style=paper">less</a>
52 <a href="/shortlog/tip?revcount=120&style=paper">more</a>
52 <a href="/shortlog/tip?revcount=120&style=paper">more</a>
53 | rev 2: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
53 | rev 2: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
54
54
55 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=paper' | egrep $REVLINKS
55 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=paper' | egrep $REVLINKS
56 <li><a href="/shortlog/tip?style=paper">log</a></li>
56 <li><a href="/shortlog/tip?style=paper">log</a></li>
57 <li><a href="/rev/tip?style=paper">changeset</a></li>
57 <li><a href="/rev/tip?style=paper">changeset</a></li>
58 <li><a href="/file/tip?style=paper">browse</a></li>
58 <li><a href="/file/tip?style=paper">browse</a></li>
59 <a href="/graph/tip?revcount=30&style=paper">less</a>
59 <a href="/graph/tip?revcount=30&style=paper">less</a>
60 <a href="/graph/tip?revcount=120&style=paper">more</a>
60 <a href="/graph/tip?revcount=120&style=paper">more</a>
61 | rev 2: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
61 | rev 2: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
62 <a href="/graph/tip?revcount=30&style=paper">less</a>
62 <a href="/graph/tip?revcount=30&style=paper">less</a>
63 <a href="/graph/tip?revcount=120&style=paper">more</a>
63 <a href="/graph/tip?revcount=120&style=paper">more</a>
64 | rev 2: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
64 | rev 2: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
65
65
66 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=paper' | egrep $REVLINKS
66 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=paper' | egrep $REVLINKS
67 <li><a href="/shortlog/tip?style=paper">log</a></li>
67 <li><a href="/shortlog/tip?style=paper">log</a></li>
68 <li><a href="/graph/tip?style=paper">graph</a></li>
68 <li><a href="/graph/tip?style=paper">graph</a></li>
69 <li><a href="/rev/tip?style=paper">changeset</a></li>
69 <li><a href="/rev/tip?style=paper">changeset</a></li>
70 <a href="/archive/tip.zip">zip</a>
70 <a href="/archive/tip.zip">zip</a>
71 directory / @ 2:<a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a>
71 directory / @ 2:<a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a>
72 <td class="name"><a href="/file/tip/?style=paper">[up]</a></td>
72 <td class="name"><a href="/file/tip/?style=paper">[up]</a></td>
73 <a href="/file/tip/dir?style=paper">
73 <a href="/file/tip/dir?style=paper">
74 <a href="/file/tip/dir/?style=paper">
74 <a href="/file/tip/dir/?style=paper">
75 <a href="/file/tip/foo?style=paper">
75 <a href="/file/tip/foo?style=paper">
76
76
77 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=paper' | egrep $REVLINKS
77 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=paper' | egrep $REVLINKS
78 <a href="/shortlog/default?style=paper" class="open">
78 <a href="/shortlog/default?style=paper" class="open">
79 <a href="/shortlog/9d8c40cba617?style=paper" class="open">
79 <a href="/shortlog/9d8c40cba617?style=paper" class="open">
80
80
81 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=paper' | egrep $REVLINKS
81 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=paper' | egrep $REVLINKS
82 <a href="/rev/tip?style=paper">
82 <a href="/rev/tip?style=paper">
83 <a href="/rev/9d8c40cba617?style=paper">
83 <a href="/rev/9d8c40cba617?style=paper">
84
84
85 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=paper' | egrep $REVLINKS
85 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=paper' | egrep $REVLINKS
86 <a href="/rev/xyzzy?style=paper">
86 <a href="/rev/xyzzy?style=paper">
87 <a href="/rev/a7c1559b7bba?style=paper">
87 <a href="/rev/a7c1559b7bba?style=paper">
88
88
89 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=paper&rev=all()' | egrep $REVLINKS
89 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=paper&rev=all()' | egrep $REVLINKS
90 <a href="/rev/9d8c40cba617?style=paper">third</a>
90 <a href="/rev/9d8c40cba617?style=paper">third</a>
91 <a href="/rev/a7c1559b7bba?style=paper">second</a>
91 <a href="/rev/a7c1559b7bba?style=paper">second</a>
92 <a href="/rev/43c799df6e75?style=paper">first</a>
92 <a href="/rev/43c799df6e75?style=paper">first</a>
93
93
94 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=paper' | egrep $REVLINKS
94 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=paper' | egrep $REVLINKS
95 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
95 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
96 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
96 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
97 <li><a href="/raw-rev/xyzzy?style=paper">raw</a></li>
97 <li><a href="/raw-rev/xyzzy?style=paper">raw</a></li>
98 <li><a href="/file/xyzzy?style=paper">browse</a></li>
98 <li><a href="/file/xyzzy?style=paper">browse</a></li>
99 <a href="/archive/xyzzy.zip">zip</a>
99 <a href="/archive/xyzzy.zip">zip</a>
100 changeset 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
100 changeset 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
101 <td class="author"><a href="/rev/43c799df6e75?style=paper">43c799df6e75</a> </td>
101 <td class="author"><a href="/rev/43c799df6e75?style=paper">43c799df6e75</a> </td>
102 <td class="author"> <a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a></td>
102 <td class="author"> <a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a></td>
103 <td class="files"><a href="/file/a7c1559b7bba/foo?style=paper">foo</a> </td>
103 <td class="files"><a href="/file/a7c1559b7bba/foo?style=paper">foo</a> </td>
104
104
105 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=paper' | egrep $REVLINKS
105 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=paper' | egrep $REVLINKS
106 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
106 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
107 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
107 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
108 <li><a href="/file/xyzzy?style=paper">browse</a></li>
108 <li><a href="/file/xyzzy?style=paper">browse</a></li>
109 <a href="/archive/xyzzy.zip">zip</a>
109 <a href="/archive/xyzzy.zip">zip</a>
110 <a href="/shortlog/xyzzy?revcount=30&style=paper">less</a>
110 <a href="/shortlog/xyzzy?revcount=30&style=paper">less</a>
111 <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a>
111 <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a>
112 | rev 1: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
112 | rev 1: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
113 <a href="/rev/a7c1559b7bba?style=paper">second</a>
113 <a href="/rev/a7c1559b7bba?style=paper">second</a>
114 <a href="/rev/43c799df6e75?style=paper">first</a>
114 <a href="/rev/43c799df6e75?style=paper">first</a>
115 <a href="/shortlog/xyzzy?revcount=30&style=paper">less</a>
115 <a href="/shortlog/xyzzy?revcount=30&style=paper">less</a>
116 <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a>
116 <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a>
117 | rev 1: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
117 | rev 1: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a>
118
118
119 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=paper' | egrep $REVLINKS
119 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=paper' | egrep $REVLINKS
120 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
120 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
121 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
121 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
122 <li><a href="/file/xyzzy?style=paper">browse</a></li>
122 <li><a href="/file/xyzzy?style=paper">browse</a></li>
123 <a href="/graph/xyzzy?revcount=30&style=paper">less</a>
123 <a href="/graph/xyzzy?revcount=30&style=paper">less</a>
124 <a href="/graph/xyzzy?revcount=120&style=paper">more</a>
124 <a href="/graph/xyzzy?revcount=120&style=paper">more</a>
125 | rev 1: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
125 | rev 1: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
126 <a href="/graph/xyzzy?revcount=30&style=paper">less</a>
126 <a href="/graph/xyzzy?revcount=30&style=paper">less</a>
127 <a href="/graph/xyzzy?revcount=120&style=paper">more</a>
127 <a href="/graph/xyzzy?revcount=120&style=paper">more</a>
128 | rev 1: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
128 | rev 1: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a>
129
129
130 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=paper' | egrep $REVLINKS
130 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=paper' | egrep $REVLINKS
131 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
131 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
132 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
132 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
133 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
133 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
134 <a href="/archive/xyzzy.zip">zip</a>
134 <a href="/archive/xyzzy.zip">zip</a>
135 directory / @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
135 directory / @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
136 <td class="name"><a href="/file/xyzzy/?style=paper">[up]</a></td>
136 <td class="name"><a href="/file/xyzzy/?style=paper">[up]</a></td>
137 <a href="/file/xyzzy/dir?style=paper">
137 <a href="/file/xyzzy/dir?style=paper">
138 <a href="/file/xyzzy/dir/?style=paper">
138 <a href="/file/xyzzy/dir/?style=paper">
139 <a href="/file/xyzzy/foo?style=paper">
139 <a href="/file/xyzzy/foo?style=paper">
140
140
141 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=paper' | egrep $REVLINKS
141 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=paper' | egrep $REVLINKS
142 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
142 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
143 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
143 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
144 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
144 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
145 <li><a href="/file/xyzzy/?style=paper">browse</a></li>
145 <li><a href="/file/xyzzy/?style=paper">browse</a></li>
146 <li><a href="/file/tip/foo?style=paper">latest</a></li>
146 <li><a href="/file/tip/foo?style=paper">latest</a></li>
147 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
147 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
148 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
148 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
149 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
149 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
150 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
150 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
151 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
151 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
152 view foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
152 view foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
153 <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
153 <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
154 <td class="author"><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
154 <td class="author"><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
155
155
156 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=paper' | egrep $REVLINKS
156 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=paper' | egrep $REVLINKS
157 href="/atom-log/tip/foo" title="Atom feed for test:foo" />
157 href="/atom-log/tip/foo" title="Atom feed for test:foo" />
158 href="/rss-log/tip/foo" title="RSS feed for test:foo" />
158 href="/rss-log/tip/foo" title="RSS feed for test:foo" />
159 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
159 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
160 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
160 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
161 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
161 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
162 <li><a href="/file/xyzzy?style=paper">browse</a></li>
162 <li><a href="/file/xyzzy?style=paper">browse</a></li>
163 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
163 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
164 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
164 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
165 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
165 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
166 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
166 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
167 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
167 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
168 <a href="/atom-log/tip/foo" title="subscribe to atom feed">
168 <a href="/atom-log/tip/foo" title="subscribe to atom feed">
169 log foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
169 log foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
170 <a href="/log/xyzzy/foo?revcount=30&style=paper">less</a>
170 <a href="/log/xyzzy/foo?revcount=30&style=paper">less</a>
171 <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a>
171 <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a>
172 | <a href="/log/43c799df6e75/foo?style=paper">(0)</a> <a href="/log/tip/foo?style=paper">tip</a> </div>
172 | <a href="/log/43c799df6e75/foo?style=paper">(0)</a> <a href="/log/tip/foo?style=paper">tip</a> </div>
173 <a href="/rev/a7c1559b7bba?style=paper">second</a>
173 <a href="/rev/a7c1559b7bba?style=paper">second</a>
174 <a href="/rev/43c799df6e75?style=paper">first</a>
174 <a href="/rev/43c799df6e75?style=paper">first</a>
175 <a href="/log/xyzzy/foo?revcount=30&style=paper">less</a>
175 <a href="/log/xyzzy/foo?revcount=30&style=paper">less</a>
176 <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a>
176 <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a>
177 | <a href="/log/43c799df6e75/foo?style=paper">(0)</a> <a href="/log/tip/foo?style=paper">tip</a>
177 | <a href="/log/43c799df6e75/foo?style=paper">(0)</a> <a href="/log/tip/foo?style=paper">tip</a>
178
178
179 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=paper' | egrep $REVLINKS
179 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=paper' | egrep $REVLINKS
180 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
180 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
181 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
181 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
182 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
182 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
183 <li><a href="/file/xyzzy/?style=paper">browse</a></li>
183 <li><a href="/file/xyzzy/?style=paper">browse</a></li>
184 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
184 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
185 <li><a href="/file/tip/foo?style=paper">latest</a></li>
185 <li><a href="/file/tip/foo?style=paper">latest</a></li>
186 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
186 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
187 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
187 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
188 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
188 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
189 <li><a href="/raw-annotate/xyzzy/foo">raw</a></li>
189 <li><a href="/raw-annotate/xyzzy/foo">raw</a></li>
190 annotate foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
190 annotate foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
191 <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
191 <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
192 <td class="author"><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
192 <td class="author"><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
193 <a href="/annotate/43c799df6e75/foo?style=paper#l1">
193 <a href="/annotate/43c799df6e75/foo?style=paper#l1">
194 <a href="/diff/43c799df6e75/foo?style=paper">diff</a>
195 <a href="/rev/43c799df6e75?style=paper">changeset</a>
194 <a href="/annotate/a7c1559b7bba/foo?style=paper#l2">
196 <a href="/annotate/a7c1559b7bba/foo?style=paper#l2">
195 <a href="/annotate/43c799df6e75/foo?style=paper">0</a></div>
197 <a href="/annotate/43c799df6e75/foo?style=paper">0</a></div>
198 <a href="/diff/a7c1559b7bba/foo?style=paper">diff</a>
199 <a href="/rev/a7c1559b7bba?style=paper">changeset</a>
196
200
197 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=paper' | egrep $REVLINKS
201 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=paper' | egrep $REVLINKS
198 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
202 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
199 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
203 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
200 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
204 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
201 <li><a href="/file/xyzzy?style=paper">browse</a></li>
205 <li><a href="/file/xyzzy?style=paper">browse</a></li>
202 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
206 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
203 <li><a href="/file/tip/foo?style=paper">latest</a></li>
207 <li><a href="/file/tip/foo?style=paper">latest</a></li>
204 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
208 <li><a href="/comparison/xyzzy/foo?style=paper">comparison</a></li>
205 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
209 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
206 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
210 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
207 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
211 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
208 diff foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
212 diff foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
209 <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
213 <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
210 <td><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
214 <td><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
211
215
212 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=paper' | egrep $REVLINKS
216 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=paper' | egrep $REVLINKS
213 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
217 <li><a href="/shortlog/xyzzy?style=paper">log</a></li>
214 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
218 <li><a href="/graph/xyzzy?style=paper">graph</a></li>
215 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
219 <li><a href="/rev/xyzzy?style=paper">changeset</a></li>
216 <li><a href="/file/xyzzy?style=paper">browse</a></li>
220 <li><a href="/file/xyzzy?style=paper">browse</a></li>
217 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
221 <li><a href="/file/xyzzy/foo?style=paper">file</a></li>
218 <li><a href="/file/tip/foo?style=paper">latest</a></li>
222 <li><a href="/file/tip/foo?style=paper">latest</a></li>
219 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
223 <li><a href="/diff/xyzzy/foo?style=paper">diff</a></li>
220 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
224 <li><a href="/annotate/xyzzy/foo?style=paper">annotate</a></li>
221 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
225 <li><a href="/log/xyzzy/foo?style=paper">file log</a></li>
222 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
226 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
223 comparison foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
227 comparison foo @ 1:<a href="/rev/a7c1559b7bba?style=paper">a7c1559b7bba</a>
224 <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
228 <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td>
225 <td><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
229 <td><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td>
226
230
227 (De)referencing symbolic revisions (coal)
231 (De)referencing symbolic revisions (coal)
228
232
229 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=coal' | egrep $REVLINKS
233 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=coal' | egrep $REVLINKS
230 <li><a href="/graph/tip?style=coal">graph</a></li>
234 <li><a href="/graph/tip?style=coal">graph</a></li>
231 <li><a href="/rev/tip?style=coal">changeset</a></li>
235 <li><a href="/rev/tip?style=coal">changeset</a></li>
232 <li><a href="/file/tip?style=coal">browse</a></li>
236 <li><a href="/file/tip?style=coal">browse</a></li>
233 <a href="/archive/tip.zip">zip</a>
237 <a href="/archive/tip.zip">zip</a>
234 <a href="/shortlog/tip?revcount=30&style=coal">less</a>
238 <a href="/shortlog/tip?revcount=30&style=coal">less</a>
235 <a href="/shortlog/tip?revcount=120&style=coal">more</a>
239 <a href="/shortlog/tip?revcount=120&style=coal">more</a>
236 | rev 2: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
240 | rev 2: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
237 <a href="/rev/9d8c40cba617?style=coal">third</a>
241 <a href="/rev/9d8c40cba617?style=coal">third</a>
238 <a href="/rev/a7c1559b7bba?style=coal">second</a>
242 <a href="/rev/a7c1559b7bba?style=coal">second</a>
239 <a href="/rev/43c799df6e75?style=coal">first</a>
243 <a href="/rev/43c799df6e75?style=coal">first</a>
240 <a href="/shortlog/tip?revcount=30&style=coal">less</a>
244 <a href="/shortlog/tip?revcount=30&style=coal">less</a>
241 <a href="/shortlog/tip?revcount=120&style=coal">more</a>
245 <a href="/shortlog/tip?revcount=120&style=coal">more</a>
242 | rev 2: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
246 | rev 2: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
243
247
244 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=coal' | egrep $REVLINKS
248 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=coal' | egrep $REVLINKS
245 <li><a href="/shortlog/tip?style=coal">log</a></li>
249 <li><a href="/shortlog/tip?style=coal">log</a></li>
246 <li><a href="/rev/tip?style=coal">changeset</a></li>
250 <li><a href="/rev/tip?style=coal">changeset</a></li>
247 <li><a href="/file/tip?style=coal">browse</a></li>
251 <li><a href="/file/tip?style=coal">browse</a></li>
248 <a href="/graph/tip?revcount=30&style=coal">less</a>
252 <a href="/graph/tip?revcount=30&style=coal">less</a>
249 <a href="/graph/tip?revcount=120&style=coal">more</a>
253 <a href="/graph/tip?revcount=120&style=coal">more</a>
250 | rev 2: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
254 | rev 2: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
251 <a href="/graph/tip?revcount=30&style=coal">less</a>
255 <a href="/graph/tip?revcount=30&style=coal">less</a>
252 <a href="/graph/tip?revcount=120&style=coal">more</a>
256 <a href="/graph/tip?revcount=120&style=coal">more</a>
253 | rev 2: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
257 | rev 2: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
254
258
255 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=coal' | egrep $REVLINKS
259 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=coal' | egrep $REVLINKS
256 <li><a href="/shortlog/tip?style=coal">log</a></li>
260 <li><a href="/shortlog/tip?style=coal">log</a></li>
257 <li><a href="/graph/tip?style=coal">graph</a></li>
261 <li><a href="/graph/tip?style=coal">graph</a></li>
258 <li><a href="/rev/tip?style=coal">changeset</a></li>
262 <li><a href="/rev/tip?style=coal">changeset</a></li>
259 <a href="/archive/tip.zip">zip</a>
263 <a href="/archive/tip.zip">zip</a>
260 directory / @ 2:<a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a>
264 directory / @ 2:<a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a>
261 <td class="name"><a href="/file/tip/?style=coal">[up]</a></td>
265 <td class="name"><a href="/file/tip/?style=coal">[up]</a></td>
262 <a href="/file/tip/dir?style=coal">
266 <a href="/file/tip/dir?style=coal">
263 <a href="/file/tip/dir/?style=coal">
267 <a href="/file/tip/dir/?style=coal">
264 <a href="/file/tip/foo?style=coal">
268 <a href="/file/tip/foo?style=coal">
265
269
266 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=coal' | egrep $REVLINKS
270 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=coal' | egrep $REVLINKS
267 <a href="/shortlog/default?style=coal" class="open">
271 <a href="/shortlog/default?style=coal" class="open">
268 <a href="/shortlog/9d8c40cba617?style=coal" class="open">
272 <a href="/shortlog/9d8c40cba617?style=coal" class="open">
269
273
270 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=coal' | egrep $REVLINKS
274 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=coal' | egrep $REVLINKS
271 <a href="/rev/tip?style=coal">
275 <a href="/rev/tip?style=coal">
272 <a href="/rev/9d8c40cba617?style=coal">
276 <a href="/rev/9d8c40cba617?style=coal">
273
277
274 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=coal' | egrep $REVLINKS
278 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=coal' | egrep $REVLINKS
275 <a href="/rev/xyzzy?style=coal">
279 <a href="/rev/xyzzy?style=coal">
276 <a href="/rev/a7c1559b7bba?style=coal">
280 <a href="/rev/a7c1559b7bba?style=coal">
277
281
278 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=coal&rev=all()' | egrep $REVLINKS
282 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=coal&rev=all()' | egrep $REVLINKS
279 <a href="/rev/9d8c40cba617?style=coal">third</a>
283 <a href="/rev/9d8c40cba617?style=coal">third</a>
280 <a href="/rev/a7c1559b7bba?style=coal">second</a>
284 <a href="/rev/a7c1559b7bba?style=coal">second</a>
281 <a href="/rev/43c799df6e75?style=coal">first</a>
285 <a href="/rev/43c799df6e75?style=coal">first</a>
282
286
283 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=coal' | egrep $REVLINKS
287 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=coal' | egrep $REVLINKS
284 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
288 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
285 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
289 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
286 <li><a href="/raw-rev/xyzzy?style=coal">raw</a></li>
290 <li><a href="/raw-rev/xyzzy?style=coal">raw</a></li>
287 <li><a href="/file/xyzzy?style=coal">browse</a></li>
291 <li><a href="/file/xyzzy?style=coal">browse</a></li>
288 <a href="/archive/xyzzy.zip">zip</a>
292 <a href="/archive/xyzzy.zip">zip</a>
289 changeset 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
293 changeset 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
290 <td class="author"><a href="/rev/43c799df6e75?style=coal">43c799df6e75</a> </td>
294 <td class="author"><a href="/rev/43c799df6e75?style=coal">43c799df6e75</a> </td>
291 <td class="author"> <a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a></td>
295 <td class="author"> <a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a></td>
292 <td class="files"><a href="/file/a7c1559b7bba/foo?style=coal">foo</a> </td>
296 <td class="files"><a href="/file/a7c1559b7bba/foo?style=coal">foo</a> </td>
293
297
294 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=coal' | egrep $REVLINKS
298 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=coal' | egrep $REVLINKS
295 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
299 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
296 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
300 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
297 <li><a href="/file/xyzzy?style=coal">browse</a></li>
301 <li><a href="/file/xyzzy?style=coal">browse</a></li>
298 <a href="/archive/xyzzy.zip">zip</a>
302 <a href="/archive/xyzzy.zip">zip</a>
299 <a href="/shortlog/xyzzy?revcount=30&style=coal">less</a>
303 <a href="/shortlog/xyzzy?revcount=30&style=coal">less</a>
300 <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a>
304 <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a>
301 | rev 1: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
305 | rev 1: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
302 <a href="/rev/a7c1559b7bba?style=coal">second</a>
306 <a href="/rev/a7c1559b7bba?style=coal">second</a>
303 <a href="/rev/43c799df6e75?style=coal">first</a>
307 <a href="/rev/43c799df6e75?style=coal">first</a>
304 <a href="/shortlog/xyzzy?revcount=30&style=coal">less</a>
308 <a href="/shortlog/xyzzy?revcount=30&style=coal">less</a>
305 <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a>
309 <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a>
306 | rev 1: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
310 | rev 1: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a>
307
311
308 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=coal' | egrep $REVLINKS
312 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=coal' | egrep $REVLINKS
309 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
313 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
310 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
314 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
311 <li><a href="/file/xyzzy?style=coal">browse</a></li>
315 <li><a href="/file/xyzzy?style=coal">browse</a></li>
312 <a href="/graph/xyzzy?revcount=30&style=coal">less</a>
316 <a href="/graph/xyzzy?revcount=30&style=coal">less</a>
313 <a href="/graph/xyzzy?revcount=120&style=coal">more</a>
317 <a href="/graph/xyzzy?revcount=120&style=coal">more</a>
314 | rev 1: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
318 | rev 1: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
315 <a href="/graph/xyzzy?revcount=30&style=coal">less</a>
319 <a href="/graph/xyzzy?revcount=30&style=coal">less</a>
316 <a href="/graph/xyzzy?revcount=120&style=coal">more</a>
320 <a href="/graph/xyzzy?revcount=120&style=coal">more</a>
317 | rev 1: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
321 | rev 1: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a>
318
322
319 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=coal' | egrep $REVLINKS
323 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=coal' | egrep $REVLINKS
320 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
324 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
321 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
325 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
322 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
326 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
323 <a href="/archive/xyzzy.zip">zip</a>
327 <a href="/archive/xyzzy.zip">zip</a>
324 directory / @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
328 directory / @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
325 <td class="name"><a href="/file/xyzzy/?style=coal">[up]</a></td>
329 <td class="name"><a href="/file/xyzzy/?style=coal">[up]</a></td>
326 <a href="/file/xyzzy/dir?style=coal">
330 <a href="/file/xyzzy/dir?style=coal">
327 <a href="/file/xyzzy/dir/?style=coal">
331 <a href="/file/xyzzy/dir/?style=coal">
328 <a href="/file/xyzzy/foo?style=coal">
332 <a href="/file/xyzzy/foo?style=coal">
329
333
330 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=coal' | egrep $REVLINKS
334 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=coal' | egrep $REVLINKS
331 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
335 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
332 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
336 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
333 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
337 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
334 <li><a href="/file/xyzzy/?style=coal">browse</a></li>
338 <li><a href="/file/xyzzy/?style=coal">browse</a></li>
335 <li><a href="/file/tip/foo?style=coal">latest</a></li>
339 <li><a href="/file/tip/foo?style=coal">latest</a></li>
336 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
340 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
337 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
341 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
338 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
342 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
339 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
343 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
340 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
344 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
341 view foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
345 view foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
342 <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
346 <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
343 <td class="author"><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
347 <td class="author"><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
344
348
345 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=coal' | egrep $REVLINKS
349 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=coal' | egrep $REVLINKS
346 href="/atom-log/tip/foo" title="Atom feed for test:foo" />
350 href="/atom-log/tip/foo" title="Atom feed for test:foo" />
347 href="/rss-log/tip/foo" title="RSS feed for test:foo" />
351 href="/rss-log/tip/foo" title="RSS feed for test:foo" />
348 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
352 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
349 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
353 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
350 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
354 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
351 <li><a href="/file/xyzzy?style=coal">browse</a></li>
355 <li><a href="/file/xyzzy?style=coal">browse</a></li>
352 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
356 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
353 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
357 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
354 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
358 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
355 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
359 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
356 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
360 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
357 <a href="/atom-log/tip/foo" title="subscribe to atom feed">
361 <a href="/atom-log/tip/foo" title="subscribe to atom feed">
358 log foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
362 log foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
359 <a href="/log/xyzzy/foo?revcount=30&style=coal">less</a>
363 <a href="/log/xyzzy/foo?revcount=30&style=coal">less</a>
360 <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a>
364 <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a>
361 | <a href="/log/43c799df6e75/foo?style=coal">(0)</a> <a href="/log/tip/foo?style=coal">tip</a> </div>
365 | <a href="/log/43c799df6e75/foo?style=coal">(0)</a> <a href="/log/tip/foo?style=coal">tip</a> </div>
362 <a href="/rev/a7c1559b7bba?style=coal">second</a>
366 <a href="/rev/a7c1559b7bba?style=coal">second</a>
363 <a href="/rev/43c799df6e75?style=coal">first</a>
367 <a href="/rev/43c799df6e75?style=coal">first</a>
364 <a href="/log/xyzzy/foo?revcount=30&style=coal">less</a>
368 <a href="/log/xyzzy/foo?revcount=30&style=coal">less</a>
365 <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a>
369 <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a>
366 | <a href="/log/43c799df6e75/foo?style=coal">(0)</a> <a href="/log/tip/foo?style=coal">tip</a>
370 | <a href="/log/43c799df6e75/foo?style=coal">(0)</a> <a href="/log/tip/foo?style=coal">tip</a>
367
371
368 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=coal' | egrep $REVLINKS
372 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=coal' | egrep $REVLINKS
369 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
373 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
370 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
374 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
371 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
375 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
372 <li><a href="/file/xyzzy/?style=coal">browse</a></li>
376 <li><a href="/file/xyzzy/?style=coal">browse</a></li>
373 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
377 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
374 <li><a href="/file/tip/foo?style=coal">latest</a></li>
378 <li><a href="/file/tip/foo?style=coal">latest</a></li>
375 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
379 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
376 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
380 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
377 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
381 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
378 <li><a href="/raw-annotate/xyzzy/foo">raw</a></li>
382 <li><a href="/raw-annotate/xyzzy/foo">raw</a></li>
379 annotate foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
383 annotate foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
380 <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
384 <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
381 <td class="author"><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
385 <td class="author"><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
382 <a href="/annotate/43c799df6e75/foo?style=coal#l1">
386 <a href="/annotate/43c799df6e75/foo?style=coal#l1">
387 <a href="/diff/43c799df6e75/foo?style=coal">diff</a>
388 <a href="/rev/43c799df6e75?style=coal">changeset</a>
383 <a href="/annotate/a7c1559b7bba/foo?style=coal#l2">
389 <a href="/annotate/a7c1559b7bba/foo?style=coal#l2">
384 <a href="/annotate/43c799df6e75/foo?style=coal">0</a></div>
390 <a href="/annotate/43c799df6e75/foo?style=coal">0</a></div>
391 <a href="/diff/a7c1559b7bba/foo?style=coal">diff</a>
392 <a href="/rev/a7c1559b7bba?style=coal">changeset</a>
385
393
386 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=coal' | egrep $REVLINKS
394 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=coal' | egrep $REVLINKS
387 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
395 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
388 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
396 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
389 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
397 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
390 <li><a href="/file/xyzzy?style=coal">browse</a></li>
398 <li><a href="/file/xyzzy?style=coal">browse</a></li>
391 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
399 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
392 <li><a href="/file/tip/foo?style=coal">latest</a></li>
400 <li><a href="/file/tip/foo?style=coal">latest</a></li>
393 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
401 <li><a href="/comparison/xyzzy/foo?style=coal">comparison</a></li>
394 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
402 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
395 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
403 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
396 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
404 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
397 diff foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
405 diff foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
398 <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
406 <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
399 <td><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
407 <td><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
400
408
401 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=coal' | egrep $REVLINKS
409 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=coal' | egrep $REVLINKS
402 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
410 <li><a href="/shortlog/xyzzy?style=coal">log</a></li>
403 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
411 <li><a href="/graph/xyzzy?style=coal">graph</a></li>
404 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
412 <li><a href="/rev/xyzzy?style=coal">changeset</a></li>
405 <li><a href="/file/xyzzy?style=coal">browse</a></li>
413 <li><a href="/file/xyzzy?style=coal">browse</a></li>
406 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
414 <li><a href="/file/xyzzy/foo?style=coal">file</a></li>
407 <li><a href="/file/tip/foo?style=coal">latest</a></li>
415 <li><a href="/file/tip/foo?style=coal">latest</a></li>
408 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
416 <li><a href="/diff/xyzzy/foo?style=coal">diff</a></li>
409 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
417 <li><a href="/annotate/xyzzy/foo?style=coal">annotate</a></li>
410 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
418 <li><a href="/log/xyzzy/foo?style=coal">file log</a></li>
411 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
419 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
412 comparison foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
420 comparison foo @ 1:<a href="/rev/a7c1559b7bba?style=coal">a7c1559b7bba</a>
413 <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
421 <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td>
414 <td><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
422 <td><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td>
415
423
416 (De)referencing symbolic revisions (gitweb)
424 (De)referencing symbolic revisions (gitweb)
417
425
418 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'summary?style=gitweb' | egrep $REVLINKS
426 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'summary?style=gitweb' | egrep $REVLINKS
419 <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
427 <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
420 <a class="list" href="/rev/9d8c40cba617?style=gitweb">
428 <a class="list" href="/rev/9d8c40cba617?style=gitweb">
421 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> |
429 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> |
422 <a href="/file/9d8c40cba617?style=gitweb">files</a>
430 <a href="/file/9d8c40cba617?style=gitweb">files</a>
423 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
431 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
424 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
432 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
425 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
433 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
426 <a class="list" href="/rev/43c799df6e75?style=gitweb">
434 <a class="list" href="/rev/43c799df6e75?style=gitweb">
427 <a href="/rev/43c799df6e75?style=gitweb">changeset</a> |
435 <a href="/rev/43c799df6e75?style=gitweb">changeset</a> |
428 <a href="/file/43c799df6e75?style=gitweb">files</a>
436 <a href="/file/43c799df6e75?style=gitweb">files</a>
429 <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td>
437 <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td>
430 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
438 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
431 <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> |
439 <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> |
432 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
440 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
433 <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td>
441 <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td>
434 <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> |
442 <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> |
435 <a href="/log/9d8c40cba617?style=gitweb">changelog</a> |
443 <a href="/log/9d8c40cba617?style=gitweb">changelog</a> |
436 <a href="/file/9d8c40cba617?style=gitweb">files</a>
444 <a href="/file/9d8c40cba617?style=gitweb">files</a>
437
445
438 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=gitweb' | egrep $REVLINKS
446 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=gitweb' | egrep $REVLINKS
439 <a href="/log/tip?style=gitweb">changelog</a> |
447 <a href="/log/tip?style=gitweb">changelog</a> |
440 <a href="/graph/tip?style=gitweb">graph</a> |
448 <a href="/graph/tip?style=gitweb">graph</a> |
441 <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
449 <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
442 <br/><a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> <br/>
450 <br/><a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> <br/>
443 <a class="list" href="/rev/9d8c40cba617?style=gitweb">
451 <a class="list" href="/rev/9d8c40cba617?style=gitweb">
444 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> |
452 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> |
445 <a href="/file/9d8c40cba617?style=gitweb">files</a>
453 <a href="/file/9d8c40cba617?style=gitweb">files</a>
446 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
454 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
447 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
455 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
448 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
456 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
449 <a class="list" href="/rev/43c799df6e75?style=gitweb">
457 <a class="list" href="/rev/43c799df6e75?style=gitweb">
450 <a href="/rev/43c799df6e75?style=gitweb">changeset</a> |
458 <a href="/rev/43c799df6e75?style=gitweb">changeset</a> |
451 <a href="/file/43c799df6e75?style=gitweb">files</a>
459 <a href="/file/43c799df6e75?style=gitweb">files</a>
452 <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a>
460 <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a>
453
461
454 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=gitweb' | egrep $REVLINKS
462 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=gitweb' | egrep $REVLINKS
455 <a href="/shortlog/tip?style=gitweb">shortlog</a> |
463 <a href="/shortlog/tip?style=gitweb">shortlog</a> |
456 <a href="/graph/tip?style=gitweb">graph</a> |
464 <a href="/graph/tip?style=gitweb">graph</a> |
457 <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
465 <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
458 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
466 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
459 <a class="title" href="/rev/9d8c40cba617?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a>
467 <a class="title" href="/rev/9d8c40cba617?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a>
460 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/>
468 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/>
461 <a class="title" href="/rev/a7c1559b7bba?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
469 <a class="title" href="/rev/a7c1559b7bba?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
462 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a><br/>
470 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a><br/>
463 <a class="title" href="/rev/43c799df6e75?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>first<span class="logtags"> </span></a>
471 <a class="title" href="/rev/43c799df6e75?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>first<span class="logtags"> </span></a>
464 <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/>
472 <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/>
465 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
473 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
466
474
467 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=gitweb' | egrep $REVLINKS
475 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=gitweb' | egrep $REVLINKS
468 <a href="/shortlog/tip?style=gitweb">shortlog</a> |
476 <a href="/shortlog/tip?style=gitweb">shortlog</a> |
469 <a href="/log/tip?style=gitweb">changelog</a> |
477 <a href="/log/tip?style=gitweb">changelog</a> |
470 <a href="/file/tip?style=gitweb">files</a> |
478 <a href="/file/tip?style=gitweb">files</a> |
471 <a href="/graph/tip?revcount=30&style=gitweb">less</a>
479 <a href="/graph/tip?revcount=30&style=gitweb">less</a>
472 <a href="/graph/tip?revcount=120&style=gitweb">more</a>
480 <a href="/graph/tip?revcount=120&style=gitweb">more</a>
473 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
481 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
474 <a href="/graph/tip?revcount=30&style=gitweb">less</a>
482 <a href="/graph/tip?revcount=30&style=gitweb">less</a>
475 <a href="/graph/tip?revcount=120&style=gitweb">more</a>
483 <a href="/graph/tip?revcount=120&style=gitweb">more</a>
476 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a>
484 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a>
477
485
478 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=gitweb' | egrep $REVLINKS
486 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=gitweb' | egrep $REVLINKS
479 <td><a class="list" href="/rev/tip?style=gitweb"><b>tip</b></a></td>
487 <td><a class="list" href="/rev/tip?style=gitweb"><b>tip</b></a></td>
480 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> |
488 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> |
481 <a href="/log/9d8c40cba617?style=gitweb">changelog</a> |
489 <a href="/log/9d8c40cba617?style=gitweb">changelog</a> |
482 <a href="/file/9d8c40cba617?style=gitweb">files</a>
490 <a href="/file/9d8c40cba617?style=gitweb">files</a>
483
491
484 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=gitweb' | egrep $REVLINKS
492 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=gitweb' | egrep $REVLINKS
485 <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td>
493 <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td>
486 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
494 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
487 <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> |
495 <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> |
488 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
496 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
489
497
490 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=gitweb' | egrep $REVLINKS
498 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=gitweb' | egrep $REVLINKS
491 <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td>
499 <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td>
492 <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> |
500 <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> |
493 <a href="/log/9d8c40cba617?style=gitweb">changelog</a> |
501 <a href="/log/9d8c40cba617?style=gitweb">changelog</a> |
494 <a href="/file/9d8c40cba617?style=gitweb">files</a>
502 <a href="/file/9d8c40cba617?style=gitweb">files</a>
495
503
496 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=gitweb' | egrep $REVLINKS
504 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=gitweb' | egrep $REVLINKS
497 <a href="/rev/tip?style=gitweb">changeset</a> | <a href="/archive/tip.zip">zip</a> |
505 <a href="/rev/tip?style=gitweb">changeset</a> | <a href="/archive/tip.zip">zip</a> |
498 <td><a href="/file/tip/?style=gitweb">[up]</a></td>
506 <td><a href="/file/tip/?style=gitweb">[up]</a></td>
499 <a href="/file/tip/dir?style=gitweb">dir</a>
507 <a href="/file/tip/dir?style=gitweb">dir</a>
500 <a href="/file/tip/dir/?style=gitweb"></a>
508 <a href="/file/tip/dir/?style=gitweb"></a>
501 <a href="/file/tip/dir?style=gitweb">files</a>
509 <a href="/file/tip/dir?style=gitweb">files</a>
502 <a class="list" href="/file/tip/foo?style=gitweb">foo</a>
510 <a class="list" href="/file/tip/foo?style=gitweb">foo</a>
503 <a href="/file/tip/foo?style=gitweb">file</a> |
511 <a href="/file/tip/foo?style=gitweb">file</a> |
504 <a href="/log/tip/foo?style=gitweb">revisions</a> |
512 <a href="/log/tip/foo?style=gitweb">revisions</a> |
505 <a href="/annotate/tip/foo?style=gitweb">annotate</a>
513 <a href="/annotate/tip/foo?style=gitweb">annotate</a>
506
514
507 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=gitweb&rev=all()' | egrep $REVLINKS
515 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=gitweb&rev=all()' | egrep $REVLINKS
508 <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a>
516 <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a>
509 <a class="title" href="/rev/9d8c40cba617?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a>
517 <a class="title" href="/rev/9d8c40cba617?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a>
510 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/>
518 <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/>
511 <a class="title" href="/rev/a7c1559b7bba?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
519 <a class="title" href="/rev/a7c1559b7bba?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
512 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a><br/>
520 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a><br/>
513 <a class="title" href="/rev/43c799df6e75?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>first<span class="logtags"> </span></a>
521 <a class="title" href="/rev/43c799df6e75?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>first<span class="logtags"> </span></a>
514 <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/>
522 <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/>
515
523
516 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=gitweb' | egrep $REVLINKS
524 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=gitweb' | egrep $REVLINKS
517 <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> |
525 <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> |
518 <a href="/log/xyzzy?style=gitweb">changelog</a> |
526 <a href="/log/xyzzy?style=gitweb">changelog</a> |
519 <a href="/graph/xyzzy?style=gitweb">graph</a> |
527 <a href="/graph/xyzzy?style=gitweb">graph</a> |
520 <a href="/file/xyzzy?style=gitweb">files</a> |
528 <a href="/file/xyzzy?style=gitweb">files</a> |
521 <a href="/raw-rev/xyzzy">raw</a> | <a href="/archive/xyzzy.zip">zip</a> |
529 <a href="/raw-rev/xyzzy">raw</a> | <a href="/archive/xyzzy.zip">zip</a> |
522 <a class="title" href="/raw-rev/a7c1559b7bba">second <span class="logtags"><span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
530 <a class="title" href="/raw-rev/a7c1559b7bba">second <span class="logtags"><span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
523 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
531 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
524 <a class="list" href="/rev/43c799df6e75?style=gitweb">43c799df6e75</a>
532 <a class="list" href="/rev/43c799df6e75?style=gitweb">43c799df6e75</a>
525 <a class="list" href="/rev/9d8c40cba617?style=gitweb">9d8c40cba617</a>
533 <a class="list" href="/rev/9d8c40cba617?style=gitweb">9d8c40cba617</a>
526 <td><a class="list" href="/diff/a7c1559b7bba/foo?style=gitweb">foo</a></td>
534 <td><a class="list" href="/diff/a7c1559b7bba/foo?style=gitweb">foo</a></td>
527 <a href="/file/a7c1559b7bba/foo?style=gitweb">file</a> |
535 <a href="/file/a7c1559b7bba/foo?style=gitweb">file</a> |
528 <a href="/annotate/a7c1559b7bba/foo?style=gitweb">annotate</a> |
536 <a href="/annotate/a7c1559b7bba/foo?style=gitweb">annotate</a> |
529 <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> |
537 <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> |
530 <a href="/comparison/a7c1559b7bba/foo?style=gitweb">comparison</a> |
538 <a href="/comparison/a7c1559b7bba/foo?style=gitweb">comparison</a> |
531 <a href="/log/a7c1559b7bba/foo?style=gitweb">revisions</a>
539 <a href="/log/a7c1559b7bba/foo?style=gitweb">revisions</a>
532
540
533 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=gitweb' | egrep $REVLINKS
541 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=gitweb' | egrep $REVLINKS
534 <a href="/log/xyzzy?style=gitweb">changelog</a> |
542 <a href="/log/xyzzy?style=gitweb">changelog</a> |
535 <a href="/graph/xyzzy?style=gitweb">graph</a> |
543 <a href="/graph/xyzzy?style=gitweb">graph</a> |
536 <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> |
544 <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> |
537 <br/><a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> <br/>
545 <br/><a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> <br/>
538 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
546 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
539 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
547 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
540 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
548 <a href="/file/a7c1559b7bba?style=gitweb">files</a>
541 <a class="list" href="/rev/43c799df6e75?style=gitweb">
549 <a class="list" href="/rev/43c799df6e75?style=gitweb">
542 <a href="/rev/43c799df6e75?style=gitweb">changeset</a> |
550 <a href="/rev/43c799df6e75?style=gitweb">changeset</a> |
543 <a href="/file/43c799df6e75?style=gitweb">files</a>
551 <a href="/file/43c799df6e75?style=gitweb">files</a>
544 <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a>
552 <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a>
545
553
546 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=gitweb' | egrep $REVLINKS
554 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=gitweb' | egrep $REVLINKS
547 <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> |
555 <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> |
548 <a href="/graph/xyzzy?style=gitweb">graph</a> |
556 <a href="/graph/xyzzy?style=gitweb">graph</a> |
549 <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> |
557 <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> |
550 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
558 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
551 <a class="title" href="/rev/a7c1559b7bba?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
559 <a class="title" href="/rev/a7c1559b7bba?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a>
552 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a><br/>
560 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a><br/>
553 <a class="title" href="/rev/43c799df6e75?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>first<span class="logtags"> </span></a>
561 <a class="title" href="/rev/43c799df6e75?style=gitweb"><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>first<span class="logtags"> </span></a>
554 <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/>
562 <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/>
555 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
563 <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/>
556
564
557 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=gitweb' | egrep $REVLINKS
565 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=gitweb' | egrep $REVLINKS
558 <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> |
566 <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> |
559 <a href="/log/xyzzy?style=gitweb">changelog</a> |
567 <a href="/log/xyzzy?style=gitweb">changelog</a> |
560 <a href="/file/xyzzy?style=gitweb">files</a> |
568 <a href="/file/xyzzy?style=gitweb">files</a> |
561 <a href="/graph/xyzzy?revcount=30&style=gitweb">less</a>
569 <a href="/graph/xyzzy?revcount=30&style=gitweb">less</a>
562 <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a>
570 <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a>
563 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
571 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
564 <a href="/graph/xyzzy?revcount=30&style=gitweb">less</a>
572 <a href="/graph/xyzzy?revcount=30&style=gitweb">less</a>
565 <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a>
573 <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a>
566 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a>
574 | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a>
567
575
568 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=gitweb' | egrep $REVLINKS
576 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=gitweb' | egrep $REVLINKS
569 <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/archive/xyzzy.zip">zip</a> |
577 <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/archive/xyzzy.zip">zip</a> |
570 <td><a href="/file/xyzzy/?style=gitweb">[up]</a></td>
578 <td><a href="/file/xyzzy/?style=gitweb">[up]</a></td>
571 <a href="/file/xyzzy/dir?style=gitweb">dir</a>
579 <a href="/file/xyzzy/dir?style=gitweb">dir</a>
572 <a href="/file/xyzzy/dir/?style=gitweb"></a>
580 <a href="/file/xyzzy/dir/?style=gitweb"></a>
573 <a href="/file/xyzzy/dir?style=gitweb">files</a>
581 <a href="/file/xyzzy/dir?style=gitweb">files</a>
574 <a class="list" href="/file/xyzzy/foo?style=gitweb">foo</a>
582 <a class="list" href="/file/xyzzy/foo?style=gitweb">foo</a>
575 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
583 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
576 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
584 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
577 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a>
585 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a>
578
586
579 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=gitweb' | egrep $REVLINKS
587 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=gitweb' | egrep $REVLINKS
580 <a href="/file/xyzzy/?style=gitweb">files</a> |
588 <a href="/file/xyzzy/?style=gitweb">files</a> |
581 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
589 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
582 <a href="/file/tip/foo?style=gitweb">latest</a> |
590 <a href="/file/tip/foo?style=gitweb">latest</a> |
583 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
591 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
584 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
592 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
585 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
593 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
586 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
594 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
587 <a href="/raw-file/xyzzy/foo">raw</a> |
595 <a href="/raw-file/xyzzy/foo">raw</a> |
588 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
596 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
589 <a class="list" href="/file/43c799df6e75/foo?style=gitweb">
597 <a class="list" href="/file/43c799df6e75/foo?style=gitweb">
590 <a class="list" href="/file/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a></td>
598 <a class="list" href="/file/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a></td>
591
599
592 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=gitweb' | egrep $REVLINKS
600 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=gitweb' | egrep $REVLINKS
593 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
601 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
594 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
602 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
595 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
603 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
596 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
604 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
597 <a href="/rss-log/tip/foo">rss</a> |
605 <a href="/rss-log/tip/foo">rss</a> |
598 <a href="/log/43c799df6e75/foo?style=gitweb">(0)</a> <a href="/log/tip/foo?style=gitweb">tip</a>
606 <a href="/log/43c799df6e75/foo?style=gitweb">(0)</a> <a href="/log/tip/foo?style=gitweb">tip</a>
599 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
607 <a class="list" href="/rev/a7c1559b7bba?style=gitweb">
600 <a href="/file/a7c1559b7bba/foo?style=gitweb">file</a> |
608 <a href="/file/a7c1559b7bba/foo?style=gitweb">file</a> |
601 <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> |
609 <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> |
602 <a href="/annotate/a7c1559b7bba/foo?style=gitweb">annotate</a>
610 <a href="/annotate/a7c1559b7bba/foo?style=gitweb">annotate</a>
603 <a class="list" href="/rev/43c799df6e75?style=gitweb">
611 <a class="list" href="/rev/43c799df6e75?style=gitweb">
604 <a href="/file/43c799df6e75/foo?style=gitweb">file</a> |
612 <a href="/file/43c799df6e75/foo?style=gitweb">file</a> |
605 <a href="/diff/43c799df6e75/foo?style=gitweb">diff</a> |
613 <a href="/diff/43c799df6e75/foo?style=gitweb">diff</a> |
606 <a href="/annotate/43c799df6e75/foo?style=gitweb">annotate</a>
614 <a href="/annotate/43c799df6e75/foo?style=gitweb">annotate</a>
607 <a href="/log/43c799df6e75/foo?style=gitweb">(0)</a> <a href="/log/tip/foo?style=gitweb">tip</a>
615 <a href="/log/43c799df6e75/foo?style=gitweb">(0)</a> <a href="/log/tip/foo?style=gitweb">tip</a>
608
616
609 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=gitweb' | egrep $REVLINKS
617 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=gitweb' | egrep $REVLINKS
610 <a href="/file/xyzzy/?style=gitweb">files</a> |
618 <a href="/file/xyzzy/?style=gitweb">files</a> |
611 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
619 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
612 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
620 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
613 <a href="/file/tip/foo?style=gitweb">latest</a> |
621 <a href="/file/tip/foo?style=gitweb">latest</a> |
614 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
622 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
615 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
623 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
616 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
624 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
617 <a href="/raw-annotate/xyzzy/foo">raw</a> |
625 <a href="/raw-annotate/xyzzy/foo">raw</a> |
618 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
626 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
619 <a class="list" href="/annotate/43c799df6e75/foo?style=gitweb">
627 <a class="list" href="/annotate/43c799df6e75/foo?style=gitweb">
620 <a class="list" href="/annotate/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a></td>
628 <a class="list" href="/annotate/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a></td>
621 <a href="/annotate/43c799df6e75/foo?style=gitweb#l1">
629 <a href="/annotate/43c799df6e75/foo?style=gitweb#l1">
630 <a href="/diff/43c799df6e75/foo?style=gitweb">diff</a>
631 <a href="/rev/43c799df6e75?style=gitweb">changeset</a>
622 <a href="/annotate/a7c1559b7bba/foo?style=gitweb#l2">
632 <a href="/annotate/a7c1559b7bba/foo?style=gitweb#l2">
623 <a href="/annotate/43c799df6e75/foo?style=gitweb">0</a></div>
633 <a href="/annotate/43c799df6e75/foo?style=gitweb">0</a></div>
634 <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a>
635 <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a>
624
636
625 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=gitweb' | egrep $REVLINKS
637 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=gitweb' | egrep $REVLINKS
626 <a href="/file/xyzzy?style=gitweb">files</a> |
638 <a href="/file/xyzzy?style=gitweb">files</a> |
627 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
639 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
628 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
640 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
629 <a href="/file/tip/foo?style=gitweb">latest</a> |
641 <a href="/file/tip/foo?style=gitweb">latest</a> |
630 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
642 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
631 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
643 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
632 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
644 <a href="/comparison/xyzzy/foo?style=gitweb">comparison</a> |
633 <a href="/raw-diff/xyzzy/foo">raw</a> |
645 <a href="/raw-diff/xyzzy/foo">raw</a> |
634 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
646 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
635 <a class="list" href="/diff/43c799df6e75/foo?style=gitweb">
647 <a class="list" href="/diff/43c799df6e75/foo?style=gitweb">
636 <a class="list" href="/diff/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a>
648 <a class="list" href="/diff/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a>
637
649
638 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=gitweb' | egrep $REVLINKS
650 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=gitweb' | egrep $REVLINKS
639 <a href="/file/xyzzy?style=gitweb">files</a> |
651 <a href="/file/xyzzy?style=gitweb">files</a> |
640 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
652 <a href="/rev/xyzzy?style=gitweb">changeset</a> |
641 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
653 <a href="/file/xyzzy/foo?style=gitweb">file</a> |
642 <a href="/file/tip/foo?style=gitweb">latest</a> |
654 <a href="/file/tip/foo?style=gitweb">latest</a> |
643 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
655 <a href="/log/xyzzy/foo?style=gitweb">revisions</a> |
644 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
656 <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
645 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
657 <a href="/diff/xyzzy/foo?style=gitweb">diff</a> |
646 <a href="/raw-diff/xyzzy/foo">raw</a> |
658 <a href="/raw-diff/xyzzy/foo">raw</a> |
647 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
659 <td style="font-family:monospace"><a class="list" href="/rev/a7c1559b7bba?style=gitweb">a7c1559b7bba</a></td>
648 <a class="list" href="/comparison/43c799df6e75/foo?style=gitweb">
660 <a class="list" href="/comparison/43c799df6e75/foo?style=gitweb">
649 <a class="list" href="/comparison/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a>
661 <a class="list" href="/comparison/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a>
650
662
651 (De)referencing symbolic revisions (monoblue)
663 (De)referencing symbolic revisions (monoblue)
652
664
653 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'summary?style=monoblue' | egrep $REVLINKS
665 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'summary?style=monoblue' | egrep $REVLINKS
654 <li><a href="/archive/tip.zip">zip</a></li>
666 <li><a href="/archive/tip.zip">zip</a></li>
655 <a href="/rev/9d8c40cba617?style=monoblue">
667 <a href="/rev/9d8c40cba617?style=monoblue">
656 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
668 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
657 <a href="/file/9d8c40cba617?style=monoblue">files</a>
669 <a href="/file/9d8c40cba617?style=monoblue">files</a>
658 <a href="/rev/a7c1559b7bba?style=monoblue">
670 <a href="/rev/a7c1559b7bba?style=monoblue">
659 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
671 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
660 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
672 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
661 <a href="/rev/43c799df6e75?style=monoblue">
673 <a href="/rev/43c799df6e75?style=monoblue">
662 <a href="/rev/43c799df6e75?style=monoblue">changeset</a> |
674 <a href="/rev/43c799df6e75?style=monoblue">changeset</a> |
663 <a href="/file/43c799df6e75?style=monoblue">files</a>
675 <a href="/file/43c799df6e75?style=monoblue">files</a>
664 <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td>
676 <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td>
665 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
677 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
666 <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> |
678 <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> |
667 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
679 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
668 <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td>
680 <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td>
669 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
681 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
670 <a href="/log/9d8c40cba617?style=monoblue">changelog</a> |
682 <a href="/log/9d8c40cba617?style=monoblue">changelog</a> |
671 <a href="/file/9d8c40cba617?style=monoblue">files</a>
683 <a href="/file/9d8c40cba617?style=monoblue">files</a>
672
684
673 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue' | egrep $REVLINKS
685 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue' | egrep $REVLINKS
674 <li><a href="/graph/tip?style=monoblue">graph</a></li>
686 <li><a href="/graph/tip?style=monoblue">graph</a></li>
675 <li><a href="/file/tip?style=monoblue">files</a></li>
687 <li><a href="/file/tip?style=monoblue">files</a></li>
676 <li><a href="/archive/tip.zip">zip</a></li>
688 <li><a href="/archive/tip.zip">zip</a></li>
677 <a href="/rev/9d8c40cba617?style=monoblue">
689 <a href="/rev/9d8c40cba617?style=monoblue">
678 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
690 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
679 <a href="/file/9d8c40cba617?style=monoblue">files</a>
691 <a href="/file/9d8c40cba617?style=monoblue">files</a>
680 <a href="/rev/a7c1559b7bba?style=monoblue">
692 <a href="/rev/a7c1559b7bba?style=monoblue">
681 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
693 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
682 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
694 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
683 <a href="/rev/43c799df6e75?style=monoblue">
695 <a href="/rev/43c799df6e75?style=monoblue">
684 <a href="/rev/43c799df6e75?style=monoblue">changeset</a> |
696 <a href="/rev/43c799df6e75?style=monoblue">changeset</a> |
685 <a href="/file/43c799df6e75?style=monoblue">files</a>
697 <a href="/file/43c799df6e75?style=monoblue">files</a>
686 <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a>
698 <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a>
687
699
688 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=monoblue' | egrep $REVLINKS
700 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=monoblue' | egrep $REVLINKS
689 <li><a href="/graph/tip?style=monoblue">graph</a></li>
701 <li><a href="/graph/tip?style=monoblue">graph</a></li>
690 <li><a href="/file/tip?style=monoblue">files</a></li>
702 <li><a href="/file/tip?style=monoblue">files</a></li>
691 <li><a href="/archive/tip.zip">zip</a></li>
703 <li><a href="/archive/tip.zip">zip</a></li>
692 <h3 class="changelog"><a class="title" href="/rev/9d8c40cba617?style=monoblue">third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a></h3>
704 <h3 class="changelog"><a class="title" href="/rev/9d8c40cba617?style=monoblue">third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a></h3>
693 <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
705 <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
694 <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
706 <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
695 <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a>
707 <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a>
696
708
697 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=monoblue' | egrep $REVLINKS
709 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=monoblue' | egrep $REVLINKS
698 <li><a href="/file/tip?style=monoblue">files</a></li>
710 <li><a href="/file/tip?style=monoblue">files</a></li>
699 <a href="/graph/tip?revcount=30&style=monoblue">less</a>
711 <a href="/graph/tip?revcount=30&style=monoblue">less</a>
700 <a href="/graph/tip?revcount=120&style=monoblue">more</a>
712 <a href="/graph/tip?revcount=120&style=monoblue">more</a>
701 | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a>
713 | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a>
702
714
703 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=monoblue' | egrep $REVLINKS
715 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=monoblue' | egrep $REVLINKS
704 <td><a href="/rev/tip?style=monoblue">tip</a></td>
716 <td><a href="/rev/tip?style=monoblue">tip</a></td>
705 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
717 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
706 <a href="/log/9d8c40cba617?style=monoblue">changelog</a> |
718 <a href="/log/9d8c40cba617?style=monoblue">changelog</a> |
707 <a href="/file/9d8c40cba617?style=monoblue">files</a>
719 <a href="/file/9d8c40cba617?style=monoblue">files</a>
708
720
709 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=monoblue' | egrep $REVLINKS
721 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'bookmarks?style=monoblue' | egrep $REVLINKS
710 <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td>
722 <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td>
711 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
723 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
712 <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> |
724 <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> |
713 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
725 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
714
726
715 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=monoblue' | egrep $REVLINKS
727 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=monoblue' | egrep $REVLINKS
716 <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td>
728 <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td>
717 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
729 <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> |
718 <a href="/log/9d8c40cba617?style=monoblue">changelog</a> |
730 <a href="/log/9d8c40cba617?style=monoblue">changelog</a> |
719 <a href="/file/9d8c40cba617?style=monoblue">files</a>
731 <a href="/file/9d8c40cba617?style=monoblue">files</a>
720
732
721 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=monoblue' | egrep $REVLINKS
733 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=monoblue' | egrep $REVLINKS
722 <li><a href="/graph/tip?style=monoblue">graph</a></li>
734 <li><a href="/graph/tip?style=monoblue">graph</a></li>
723 <li><a href="/rev/tip?style=monoblue">changeset</a></li>
735 <li><a href="/rev/tip?style=monoblue">changeset</a></li>
724 <li><a href="/archive/tip.zip">zip</a></li>
736 <li><a href="/archive/tip.zip">zip</a></li>
725 <td><a href="/file/tip/?style=monoblue">[up]</a></td>
737 <td><a href="/file/tip/?style=monoblue">[up]</a></td>
726 <a href="/file/tip/dir?style=monoblue">dir</a>
738 <a href="/file/tip/dir?style=monoblue">dir</a>
727 <a href="/file/tip/dir/?style=monoblue"></a>
739 <a href="/file/tip/dir/?style=monoblue"></a>
728 <td><a href="/file/tip/dir?style=monoblue">files</a></td>
740 <td><a href="/file/tip/dir?style=monoblue">files</a></td>
729 <td><a href="/file/tip/foo?style=monoblue">foo</a></td>
741 <td><a href="/file/tip/foo?style=monoblue">foo</a></td>
730 <a href="/file/tip/foo?style=monoblue">file</a> |
742 <a href="/file/tip/foo?style=monoblue">file</a> |
731 <a href="/log/tip/foo?style=monoblue">revisions</a> |
743 <a href="/log/tip/foo?style=monoblue">revisions</a> |
732 <a href="/annotate/tip/foo?style=monoblue">annotate</a>
744 <a href="/annotate/tip/foo?style=monoblue">annotate</a>
733
745
734 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue&rev=all()' | egrep $REVLINKS
746 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=monoblue&rev=all()' | egrep $REVLINKS
735 <li><a href="/archive/tip.zip">zip</a></li>
747 <li><a href="/archive/tip.zip">zip</a></li>
736 <h3 class="changelog"><a class="title" href="/rev/9d8c40cba617?style=monoblue">third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a></h3>
748 <h3 class="changelog"><a class="title" href="/rev/9d8c40cba617?style=monoblue">third<span class="logtags"> <span class="branchtag" title="default">default</span> <span class="tagtag" title="tip">tip</span> </span></a></h3>
737 <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
749 <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
738 <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
750 <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
739
751
740 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=monoblue' | egrep $REVLINKS
752 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=monoblue' | egrep $REVLINKS
741 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
753 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
742 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
754 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
743 <li><a href="/raw-rev/xyzzy">raw</a></li>
755 <li><a href="/raw-rev/xyzzy">raw</a></li>
744 <li><a href="/archive/xyzzy.zip">zip</a></li>
756 <li><a href="/archive/xyzzy.zip">zip</a></li>
745 <h3 class="changeset"><a href="/raw-rev/a7c1559b7bba">second <span class="logtags"><span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
757 <h3 class="changeset"><a href="/raw-rev/a7c1559b7bba">second <span class="logtags"><span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
746 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
758 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
747 <dd><a href="/rev/43c799df6e75?style=monoblue">43c799df6e75</a></dd>
759 <dd><a href="/rev/43c799df6e75?style=monoblue">43c799df6e75</a></dd>
748 <dd><a href="/rev/9d8c40cba617?style=monoblue">9d8c40cba617</a></dd>
760 <dd><a href="/rev/9d8c40cba617?style=monoblue">9d8c40cba617</a></dd>
749 <td><a href="/diff/a7c1559b7bba/foo?style=monoblue">foo</a></td>
761 <td><a href="/diff/a7c1559b7bba/foo?style=monoblue">foo</a></td>
750 <a href="/file/a7c1559b7bba/foo?style=monoblue">file</a> |
762 <a href="/file/a7c1559b7bba/foo?style=monoblue">file</a> |
751 <a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a> |
763 <a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a> |
752 <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> |
764 <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> |
753 <a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a> |
765 <a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a> |
754 <a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a>
766 <a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a>
755
767
756 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=monoblue' | egrep $REVLINKS
768 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=monoblue' | egrep $REVLINKS
757 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
769 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
758 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
770 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
759 <li><a href="/archive/xyzzy.zip">zip</a></li>
771 <li><a href="/archive/xyzzy.zip">zip</a></li>
760 <a href="/rev/a7c1559b7bba?style=monoblue">
772 <a href="/rev/a7c1559b7bba?style=monoblue">
761 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
773 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
762 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
774 <a href="/file/a7c1559b7bba?style=monoblue">files</a>
763 <a href="/rev/43c799df6e75?style=monoblue">
775 <a href="/rev/43c799df6e75?style=monoblue">
764 <a href="/rev/43c799df6e75?style=monoblue">changeset</a> |
776 <a href="/rev/43c799df6e75?style=monoblue">changeset</a> |
765 <a href="/file/43c799df6e75?style=monoblue">files</a>
777 <a href="/file/43c799df6e75?style=monoblue">files</a>
766 <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a>
778 <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a>
767
779
768 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=monoblue' | egrep $REVLINKS
780 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=monoblue' | egrep $REVLINKS
769 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
781 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
770 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
782 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
771 <li><a href="/archive/xyzzy.zip">zip</a></li>
783 <li><a href="/archive/xyzzy.zip">zip</a></li>
772 <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
784 <h3 class="changelog"><a class="title" href="/rev/a7c1559b7bba?style=monoblue">second<span class="logtags"> <span class="bookmarktag" title="xyzzy">xyzzy</span> </span></a></h3>
773 <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
785 <h3 class="changelog"><a class="title" href="/rev/43c799df6e75?style=monoblue">first<span class="logtags"> </span></a></h3>
774 <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a>
786 <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a>
775
787
776 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=monoblue' | egrep $REVLINKS
788 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=monoblue' | egrep $REVLINKS
777 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
789 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
778 <a href="/graph/xyzzy?revcount=30&style=monoblue">less</a>
790 <a href="/graph/xyzzy?revcount=30&style=monoblue">less</a>
779 <a href="/graph/xyzzy?revcount=120&style=monoblue">more</a>
791 <a href="/graph/xyzzy?revcount=120&style=monoblue">more</a>
780 | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a>
792 | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a>
781
793
782 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=monoblue' | egrep $REVLINKS
794 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=monoblue' | egrep $REVLINKS
783 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
795 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
784 <li><a href="/rev/xyzzy?style=monoblue">changeset</a></li>
796 <li><a href="/rev/xyzzy?style=monoblue">changeset</a></li>
785 <li><a href="/archive/xyzzy.zip">zip</a></li>
797 <li><a href="/archive/xyzzy.zip">zip</a></li>
786 <td><a href="/file/xyzzy/?style=monoblue">[up]</a></td>
798 <td><a href="/file/xyzzy/?style=monoblue">[up]</a></td>
787 <a href="/file/xyzzy/dir?style=monoblue">dir</a>
799 <a href="/file/xyzzy/dir?style=monoblue">dir</a>
788 <a href="/file/xyzzy/dir/?style=monoblue"></a>
800 <a href="/file/xyzzy/dir/?style=monoblue"></a>
789 <td><a href="/file/xyzzy/dir?style=monoblue">files</a></td>
801 <td><a href="/file/xyzzy/dir?style=monoblue">files</a></td>
790 <td><a href="/file/xyzzy/foo?style=monoblue">foo</a></td>
802 <td><a href="/file/xyzzy/foo?style=monoblue">foo</a></td>
791 <a href="/file/xyzzy/foo?style=monoblue">file</a> |
803 <a href="/file/xyzzy/foo?style=monoblue">file</a> |
792 <a href="/log/xyzzy/foo?style=monoblue">revisions</a> |
804 <a href="/log/xyzzy/foo?style=monoblue">revisions</a> |
793 <a href="/annotate/xyzzy/foo?style=monoblue">annotate</a>
805 <a href="/annotate/xyzzy/foo?style=monoblue">annotate</a>
794
806
795 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=monoblue' | egrep $REVLINKS
807 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=monoblue' | egrep $REVLINKS
796 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
808 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
797 <li><a href="/file/xyzzy/?style=monoblue">files</a></li>
809 <li><a href="/file/xyzzy/?style=monoblue">files</a></li>
798 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
810 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
799 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
811 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
800 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
812 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
801 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
813 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
802 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
814 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
803 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
815 <li><a href="/raw-file/xyzzy/foo">raw</a></li>
804 <dd><a class="list" href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
816 <dd><a class="list" href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
805 <a href="/file/43c799df6e75/foo?style=monoblue">
817 <a href="/file/43c799df6e75/foo?style=monoblue">
806 <a href="/file/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a>
818 <a href="/file/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a>
807
819
808 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=monoblue' | egrep $REVLINKS
820 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=monoblue' | egrep $REVLINKS
809 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
821 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
810 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
822 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
811 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
823 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
812 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
824 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
813 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
825 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
814 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
826 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
815 <li><a href="/rss-log/tip/foo">rss</a></li>
827 <li><a href="/rss-log/tip/foo">rss</a></li>
816 <a href="/rev/a7c1559b7bba?style=monoblue">
828 <a href="/rev/a7c1559b7bba?style=monoblue">
817 <a href="/file/a7c1559b7bba/foo?style=monoblue">file</a> |
829 <a href="/file/a7c1559b7bba/foo?style=monoblue">file</a> |
818 <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> |
830 <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> |
819 <a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a>
831 <a href="/annotate/a7c1559b7bba/foo?style=monoblue">annotate</a>
820 <a href="/rev/43c799df6e75?style=monoblue">
832 <a href="/rev/43c799df6e75?style=monoblue">
821 <a href="/file/43c799df6e75/foo?style=monoblue">file</a> |
833 <a href="/file/43c799df6e75/foo?style=monoblue">file</a> |
822 <a href="/diff/43c799df6e75/foo?style=monoblue">diff</a> |
834 <a href="/diff/43c799df6e75/foo?style=monoblue">diff</a> |
823 <a href="/annotate/43c799df6e75/foo?style=monoblue">annotate</a>
835 <a href="/annotate/43c799df6e75/foo?style=monoblue">annotate</a>
824 <a href="/log/43c799df6e75/foo?style=monoblue">(0)</a> <a href="/log/tip/foo?style=monoblue">tip</a>
836 <a href="/log/43c799df6e75/foo?style=monoblue">(0)</a> <a href="/log/tip/foo?style=monoblue">tip</a>
825
837
826 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | egrep $REVLINKS
838 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | egrep $REVLINKS
827 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
839 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
828 <li><a href="/file/xyzzy/?style=monoblue">files</a></li>
840 <li><a href="/file/xyzzy/?style=monoblue">files</a></li>
829 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
841 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
830 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
842 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
831 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
843 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
832 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
844 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
833 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
845 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
834 <li><a href="/raw-annotate/xyzzy/foo">raw</a></li>
846 <li><a href="/raw-annotate/xyzzy/foo">raw</a></li>
835 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
847 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
836 <a href="/annotate/43c799df6e75/foo?style=monoblue">
848 <a href="/annotate/43c799df6e75/foo?style=monoblue">
837 <a href="/annotate/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a>
849 <a href="/annotate/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a>
838 <a href="/annotate/43c799df6e75/foo?style=monoblue#l1">
850 <a href="/annotate/43c799df6e75/foo?style=monoblue#l1">
851 <a href="/diff/43c799df6e75/foo?style=monoblue">diff</a>
852 <a href="/rev/43c799df6e75?style=monoblue">changeset</a>
839 <a href="/annotate/a7c1559b7bba/foo?style=monoblue#l2">
853 <a href="/annotate/a7c1559b7bba/foo?style=monoblue#l2">
840 <a href="/annotate/43c799df6e75/foo?style=monoblue">0</a></div>
854 <a href="/annotate/43c799df6e75/foo?style=monoblue">0</a></div>
855 <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a>
856 <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a>
841
857
842 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=monoblue' | egrep $REVLINKS
858 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=monoblue' | egrep $REVLINKS
843 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
859 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
844 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
860 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
845 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
861 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
846 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
862 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
847 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
863 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
848 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
864 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
849 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
865 <li><a href="/comparison/xyzzy/foo?style=monoblue">comparison</a></li>
850 <li><a href="/raw-diff/xyzzy/foo">raw</a></li>
866 <li><a href="/raw-diff/xyzzy/foo">raw</a></li>
851 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
867 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
852 <dd><a href="/diff/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd>
868 <dd><a href="/diff/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd>
853 <dd><a href="/diff/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd>
869 <dd><a href="/diff/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd>
854
870
855 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | egrep $REVLINKS
871 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | egrep $REVLINKS
856 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
872 <li><a href="/graph/xyzzy?style=monoblue">graph</a></li>
857 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
873 <li><a href="/file/xyzzy?style=monoblue">files</a></li>
858 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
874 <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li>
859 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
875 <li><a href="/file/tip/foo?style=monoblue">latest</a></li>
860 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
876 <li><a href="/log/xyzzy/foo?style=monoblue">revisions</a></li>
861 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
877 <li><a href="/annotate/xyzzy/foo?style=monoblue">annotate</a></li>
862 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
878 <li><a href="/diff/xyzzy/foo?style=monoblue">diff</a></li>
863 <li><a href="/raw-diff/xyzzy/foo">raw</a></li>
879 <li><a href="/raw-diff/xyzzy/foo">raw</a></li>
864 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
880 <dd><a href="/rev/a7c1559b7bba?style=monoblue">a7c1559b7bba</a></dd>
865 <dd><a href="/comparison/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd>
881 <dd><a href="/comparison/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd>
866 <dd><a href="/comparison/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd>
882 <dd><a href="/comparison/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd>
867
883
868 (De)referencing symbolic revisions (spartan)
884 (De)referencing symbolic revisions (spartan)
869
885
870 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan' | egrep $REVLINKS
886 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan' | egrep $REVLINKS
871 <a href="/log/tip?style=spartan">changelog</a>
887 <a href="/log/tip?style=spartan">changelog</a>
872 <a href="/graph/tip?style=spartan">graph</a>
888 <a href="/graph/tip?style=spartan">graph</a>
873 <a href="/file/tip/?style=spartan">files</a>
889 <a href="/file/tip/?style=spartan">files</a>
874 <a href="/archive/tip.zip">zip</a>
890 <a href="/archive/tip.zip">zip</a>
875 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
891 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
876 <td class="node"><a href="/rev/9d8c40cba617?style=spartan">third</a></td>
892 <td class="node"><a href="/rev/9d8c40cba617?style=spartan">third</a></td>
877 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">second</a></td>
893 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">second</a></td>
878 <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td>
894 <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td>
879 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
895 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
880
896
881 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=spartan' | egrep $REVLINKS
897 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log?style=spartan' | egrep $REVLINKS
882 <a href="/shortlog/tip?style=spartan">shortlog</a>
898 <a href="/shortlog/tip?style=spartan">shortlog</a>
883 <a href="/graph/tip?style=spartan">graph</a>
899 <a href="/graph/tip?style=spartan">graph</a>
884 <a href="/file/tip?style=spartan">files</a>
900 <a href="/file/tip?style=spartan">files</a>
885 <a href="/archive/tip.zip">zip</a>
901 <a href="/archive/tip.zip">zip</a>
886 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
902 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
887 <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
903 <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
888 <th class="files"><a href="/file/9d8c40cba617?style=spartan">files</a>:</th>
904 <th class="files"><a href="/file/9d8c40cba617?style=spartan">files</a>:</th>
889 <td class="files"><a href="/diff/9d8c40cba617/foo?style=spartan">foo</a> </td>
905 <td class="files"><a href="/diff/9d8c40cba617/foo?style=spartan">foo</a> </td>
890 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
906 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
891 <th class="files"><a href="/file/a7c1559b7bba?style=spartan">files</a>:</th>
907 <th class="files"><a href="/file/a7c1559b7bba?style=spartan">files</a>:</th>
892 <td class="files"><a href="/diff/a7c1559b7bba/foo?style=spartan">foo</a> </td>
908 <td class="files"><a href="/diff/a7c1559b7bba/foo?style=spartan">foo</a> </td>
893 <td class="node"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
909 <td class="node"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
894 <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th>
910 <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th>
895 <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td>
911 <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td>
896 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
912 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
897
913
898 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=spartan' | egrep $REVLINKS
914 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph?style=spartan' | egrep $REVLINKS
899 <a href="/log/tip?style=spartan">changelog</a>
915 <a href="/log/tip?style=spartan">changelog</a>
900 <a href="/shortlog/tip?style=spartan">shortlog</a>
916 <a href="/shortlog/tip?style=spartan">shortlog</a>
901 <a href="/file/tip/?style=spartan">files</a>
917 <a href="/file/tip/?style=spartan">files</a>
902 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
918 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
903 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
919 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
904
920
905 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=spartan' | egrep $REVLINKS
921 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'tags?style=spartan' | egrep $REVLINKS
906 <a href="/rev/9d8c40cba617?style=spartan">tip</a>
922 <a href="/rev/9d8c40cba617?style=spartan">tip</a>
907
923
908 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=spartan' | egrep $REVLINKS
924 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'branches?style=spartan' | egrep $REVLINKS
909 <a href="/shortlog/9d8c40cba617?style=spartan" class="open">default</a>
925 <a href="/shortlog/9d8c40cba617?style=spartan" class="open">default</a>
910
926
911 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=spartan' | egrep $REVLINKS
927 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file?style=spartan' | egrep $REVLINKS
912 <a href="/log/tip?style=spartan">changelog</a>
928 <a href="/log/tip?style=spartan">changelog</a>
913 <a href="/shortlog/tip?style=spartan">shortlog</a>
929 <a href="/shortlog/tip?style=spartan">shortlog</a>
914 <a href="/graph/tip?style=spartan">graph</a>
930 <a href="/graph/tip?style=spartan">graph</a>
915 <a href="/rev/tip?style=spartan">changeset</a>
931 <a href="/rev/tip?style=spartan">changeset</a>
916 <a href="/archive/tip.zip">zip</a>
932 <a href="/archive/tip.zip">zip</a>
917 <h2><a href="/">Mercurial</a> / files for changeset <a href="/rev/9d8c40cba617">9d8c40cba617</a>: /</h2>
933 <h2><a href="/">Mercurial</a> / files for changeset <a href="/rev/9d8c40cba617">9d8c40cba617</a>: /</h2>
918 <td><a href="/file/tip/?style=spartan">[up]</a>
934 <td><a href="/file/tip/?style=spartan">[up]</a>
919 <a href="/file/tip/dir?style=spartan">dir/</a>
935 <a href="/file/tip/dir?style=spartan">dir/</a>
920 <a href="/file/tip/dir/?style=spartan">
936 <a href="/file/tip/dir/?style=spartan">
921 <td><a href="/file/tip/foo?style=spartan">foo</a>
937 <td><a href="/file/tip/foo?style=spartan">foo</a>
922
938
923 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan&rev=all()' | egrep $REVLINKS
939 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog?style=spartan&rev=all()' | egrep $REVLINKS
924 <a href="/archive/tip.zip">zip</a>
940 <a href="/archive/tip.zip">zip</a>
925 <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
941 <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
926 <a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a>
942 <a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a>
927 <th class="files"><a href="/file/9d8c40cba617?style=spartan">files</a>:</th>
943 <th class="files"><a href="/file/9d8c40cba617?style=spartan">files</a>:</th>
928 <td class="files"><a href="/diff/9d8c40cba617/foo?style=spartan">foo</a> </td>
944 <td class="files"><a href="/diff/9d8c40cba617/foo?style=spartan">foo</a> </td>
929 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
945 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
930 <a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a>
946 <a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a>
931 <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
947 <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
932 <th class="files"><a href="/file/a7c1559b7bba?style=spartan">files</a>:</th>
948 <th class="files"><a href="/file/a7c1559b7bba?style=spartan">files</a>:</th>
933 <td class="files"><a href="/diff/a7c1559b7bba/foo?style=spartan">foo</a> </td>
949 <td class="files"><a href="/diff/a7c1559b7bba/foo?style=spartan">foo</a> </td>
934 <td class="node"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
950 <td class="node"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
935 <td class="child"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
951 <td class="child"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
936 <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th>
952 <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th>
937 <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td>
953 <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td>
938
954
939 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=spartan' | egrep $REVLINKS
955 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'rev/xyzzy?style=spartan' | egrep $REVLINKS
940 <a href="/log/xyzzy?style=spartan">changelog</a>
956 <a href="/log/xyzzy?style=spartan">changelog</a>
941 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
957 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
942 <a href="/graph/xyzzy?style=spartan">graph</a>
958 <a href="/graph/xyzzy?style=spartan">graph</a>
943 <a href="/file/xyzzy?style=spartan">files</a>
959 <a href="/file/xyzzy?style=spartan">files</a>
944 <a href="/raw-rev/xyzzy">raw</a>
960 <a href="/raw-rev/xyzzy">raw</a>
945 <a href="/archive/xyzzy.zip">zip</a>
961 <a href="/archive/xyzzy.zip">zip</a>
946 <td class="changeset"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
962 <td class="changeset"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
947 <td class="parent"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
963 <td class="parent"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
948 <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
964 <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
949 <td class="files"><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a> </td>
965 <td class="files"><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a> </td>
950
966
951 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=spartan' | egrep $REVLINKS
967 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'shortlog/xyzzy?style=spartan' | egrep $REVLINKS
952 <a href="/log/xyzzy?style=spartan">changelog</a>
968 <a href="/log/xyzzy?style=spartan">changelog</a>
953 <a href="/graph/xyzzy?style=spartan">graph</a>
969 <a href="/graph/xyzzy?style=spartan">graph</a>
954 <a href="/file/xyzzy/?style=spartan">files</a>
970 <a href="/file/xyzzy/?style=spartan">files</a>
955 <a href="/archive/xyzzy.zip">zip</a>
971 <a href="/archive/xyzzy.zip">zip</a>
956 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
972 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
957 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">second</a></td>
973 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">second</a></td>
958 <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td>
974 <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td>
959 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
975 navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small>
960
976
961 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=spartan' | egrep $REVLINKS
977 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy?style=spartan' | egrep $REVLINKS
962 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
978 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
963 <a href="/graph/xyzzy?style=spartan">graph</a>
979 <a href="/graph/xyzzy?style=spartan">graph</a>
964 <a href="/file/xyzzy?style=spartan">files</a>
980 <a href="/file/xyzzy?style=spartan">files</a>
965 <a href="/archive/xyzzy.zip">zip</a>
981 <a href="/archive/xyzzy.zip">zip</a>
966 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
982 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
967 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
983 <td class="node"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
968 <th class="files"><a href="/file/a7c1559b7bba?style=spartan">files</a>:</th>
984 <th class="files"><a href="/file/a7c1559b7bba?style=spartan">files</a>:</th>
969 <td class="files"><a href="/diff/a7c1559b7bba/foo?style=spartan">foo</a> </td>
985 <td class="files"><a href="/diff/a7c1559b7bba/foo?style=spartan">foo</a> </td>
970 <td class="node"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
986 <td class="node"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
971 <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th>
987 <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th>
972 <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td>
988 <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td>
973 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
989 navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small>
974
990
975 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=spartan' | egrep $REVLINKS
991 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'graph/xyzzy?style=spartan' | egrep $REVLINKS
976 <a href="/log/xyzzy?style=spartan">changelog</a>
992 <a href="/log/xyzzy?style=spartan">changelog</a>
977 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
993 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
978 <a href="/file/xyzzy/?style=spartan">files</a>
994 <a href="/file/xyzzy/?style=spartan">files</a>
979 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
995 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
980 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
996 navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small>
981
997
982 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=spartan' | egrep $REVLINKS
998 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy?style=spartan' | egrep $REVLINKS
983 <a href="/log/xyzzy?style=spartan">changelog</a>
999 <a href="/log/xyzzy?style=spartan">changelog</a>
984 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
1000 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
985 <a href="/graph/xyzzy?style=spartan">graph</a>
1001 <a href="/graph/xyzzy?style=spartan">graph</a>
986 <a href="/rev/xyzzy?style=spartan">changeset</a>
1002 <a href="/rev/xyzzy?style=spartan">changeset</a>
987 <a href="/archive/xyzzy.zip">zip</a>
1003 <a href="/archive/xyzzy.zip">zip</a>
988 <h2><a href="/">Mercurial</a> / files for changeset <a href="/rev/a7c1559b7bba">a7c1559b7bba</a>: /</h2>
1004 <h2><a href="/">Mercurial</a> / files for changeset <a href="/rev/a7c1559b7bba">a7c1559b7bba</a>: /</h2>
989 <td><a href="/file/xyzzy/?style=spartan">[up]</a>
1005 <td><a href="/file/xyzzy/?style=spartan">[up]</a>
990 <a href="/file/xyzzy/dir?style=spartan">dir/</a>
1006 <a href="/file/xyzzy/dir?style=spartan">dir/</a>
991 <a href="/file/xyzzy/dir/?style=spartan">
1007 <a href="/file/xyzzy/dir/?style=spartan">
992 <td><a href="/file/xyzzy/foo?style=spartan">foo</a>
1008 <td><a href="/file/xyzzy/foo?style=spartan">foo</a>
993
1009
994 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=spartan' | egrep $REVLINKS
1010 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'file/xyzzy/foo?style=spartan' | egrep $REVLINKS
995 <a href="/log/xyzzy?style=spartan">changelog</a>
1011 <a href="/log/xyzzy?style=spartan">changelog</a>
996 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
1012 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
997 <a href="/graph/xyzzy?style=spartan">graph</a>
1013 <a href="/graph/xyzzy?style=spartan">graph</a>
998 <a href="/rev/xyzzy?style=spartan">changeset</a>
1014 <a href="/rev/xyzzy?style=spartan">changeset</a>
999 <a href="/file/xyzzy/?style=spartan">files</a>
1015 <a href="/file/xyzzy/?style=spartan">files</a>
1000 <a href="/log/xyzzy/foo?style=spartan">revisions</a>
1016 <a href="/log/xyzzy/foo?style=spartan">revisions</a>
1001 <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
1017 <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
1002 <a href="/raw-file/xyzzy/foo">raw</a>
1018 <a href="/raw-file/xyzzy/foo">raw</a>
1003 <td><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
1019 <td><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
1004 <a href="/file/43c799df6e75/foo?style=spartan">
1020 <a href="/file/43c799df6e75/foo?style=spartan">
1005 <td><a href="/file/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td>
1021 <td><a href="/file/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td>
1006
1022
1007 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=spartan' | egrep $REVLINKS
1023 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'log/xyzzy/foo?style=spartan' | egrep $REVLINKS
1008 href="/atom-log/tip/foo" title="Atom feed for test:foo">
1024 href="/atom-log/tip/foo" title="Atom feed for test:foo">
1009 href="/rss-log/tip/foo" title="RSS feed for test:foo">
1025 href="/rss-log/tip/foo" title="RSS feed for test:foo">
1010 <a href="/file/xyzzy/foo?style=spartan">file</a>
1026 <a href="/file/xyzzy/foo?style=spartan">file</a>
1011 <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
1027 <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
1012 <a type="application/rss+xml" href="/rss-log/tip/foo">rss</a>
1028 <a type="application/rss+xml" href="/rss-log/tip/foo">rss</a>
1013 <a type="application/atom+xml" href="/atom-log/tip/foo" title="Atom feed for test:foo">atom</a>
1029 <a type="application/atom+xml" href="/atom-log/tip/foo" title="Atom feed for test:foo">atom</a>
1014 <p>navigate: <small class="navigate"><a href="/log/43c799df6e75/foo?style=spartan">(0)</a> <a href="/log/tip/foo?style=spartan">tip</a> </small></p>
1030 <p>navigate: <small class="navigate"><a href="/log/43c799df6e75/foo?style=spartan">(0)</a> <a href="/log/tip/foo?style=spartan">tip</a> </small></p>
1015 <th class="firstline"><a href="/rev/a7c1559b7bba?style=spartan">second</a></th>
1031 <th class="firstline"><a href="/rev/a7c1559b7bba?style=spartan">second</a></th>
1016 <a href="/file/a7c1559b7bba/foo?style=spartan">a7c1559b7bba</a>
1032 <a href="/file/a7c1559b7bba/foo?style=spartan">a7c1559b7bba</a>
1017 <a href="/diff/a7c1559b7bba/foo?style=spartan">(diff)</a>
1033 <a href="/diff/a7c1559b7bba/foo?style=spartan">(diff)</a>
1018 <a href="/annotate/a7c1559b7bba/foo?style=spartan">(annotate)</a>
1034 <a href="/annotate/a7c1559b7bba/foo?style=spartan">(annotate)</a>
1019 <th class="firstline"><a href="/rev/43c799df6e75?style=spartan">first</a></th>
1035 <th class="firstline"><a href="/rev/43c799df6e75?style=spartan">first</a></th>
1020 <a href="/file/43c799df6e75/foo?style=spartan">43c799df6e75</a>
1036 <a href="/file/43c799df6e75/foo?style=spartan">43c799df6e75</a>
1021 <a href="/diff/43c799df6e75/foo?style=spartan">(diff)</a>
1037 <a href="/diff/43c799df6e75/foo?style=spartan">(diff)</a>
1022 <a href="/annotate/43c799df6e75/foo?style=spartan">(annotate)</a>
1038 <a href="/annotate/43c799df6e75/foo?style=spartan">(annotate)</a>
1023
1039
1024 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=spartan' | egrep $REVLINKS
1040 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'annotate/xyzzy/foo?style=spartan' | egrep $REVLINKS
1025 <a href="/log/xyzzy?style=spartan">changelog</a>
1041 <a href="/log/xyzzy?style=spartan">changelog</a>
1026 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
1042 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
1027 <a href="/graph/xyzzy?style=spartan">graph</a>
1043 <a href="/graph/xyzzy?style=spartan">graph</a>
1028 <a href="/rev/xyzzy?style=spartan">changeset</a>
1044 <a href="/rev/xyzzy?style=spartan">changeset</a>
1029 <a href="/file/xyzzy/?style=spartan">files</a>
1045 <a href="/file/xyzzy/?style=spartan">files</a>
1030 <a href="/file/xyzzy/foo?style=spartan">file</a>
1046 <a href="/file/xyzzy/foo?style=spartan">file</a>
1031 <a href="/log/xyzzy/foo?style=spartan">revisions</a>
1047 <a href="/log/xyzzy/foo?style=spartan">revisions</a>
1032 <a href="/raw-annotate/xyzzy/foo">raw</a>
1048 <a href="/raw-annotate/xyzzy/foo">raw</a>
1033 <td><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
1049 <td><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
1034 <a href="/annotate/43c799df6e75/foo?style=spartan">
1050 <a href="/annotate/43c799df6e75/foo?style=spartan">
1035 <td><a href="/annotate/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td>
1051 <td><a href="/annotate/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td>
1036 <a href="/annotate/43c799df6e75/foo?style=spartan#l1">
1052 <a href="/annotate/43c799df6e75/foo?style=spartan#l1">
1053 <a href="/diff/43c799df6e75/foo?style=spartan">diff</a>
1054 <a href="/rev/43c799df6e75?style=spartan">changeset</a>
1037 <a href="/annotate/a7c1559b7bba/foo?style=spartan#l2">
1055 <a href="/annotate/a7c1559b7bba/foo?style=spartan#l2">
1038 <a href="/annotate/43c799df6e75/foo?style=spartan">0</a></div>
1056 <a href="/annotate/43c799df6e75/foo?style=spartan">0</a></div>
1057 <a href="/diff/a7c1559b7bba/foo?style=spartan">diff</a>
1058 <a href="/rev/a7c1559b7bba?style=spartan">changeset</a>
1039
1059
1040 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=spartan' | egrep $REVLINKS
1060 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT 'diff/xyzzy/foo?style=spartan' | egrep $REVLINKS
1041 <a href="/log/xyzzy?style=spartan">changelog</a>
1061 <a href="/log/xyzzy?style=spartan">changelog</a>
1042 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
1062 <a href="/shortlog/xyzzy?style=spartan">shortlog</a>
1043 <a href="/graph/xyzzy?style=spartan">graph</a>
1063 <a href="/graph/xyzzy?style=spartan">graph</a>
1044 <a href="/rev/xyzzy?style=spartan">changeset</a>
1064 <a href="/rev/xyzzy?style=spartan">changeset</a>
1045 <a href="/file/xyzzy/foo?style=spartan">file</a>
1065 <a href="/file/xyzzy/foo?style=spartan">file</a>
1046 <a href="/log/xyzzy/foo?style=spartan">revisions</a>
1066 <a href="/log/xyzzy/foo?style=spartan">revisions</a>
1047 <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
1067 <a href="/annotate/xyzzy/foo?style=spartan">annotate</a>
1048 <a href="/raw-diff/xyzzy/foo">raw</a>
1068 <a href="/raw-diff/xyzzy/foo">raw</a>
1049 <td class="revision"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
1069 <td class="revision"><a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a></td>
1050 <td class="parent"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
1070 <td class="parent"><a href="/rev/43c799df6e75?style=spartan">43c799df6e75</a></td>
1051 <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
1071 <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td>
1052
1072
1053 Done
1073 Done
1054
1074
1055 $ cat errors.log
1075 $ cat errors.log
1056 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1076 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
1057 $ cd ..
1077 $ cd ..
@@ -1,791 +1,857
1 #require pygments serve
1 #require pygments serve
2
2
3 $ cat <<EOF >> $HGRCPATH
3 $ cat <<EOF >> $HGRCPATH
4 > [extensions]
4 > [extensions]
5 > highlight =
5 > highlight =
6 > [web]
6 > [web]
7 > pygments_style = friendly
7 > pygments_style = friendly
8 > highlightfiles = **.py and size('<100KB')
8 > highlightfiles = **.py and size('<100KB')
9 > EOF
9 > EOF
10 $ hg init test
10 $ hg init test
11 $ cd test
11 $ cd test
12
12
13 $ filterhtml () {
13 $ filterhtml () {
14 > sed -e "s/class=\"k\"/class=\"kn\"/g" \
14 > sed -e "s/class=\"k\"/class=\"kn\"/g" \
15 > -e "s/class=\"mf\"/class=\"mi\"/g" \
15 > -e "s/class=\"mf\"/class=\"mi\"/g" \
16 > -e "s/class=\"\([cs]\)[h12]\"/class=\"\1\"/g"
16 > -e "s/class=\"\([cs]\)[h12]\"/class=\"\1\"/g"
17 > }
17 > }
18
18
19 create random Python file to exercise Pygments
19 create random Python file to exercise Pygments
20
20
21 $ cat <<EOF > primes.py
21 $ cat <<EOF > primes.py
22 > #!/usr/bin/env python
22 > #!/usr/bin/env python
23 >
23 >
24 > """Fun with generators. Corresponding Haskell implementation:
24 > """Fun with generators. Corresponding Haskell implementation:
25 >
25 >
26 > primes = 2 : sieve [3, 5..]
26 > primes = 2 : sieve [3, 5..]
27 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
27 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
28 > """
28 > """
29 >
29 >
30 > from itertools import dropwhile, ifilter, islice, count, chain
30 > from itertools import dropwhile, ifilter, islice, count, chain
31 >
31 >
32 > def primes():
32 > def primes():
33 > """Generate all primes."""
33 > """Generate all primes."""
34 > def sieve(ns):
34 > def sieve(ns):
35 > p = ns.next()
35 > p = ns.next()
36 > # It is important to yield *here* in order to stop the
36 > # It is important to yield *here* in order to stop the
37 > # infinite recursion.
37 > # infinite recursion.
38 > yield p
38 > yield p
39 > ns = ifilter(lambda n: n % p != 0, ns)
39 > ns = ifilter(lambda n: n % p != 0, ns)
40 > for n in sieve(ns):
40 > for n in sieve(ns):
41 > yield n
41 > yield n
42 >
42 >
43 > odds = ifilter(lambda i: i % 2 == 1, count())
43 > odds = ifilter(lambda i: i % 2 == 1, count())
44 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
44 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
45 >
45 >
46 > if __name__ == "__main__":
46 > if __name__ == "__main__":
47 > import sys
47 > import sys
48 > try:
48 > try:
49 > n = int(sys.argv[1])
49 > n = int(sys.argv[1])
50 > except (ValueError, IndexError):
50 > except (ValueError, IndexError):
51 > n = 10
51 > n = 10
52 > p = primes()
52 > p = primes()
53 > print "The first %d primes: %s" % (n, list(islice(p, n)))
53 > print "The first %d primes: %s" % (n, list(islice(p, n)))
54 > EOF
54 > EOF
55 $ echo >> primes.py # to test html markup with an empty line just before EOF
55 $ echo >> primes.py # to test html markup with an empty line just before EOF
56 $ hg ci -Ama
56 $ hg ci -Ama
57 adding primes.py
57 adding primes.py
58
58
59 hg serve
59 hg serve
60
60
61 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
61 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
62 $ cat hg.pid >> $DAEMON_PIDS
62 $ cat hg.pid >> $DAEMON_PIDS
63
63
64 hgweb filerevision, html
64 hgweb filerevision, html
65
65
66 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py') | filterhtml
66 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py') | filterhtml
67 200 Script output follows
67 200 Script output follows
68
68
69 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
69 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
70 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
70 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
71 <head>
71 <head>
72 <link rel="icon" href="/static/hgicon.png" type="image/png" />
72 <link rel="icon" href="/static/hgicon.png" type="image/png" />
73 <meta name="robots" content="index, nofollow" />
73 <meta name="robots" content="index, nofollow" />
74 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
74 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
75 <script type="text/javascript" src="/static/mercurial.js"></script>
75 <script type="text/javascript" src="/static/mercurial.js"></script>
76
76
77 <link rel="stylesheet" href="/highlightcss" type="text/css" />
77 <link rel="stylesheet" href="/highlightcss" type="text/css" />
78 <title>test: 06824edf55d0 primes.py</title>
78 <title>test: 06824edf55d0 primes.py</title>
79 </head>
79 </head>
80 <body>
80 <body>
81
81
82 <div class="container">
82 <div class="container">
83 <div class="menu">
83 <div class="menu">
84 <div class="logo">
84 <div class="logo">
85 <a href="https://mercurial-scm.org/">
85 <a href="https://mercurial-scm.org/">
86 <img src="/static/hglogo.png" alt="mercurial" /></a>
86 <img src="/static/hglogo.png" alt="mercurial" /></a>
87 </div>
87 </div>
88 <ul>
88 <ul>
89 <li><a href="/shortlog/tip">log</a></li>
89 <li><a href="/shortlog/tip">log</a></li>
90 <li><a href="/graph/tip">graph</a></li>
90 <li><a href="/graph/tip">graph</a></li>
91 <li><a href="/tags">tags</a></li>
91 <li><a href="/tags">tags</a></li>
92 <li><a href="/bookmarks">bookmarks</a></li>
92 <li><a href="/bookmarks">bookmarks</a></li>
93 <li><a href="/branches">branches</a></li>
93 <li><a href="/branches">branches</a></li>
94 </ul>
94 </ul>
95 <ul>
95 <ul>
96 <li><a href="/rev/tip">changeset</a></li>
96 <li><a href="/rev/tip">changeset</a></li>
97 <li><a href="/file/tip/">browse</a></li>
97 <li><a href="/file/tip/">browse</a></li>
98 </ul>
98 </ul>
99 <ul>
99 <ul>
100 <li class="active">file</li>
100 <li class="active">file</li>
101 <li><a href="/file/tip/primes.py">latest</a></li>
101 <li><a href="/file/tip/primes.py">latest</a></li>
102 <li><a href="/diff/tip/primes.py">diff</a></li>
102 <li><a href="/diff/tip/primes.py">diff</a></li>
103 <li><a href="/comparison/tip/primes.py">comparison</a></li>
103 <li><a href="/comparison/tip/primes.py">comparison</a></li>
104 <li><a href="/annotate/tip/primes.py">annotate</a></li>
104 <li><a href="/annotate/tip/primes.py">annotate</a></li>
105 <li><a href="/log/tip/primes.py">file log</a></li>
105 <li><a href="/log/tip/primes.py">file log</a></li>
106 <li><a href="/raw-file/tip/primes.py">raw</a></li>
106 <li><a href="/raw-file/tip/primes.py">raw</a></li>
107 </ul>
107 </ul>
108 <ul>
108 <ul>
109 <li><a href="/help">help</a></li>
109 <li><a href="/help">help</a></li>
110 </ul>
110 </ul>
111 </div>
111 </div>
112
112
113 <div class="main">
113 <div class="main">
114 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
114 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
115 <h3>
115 <h3>
116 view primes.py @ 0:<a href="/rev/06824edf55d0">06824edf55d0</a>
116 view primes.py @ 0:<a href="/rev/06824edf55d0">06824edf55d0</a>
117 <span class="tag">tip</span>
117 <span class="tag">tip</span>
118 </h3>
118 </h3>
119
119
120 <form class="search" action="/log">
120 <form class="search" action="/log">
121
121
122 <p><input name="rev" id="search1" type="text" size="30" /></p>
122 <p><input name="rev" id="search1" type="text" size="30" /></p>
123 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
123 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
124 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
124 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
125 </form>
125 </form>
126
126
127 <div class="description">a</div>
127 <div class="description">a</div>
128
128
129 <table id="changesetEntry">
129 <table id="changesetEntry">
130 <tr>
130 <tr>
131 <th class="author">author</th>
131 <th class="author">author</th>
132 <td class="author">&#116;&#101;&#115;&#116;</td>
132 <td class="author">&#116;&#101;&#115;&#116;</td>
133 </tr>
133 </tr>
134 <tr>
134 <tr>
135 <th class="date">date</th>
135 <th class="date">date</th>
136 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
136 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
137 </tr>
137 </tr>
138 <tr>
138 <tr>
139 <th class="author">parents</th>
139 <th class="author">parents</th>
140 <td class="author"></td>
140 <td class="author"></td>
141 </tr>
141 </tr>
142 <tr>
142 <tr>
143 <th class="author">children</th>
143 <th class="author">children</th>
144 <td class="author"></td>
144 <td class="author"></td>
145 </tr>
145 </tr>
146 </table>
146 </table>
147
147
148 <div class="overflow">
148 <div class="overflow">
149 <div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="javascript:toggleLinewrap()">on</a></div>
149 <div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="javascript:toggleLinewrap()">on</a></div>
150 <div class="sourcefirst"> line source</div>
150 <div class="sourcefirst"> line source</div>
151 <pre class="sourcelines stripes4 wrap bottomline">
151 <pre class="sourcelines stripes4 wrap bottomline">
152 <span id="l1"><span class="c">#!/usr/bin/env python</span></span><a href="#l1"></a>
152 <span id="l1"><span class="c">#!/usr/bin/env python</span></span><a href="#l1"></a>
153 <span id="l2"></span><a href="#l2"></a>
153 <span id="l2"></span><a href="#l2"></a>
154 <span id="l3"><span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></span><a href="#l3"></a>
154 <span id="l3"><span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></span><a href="#l3"></a>
155 <span id="l4"></span><a href="#l4"></a>
155 <span id="l4"></span><a href="#l4"></a>
156 <span id="l5"><span class="sd">primes = 2 : sieve [3, 5..]</span></span><a href="#l5"></a>
156 <span id="l5"><span class="sd">primes = 2 : sieve [3, 5..]</span></span><a href="#l5"></a>
157 <span id="l6"><span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></span><a href="#l6"></a>
157 <span id="l6"><span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></span><a href="#l6"></a>
158 <span id="l7"><span class="sd">&quot;&quot;&quot;</span></span><a href="#l7"></a>
158 <span id="l7"><span class="sd">&quot;&quot;&quot;</span></span><a href="#l7"></a>
159 <span id="l8"></span><a href="#l8"></a>
159 <span id="l8"></span><a href="#l8"></a>
160 <span id="l9"><span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></span><a href="#l9"></a>
160 <span id="l9"><span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></span><a href="#l9"></a>
161 <span id="l10"></span><a href="#l10"></a>
161 <span id="l10"></span><a href="#l10"></a>
162 <span id="l11"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l11"></a>
162 <span id="l11"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l11"></a>
163 <span id="l12"> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l12"></a>
163 <span id="l12"> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l12"></a>
164 <span id="l13"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l13"></a>
164 <span id="l13"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l13"></a>
165 <span id="l14"> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l14"></a>
165 <span id="l14"> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l14"></a>
166 <span id="l15"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l15"></a>
166 <span id="l15"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l15"></a>
167 <span id="l16"> <span class="c"># infinite recursion.</span></span><a href="#l16"></a>
167 <span id="l16"> <span class="c"># infinite recursion.</span></span><a href="#l16"></a>
168 <span id="l17"> <span class="kn">yield</span> <span class="n">p</span></span><a href="#l17"></a>
168 <span id="l17"> <span class="kn">yield</span> <span class="n">p</span></span><a href="#l17"></a>
169 <span id="l18"> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></span><a href="#l18"></a>
169 <span id="l18"> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></span><a href="#l18"></a>
170 <span id="l19"> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l19"></a>
170 <span id="l19"> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l19"></a>
171 <span id="l20"> <span class="kn">yield</span> <span class="n">n</span></span><a href="#l20"></a>
171 <span id="l20"> <span class="kn">yield</span> <span class="n">n</span></span><a href="#l20"></a>
172 <span id="l21"></span><a href="#l21"></a>
172 <span id="l21"></span><a href="#l21"></a>
173 <span id="l22"> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></span><a href="#l22"></a>
173 <span id="l22"> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></span><a href="#l22"></a>
174 <span id="l23"> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></span><a href="#l23"></a>
174 <span id="l23"> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></span><a href="#l23"></a>
175 <span id="l24"></span><a href="#l24"></a>
175 <span id="l24"></span><a href="#l24"></a>
176 <span id="l25"><span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></span><a href="#l25"></a>
176 <span id="l25"><span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></span><a href="#l25"></a>
177 <span id="l26"> <span class="kn">import</span> <span class="nn">sys</span></span><a href="#l26"></a>
177 <span id="l26"> <span class="kn">import</span> <span class="nn">sys</span></span><a href="#l26"></a>
178 <span id="l27"> <span class="kn">try</span><span class="p">:</span></span><a href="#l27"></a>
178 <span id="l27"> <span class="kn">try</span><span class="p">:</span></span><a href="#l27"></a>
179 <span id="l28"> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></span><a href="#l28"></a>
179 <span id="l28"> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></span><a href="#l28"></a>
180 <span id="l29"> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></span><a href="#l29"></a>
180 <span id="l29"> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></span><a href="#l29"></a>
181 <span id="l30"> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></span><a href="#l30"></a>
181 <span id="l30"> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></span><a href="#l30"></a>
182 <span id="l31"> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></span><a href="#l31"></a>
182 <span id="l31"> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></span><a href="#l31"></a>
183 <span id="l32"> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></span><a href="#l32"></a>
183 <span id="l32"> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></span><a href="#l32"></a>
184 <span id="l33"></span><a href="#l33"></a></pre>
184 <span id="l33"></span><a href="#l33"></a></pre>
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
195
196 hgweb fileannotate, html
196 hgweb fileannotate, html
197
197
198 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py') | filterhtml
198 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py') | filterhtml
199 200 Script output follows
199 200 Script output follows
200
200
201 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
201 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
202 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
202 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
203 <head>
203 <head>
204 <link rel="icon" href="/static/hgicon.png" type="image/png" />
204 <link rel="icon" href="/static/hgicon.png" type="image/png" />
205 <meta name="robots" content="index, nofollow" />
205 <meta name="robots" content="index, nofollow" />
206 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
206 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
207 <script type="text/javascript" src="/static/mercurial.js"></script>
207 <script type="text/javascript" src="/static/mercurial.js"></script>
208
208
209 <link rel="stylesheet" href="/highlightcss" type="text/css" />
209 <link rel="stylesheet" href="/highlightcss" type="text/css" />
210 <title>test: primes.py annotate</title>
210 <title>test: primes.py annotate</title>
211 </head>
211 </head>
212 <body>
212 <body>
213
213
214 <div class="container">
214 <div class="container">
215 <div class="menu">
215 <div class="menu">
216 <div class="logo">
216 <div class="logo">
217 <a href="https://mercurial-scm.org/">
217 <a href="https://mercurial-scm.org/">
218 <img src="/static/hglogo.png" alt="mercurial" /></a>
218 <img src="/static/hglogo.png" alt="mercurial" /></a>
219 </div>
219 </div>
220 <ul>
220 <ul>
221 <li><a href="/shortlog/tip">log</a></li>
221 <li><a href="/shortlog/tip">log</a></li>
222 <li><a href="/graph/tip">graph</a></li>
222 <li><a href="/graph/tip">graph</a></li>
223 <li><a href="/tags">tags</a></li>
223 <li><a href="/tags">tags</a></li>
224 <li><a href="/bookmarks">bookmarks</a></li>
224 <li><a href="/bookmarks">bookmarks</a></li>
225 <li><a href="/branches">branches</a></li>
225 <li><a href="/branches">branches</a></li>
226 </ul>
226 </ul>
227
227
228 <ul>
228 <ul>
229 <li><a href="/rev/tip">changeset</a></li>
229 <li><a href="/rev/tip">changeset</a></li>
230 <li><a href="/file/tip/">browse</a></li>
230 <li><a href="/file/tip/">browse</a></li>
231 </ul>
231 </ul>
232 <ul>
232 <ul>
233 <li><a href="/file/tip/primes.py">file</a></li>
233 <li><a href="/file/tip/primes.py">file</a></li>
234 <li><a href="/file/tip/primes.py">latest</a></li>
234 <li><a href="/file/tip/primes.py">latest</a></li>
235 <li><a href="/diff/tip/primes.py">diff</a></li>
235 <li><a href="/diff/tip/primes.py">diff</a></li>
236 <li><a href="/comparison/tip/primes.py">comparison</a></li>
236 <li><a href="/comparison/tip/primes.py">comparison</a></li>
237 <li class="active">annotate</li>
237 <li class="active">annotate</li>
238 <li><a href="/log/tip/primes.py">file log</a></li>
238 <li><a href="/log/tip/primes.py">file log</a></li>
239 <li><a href="/raw-annotate/tip/primes.py">raw</a></li>
239 <li><a href="/raw-annotate/tip/primes.py">raw</a></li>
240 </ul>
240 </ul>
241 <ul>
241 <ul>
242 <li><a href="/help">help</a></li>
242 <li><a href="/help">help</a></li>
243 </ul>
243 </ul>
244 </div>
244 </div>
245
245
246 <div class="main">
246 <div class="main">
247 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
247 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
248 <h3>
248 <h3>
249 annotate primes.py @ 0:<a href="/rev/06824edf55d0">06824edf55d0</a>
249 annotate primes.py @ 0:<a href="/rev/06824edf55d0">06824edf55d0</a>
250 <span class="tag">tip</span>
250 <span class="tag">tip</span>
251 </h3>
251 </h3>
252
252
253 <form class="search" action="/log">
253 <form class="search" action="/log">
254
254
255 <p><input name="rev" id="search1" type="text" size="30" /></p>
255 <p><input name="rev" id="search1" type="text" size="30" /></p>
256 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
256 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
257 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
257 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
258 </form>
258 </form>
259
259
260 <div class="description">a</div>
260 <div class="description">a</div>
261
261
262 <table id="changesetEntry">
262 <table id="changesetEntry">
263 <tr>
263 <tr>
264 <th class="author">author</th>
264 <th class="author">author</th>
265 <td class="author">&#116;&#101;&#115;&#116;</td>
265 <td class="author">&#116;&#101;&#115;&#116;</td>
266 </tr>
266 </tr>
267 <tr>
267 <tr>
268 <th class="date">date</th>
268 <th class="date">date</th>
269 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
269 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
270 </tr>
270 </tr>
271 <tr>
271 <tr>
272 <th class="author">parents</th>
272 <th class="author">parents</th>
273 <td class="author"></td>
273 <td class="author"></td>
274 </tr>
274 </tr>
275 <tr>
275 <tr>
276 <th class="author">children</th>
276 <th class="author">children</th>
277 <td class="author"></td>
277 <td class="author"></td>
278 </tr>
278 </tr>
279 </table>
279 </table>
280
280
281 <div class="overflow">
281 <div class="overflow">
282 <table class="bigtable">
282 <table class="bigtable">
283 <thead>
283 <thead>
284 <tr>
284 <tr>
285 <th class="annotate">rev</th>
285 <th class="annotate">rev</th>
286 <th class="line">&nbsp;&nbsp;line source</th>
286 <th class="line">&nbsp;&nbsp;line source</th>
287 </tr>
287 </tr>
288 </thead>
288 </thead>
289 <tbody class="stripes2">
289 <tbody class="stripes2">
290
290
291 <tr id="l1" class="thisrev">
291 <tr id="l1" class="thisrev">
292 <td class="annotate">
292 <td class="annotate">
293 <a href="/annotate/06824edf55d0/primes.py#l1">
293 <a href="/annotate/06824edf55d0/primes.py#l1">
294 test@0
294 test@0
295 </a>
295 </a>
296 <div class="annotate-info">
296 <div class="annotate-info">
297 <div>06824edf55d0: a</div>
297 <div>06824edf55d0: a</div>
298 <div>parents: </div>
298 <div>parents: </div>
299 <a href="/diff/06824edf55d0/primes.py">diff</a>
300 <a href="/rev/06824edf55d0">changeset</a>
299 </div>
301 </div>
300 </td>
302 </td>
301 <td class="source"><a href="#l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
303 <td class="source"><a href="#l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
302 </tr>
304 </tr>
303 <tr id="l2" class="thisrev">
305 <tr id="l2" class="thisrev">
304 <td class="annotate">
306 <td class="annotate">
305
307
306 <div class="annotate-info">
308 <div class="annotate-info">
307 <div>06824edf55d0: a</div>
309 <div>06824edf55d0: a</div>
308 <div>parents: </div>
310 <div>parents: </div>
311 <a href="/diff/06824edf55d0/primes.py">diff</a>
312 <a href="/rev/06824edf55d0">changeset</a>
309 </div>
313 </div>
310 </td>
314 </td>
311 <td class="source"><a href="#l2"> 2</a> </td>
315 <td class="source"><a href="#l2"> 2</a> </td>
312 </tr>
316 </tr>
313 <tr id="l3" class="thisrev">
317 <tr id="l3" class="thisrev">
314 <td class="annotate">
318 <td class="annotate">
315
319
316 <div class="annotate-info">
320 <div class="annotate-info">
317 <div>06824edf55d0: a</div>
321 <div>06824edf55d0: a</div>
318 <div>parents: </div>
322 <div>parents: </div>
323 <a href="/diff/06824edf55d0/primes.py">diff</a>
324 <a href="/rev/06824edf55d0">changeset</a>
319 </div>
325 </div>
320 </td>
326 </td>
321 <td class="source"><a href="#l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
327 <td class="source"><a href="#l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
322 </tr>
328 </tr>
323 <tr id="l4" class="thisrev">
329 <tr id="l4" class="thisrev">
324 <td class="annotate">
330 <td class="annotate">
325
331
326 <div class="annotate-info">
332 <div class="annotate-info">
327 <div>06824edf55d0: a</div>
333 <div>06824edf55d0: a</div>
328 <div>parents: </div>
334 <div>parents: </div>
335 <a href="/diff/06824edf55d0/primes.py">diff</a>
336 <a href="/rev/06824edf55d0">changeset</a>
329 </div>
337 </div>
330 </td>
338 </td>
331 <td class="source"><a href="#l4"> 4</a> </td>
339 <td class="source"><a href="#l4"> 4</a> </td>
332 </tr>
340 </tr>
333 <tr id="l5" class="thisrev">
341 <tr id="l5" class="thisrev">
334 <td class="annotate">
342 <td class="annotate">
335
343
336 <div class="annotate-info">
344 <div class="annotate-info">
337 <div>06824edf55d0: a</div>
345 <div>06824edf55d0: a</div>
338 <div>parents: </div>
346 <div>parents: </div>
347 <a href="/diff/06824edf55d0/primes.py">diff</a>
348 <a href="/rev/06824edf55d0">changeset</a>
339 </div>
349 </div>
340 </td>
350 </td>
341 <td class="source"><a href="#l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
351 <td class="source"><a href="#l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
342 </tr>
352 </tr>
343 <tr id="l6" class="thisrev">
353 <tr id="l6" class="thisrev">
344 <td class="annotate">
354 <td class="annotate">
345
355
346 <div class="annotate-info">
356 <div class="annotate-info">
347 <div>06824edf55d0: a</div>
357 <div>06824edf55d0: a</div>
348 <div>parents: </div>
358 <div>parents: </div>
359 <a href="/diff/06824edf55d0/primes.py">diff</a>
360 <a href="/rev/06824edf55d0">changeset</a>
349 </div>
361 </div>
350 </td>
362 </td>
351 <td class="source"><a href="#l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
363 <td class="source"><a href="#l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
352 </tr>
364 </tr>
353 <tr id="l7" class="thisrev">
365 <tr id="l7" class="thisrev">
354 <td class="annotate">
366 <td class="annotate">
355
367
356 <div class="annotate-info">
368 <div class="annotate-info">
357 <div>06824edf55d0: a</div>
369 <div>06824edf55d0: a</div>
358 <div>parents: </div>
370 <div>parents: </div>
371 <a href="/diff/06824edf55d0/primes.py">diff</a>
372 <a href="/rev/06824edf55d0">changeset</a>
359 </div>
373 </div>
360 </td>
374 </td>
361 <td class="source"><a href="#l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
375 <td class="source"><a href="#l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
362 </tr>
376 </tr>
363 <tr id="l8" class="thisrev">
377 <tr id="l8" class="thisrev">
364 <td class="annotate">
378 <td class="annotate">
365
379
366 <div class="annotate-info">
380 <div class="annotate-info">
367 <div>06824edf55d0: a</div>
381 <div>06824edf55d0: a</div>
368 <div>parents: </div>
382 <div>parents: </div>
383 <a href="/diff/06824edf55d0/primes.py">diff</a>
384 <a href="/rev/06824edf55d0">changeset</a>
369 </div>
385 </div>
370 </td>
386 </td>
371 <td class="source"><a href="#l8"> 8</a> </td>
387 <td class="source"><a href="#l8"> 8</a> </td>
372 </tr>
388 </tr>
373 <tr id="l9" class="thisrev">
389 <tr id="l9" class="thisrev">
374 <td class="annotate">
390 <td class="annotate">
375
391
376 <div class="annotate-info">
392 <div class="annotate-info">
377 <div>06824edf55d0: a</div>
393 <div>06824edf55d0: a</div>
378 <div>parents: </div>
394 <div>parents: </div>
395 <a href="/diff/06824edf55d0/primes.py">diff</a>
396 <a href="/rev/06824edf55d0">changeset</a>
379 </div>
397 </div>
380 </td>
398 </td>
381 <td class="source"><a href="#l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></td>
399 <td class="source"><a href="#l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></td>
382 </tr>
400 </tr>
383 <tr id="l10" class="thisrev">
401 <tr id="l10" class="thisrev">
384 <td class="annotate">
402 <td class="annotate">
385
403
386 <div class="annotate-info">
404 <div class="annotate-info">
387 <div>06824edf55d0: a</div>
405 <div>06824edf55d0: a</div>
388 <div>parents: </div>
406 <div>parents: </div>
407 <a href="/diff/06824edf55d0/primes.py">diff</a>
408 <a href="/rev/06824edf55d0">changeset</a>
389 </div>
409 </div>
390 </td>
410 </td>
391 <td class="source"><a href="#l10"> 10</a> </td>
411 <td class="source"><a href="#l10"> 10</a> </td>
392 </tr>
412 </tr>
393 <tr id="l11" class="thisrev">
413 <tr id="l11" class="thisrev">
394 <td class="annotate">
414 <td class="annotate">
395
415
396 <div class="annotate-info">
416 <div class="annotate-info">
397 <div>06824edf55d0: a</div>
417 <div>06824edf55d0: a</div>
398 <div>parents: </div>
418 <div>parents: </div>
419 <a href="/diff/06824edf55d0/primes.py">diff</a>
420 <a href="/rev/06824edf55d0">changeset</a>
399 </div>
421 </div>
400 </td>
422 </td>
401 <td class="source"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
423 <td class="source"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
402 </tr>
424 </tr>
403 <tr id="l12" class="thisrev">
425 <tr id="l12" class="thisrev">
404 <td class="annotate">
426 <td class="annotate">
405
427
406 <div class="annotate-info">
428 <div class="annotate-info">
407 <div>06824edf55d0: a</div>
429 <div>06824edf55d0: a</div>
408 <div>parents: </div>
430 <div>parents: </div>
431 <a href="/diff/06824edf55d0/primes.py">diff</a>
432 <a href="/rev/06824edf55d0">changeset</a>
409 </div>
433 </div>
410 </td>
434 </td>
411 <td class="source"><a href="#l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
435 <td class="source"><a href="#l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
412 </tr>
436 </tr>
413 <tr id="l13" class="thisrev">
437 <tr id="l13" class="thisrev">
414 <td class="annotate">
438 <td class="annotate">
415
439
416 <div class="annotate-info">
440 <div class="annotate-info">
417 <div>06824edf55d0: a</div>
441 <div>06824edf55d0: a</div>
418 <div>parents: </div>
442 <div>parents: </div>
443 <a href="/diff/06824edf55d0/primes.py">diff</a>
444 <a href="/rev/06824edf55d0">changeset</a>
419 </div>
445 </div>
420 </td>
446 </td>
421 <td class="source"><a href="#l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
447 <td class="source"><a href="#l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
422 </tr>
448 </tr>
423 <tr id="l14" class="thisrev">
449 <tr id="l14" class="thisrev">
424 <td class="annotate">
450 <td class="annotate">
425
451
426 <div class="annotate-info">
452 <div class="annotate-info">
427 <div>06824edf55d0: a</div>
453 <div>06824edf55d0: a</div>
428 <div>parents: </div>
454 <div>parents: </div>
455 <a href="/diff/06824edf55d0/primes.py">diff</a>
456 <a href="/rev/06824edf55d0">changeset</a>
429 </div>
457 </div>
430 </td>
458 </td>
431 <td class="source"><a href="#l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td>
459 <td class="source"><a href="#l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td>
432 </tr>
460 </tr>
433 <tr id="l15" class="thisrev">
461 <tr id="l15" class="thisrev">
434 <td class="annotate">
462 <td class="annotate">
435
463
436 <div class="annotate-info">
464 <div class="annotate-info">
437 <div>06824edf55d0: a</div>
465 <div>06824edf55d0: a</div>
438 <div>parents: </div>
466 <div>parents: </div>
467 <a href="/diff/06824edf55d0/primes.py">diff</a>
468 <a href="/rev/06824edf55d0">changeset</a>
439 </div>
469 </div>
440 </td>
470 </td>
441 <td class="source"><a href="#l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
471 <td class="source"><a href="#l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
442 </tr>
472 </tr>
443 <tr id="l16" class="thisrev">
473 <tr id="l16" class="thisrev">
444 <td class="annotate">
474 <td class="annotate">
445
475
446 <div class="annotate-info">
476 <div class="annotate-info">
447 <div>06824edf55d0: a</div>
477 <div>06824edf55d0: a</div>
448 <div>parents: </div>
478 <div>parents: </div>
479 <a href="/diff/06824edf55d0/primes.py">diff</a>
480 <a href="/rev/06824edf55d0">changeset</a>
449 </div>
481 </div>
450 </td>
482 </td>
451 <td class="source"><a href="#l16"> 16</a> <span class="c"># infinite recursion.</span></td>
483 <td class="source"><a href="#l16"> 16</a> <span class="c"># infinite recursion.</span></td>
452 </tr>
484 </tr>
453 <tr id="l17" class="thisrev">
485 <tr id="l17" class="thisrev">
454 <td class="annotate">
486 <td class="annotate">
455
487
456 <div class="annotate-info">
488 <div class="annotate-info">
457 <div>06824edf55d0: a</div>
489 <div>06824edf55d0: a</div>
458 <div>parents: </div>
490 <div>parents: </div>
491 <a href="/diff/06824edf55d0/primes.py">diff</a>
492 <a href="/rev/06824edf55d0">changeset</a>
459 </div>
493 </div>
460 </td>
494 </td>
461 <td class="source"><a href="#l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
495 <td class="source"><a href="#l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
462 </tr>
496 </tr>
463 <tr id="l18" class="thisrev">
497 <tr id="l18" class="thisrev">
464 <td class="annotate">
498 <td class="annotate">
465
499
466 <div class="annotate-info">
500 <div class="annotate-info">
467 <div>06824edf55d0: a</div>
501 <div>06824edf55d0: a</div>
468 <div>parents: </div>
502 <div>parents: </div>
503 <a href="/diff/06824edf55d0/primes.py">diff</a>
504 <a href="/rev/06824edf55d0">changeset</a>
469 </div>
505 </div>
470 </td>
506 </td>
471 <td class="source"><a href="#l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
507 <td class="source"><a href="#l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
472 </tr>
508 </tr>
473 <tr id="l19" class="thisrev">
509 <tr id="l19" class="thisrev">
474 <td class="annotate">
510 <td class="annotate">
475
511
476 <div class="annotate-info">
512 <div class="annotate-info">
477 <div>06824edf55d0: a</div>
513 <div>06824edf55d0: a</div>
478 <div>parents: </div>
514 <div>parents: </div>
515 <a href="/diff/06824edf55d0/primes.py">diff</a>
516 <a href="/rev/06824edf55d0">changeset</a>
479 </div>
517 </div>
480 </td>
518 </td>
481 <td class="source"><a href="#l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
519 <td class="source"><a href="#l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
482 </tr>
520 </tr>
483 <tr id="l20" class="thisrev">
521 <tr id="l20" class="thisrev">
484 <td class="annotate">
522 <td class="annotate">
485
523
486 <div class="annotate-info">
524 <div class="annotate-info">
487 <div>06824edf55d0: a</div>
525 <div>06824edf55d0: a</div>
488 <div>parents: </div>
526 <div>parents: </div>
527 <a href="/diff/06824edf55d0/primes.py">diff</a>
528 <a href="/rev/06824edf55d0">changeset</a>
489 </div>
529 </div>
490 </td>
530 </td>
491 <td class="source"><a href="#l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
531 <td class="source"><a href="#l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
492 </tr>
532 </tr>
493 <tr id="l21" class="thisrev">
533 <tr id="l21" class="thisrev">
494 <td class="annotate">
534 <td class="annotate">
495
535
496 <div class="annotate-info">
536 <div class="annotate-info">
497 <div>06824edf55d0: a</div>
537 <div>06824edf55d0: a</div>
498 <div>parents: </div>
538 <div>parents: </div>
539 <a href="/diff/06824edf55d0/primes.py">diff</a>
540 <a href="/rev/06824edf55d0">changeset</a>
499 </div>
541 </div>
500 </td>
542 </td>
501 <td class="source"><a href="#l21"> 21</a> </td>
543 <td class="source"><a href="#l21"> 21</a> </td>
502 </tr>
544 </tr>
503 <tr id="l22" class="thisrev">
545 <tr id="l22" class="thisrev">
504 <td class="annotate">
546 <td class="annotate">
505
547
506 <div class="annotate-info">
548 <div class="annotate-info">
507 <div>06824edf55d0: a</div>
549 <div>06824edf55d0: a</div>
508 <div>parents: </div>
550 <div>parents: </div>
551 <a href="/diff/06824edf55d0/primes.py">diff</a>
552 <a href="/rev/06824edf55d0">changeset</a>
509 </div>
553 </div>
510 </td>
554 </td>
511 <td class="source"><a href="#l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
555 <td class="source"><a href="#l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
512 </tr>
556 </tr>
513 <tr id="l23" class="thisrev">
557 <tr id="l23" class="thisrev">
514 <td class="annotate">
558 <td class="annotate">
515
559
516 <div class="annotate-info">
560 <div class="annotate-info">
517 <div>06824edf55d0: a</div>
561 <div>06824edf55d0: a</div>
518 <div>parents: </div>
562 <div>parents: </div>
563 <a href="/diff/06824edf55d0/primes.py">diff</a>
564 <a href="/rev/06824edf55d0">changeset</a>
519 </div>
565 </div>
520 </td>
566 </td>
521 <td class="source"><a href="#l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
567 <td class="source"><a href="#l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
522 </tr>
568 </tr>
523 <tr id="l24" class="thisrev">
569 <tr id="l24" class="thisrev">
524 <td class="annotate">
570 <td class="annotate">
525
571
526 <div class="annotate-info">
572 <div class="annotate-info">
527 <div>06824edf55d0: a</div>
573 <div>06824edf55d0: a</div>
528 <div>parents: </div>
574 <div>parents: </div>
575 <a href="/diff/06824edf55d0/primes.py">diff</a>
576 <a href="/rev/06824edf55d0">changeset</a>
529 </div>
577 </div>
530 </td>
578 </td>
531 <td class="source"><a href="#l24"> 24</a> </td>
579 <td class="source"><a href="#l24"> 24</a> </td>
532 </tr>
580 </tr>
533 <tr id="l25" class="thisrev">
581 <tr id="l25" class="thisrev">
534 <td class="annotate">
582 <td class="annotate">
535
583
536 <div class="annotate-info">
584 <div class="annotate-info">
537 <div>06824edf55d0: a</div>
585 <div>06824edf55d0: a</div>
538 <div>parents: </div>
586 <div>parents: </div>
587 <a href="/diff/06824edf55d0/primes.py">diff</a>
588 <a href="/rev/06824edf55d0">changeset</a>
539 </div>
589 </div>
540 </td>
590 </td>
541 <td class="source"><a href="#l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></td>
591 <td class="source"><a href="#l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></td>
542 </tr>
592 </tr>
543 <tr id="l26" class="thisrev">
593 <tr id="l26" class="thisrev">
544 <td class="annotate">
594 <td class="annotate">
545
595
546 <div class="annotate-info">
596 <div class="annotate-info">
547 <div>06824edf55d0: a</div>
597 <div>06824edf55d0: a</div>
548 <div>parents: </div>
598 <div>parents: </div>
599 <a href="/diff/06824edf55d0/primes.py">diff</a>
600 <a href="/rev/06824edf55d0">changeset</a>
549 </div>
601 </div>
550 </td>
602 </td>
551 <td class="source"><a href="#l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
603 <td class="source"><a href="#l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
552 </tr>
604 </tr>
553 <tr id="l27" class="thisrev">
605 <tr id="l27" class="thisrev">
554 <td class="annotate">
606 <td class="annotate">
555
607
556 <div class="annotate-info">
608 <div class="annotate-info">
557 <div>06824edf55d0: a</div>
609 <div>06824edf55d0: a</div>
558 <div>parents: </div>
610 <div>parents: </div>
611 <a href="/diff/06824edf55d0/primes.py">diff</a>
612 <a href="/rev/06824edf55d0">changeset</a>
559 </div>
613 </div>
560 </td>
614 </td>
561 <td class="source"><a href="#l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
615 <td class="source"><a href="#l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
562 </tr>
616 </tr>
563 <tr id="l28" class="thisrev">
617 <tr id="l28" class="thisrev">
564 <td class="annotate">
618 <td class="annotate">
565
619
566 <div class="annotate-info">
620 <div class="annotate-info">
567 <div>06824edf55d0: a</div>
621 <div>06824edf55d0: a</div>
568 <div>parents: </div>
622 <div>parents: </div>
623 <a href="/diff/06824edf55d0/primes.py">diff</a>
624 <a href="/rev/06824edf55d0">changeset</a>
569 </div>
625 </div>
570 </td>
626 </td>
571 <td class="source"><a href="#l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></td>
627 <td class="source"><a href="#l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></td>
572 </tr>
628 </tr>
573 <tr id="l29" class="thisrev">
629 <tr id="l29" class="thisrev">
574 <td class="annotate">
630 <td class="annotate">
575
631
576 <div class="annotate-info">
632 <div class="annotate-info">
577 <div>06824edf55d0: a</div>
633 <div>06824edf55d0: a</div>
578 <div>parents: </div>
634 <div>parents: </div>
635 <a href="/diff/06824edf55d0/primes.py">diff</a>
636 <a href="/rev/06824edf55d0">changeset</a>
579 </div>
637 </div>
580 </td>
638 </td>
581 <td class="source"><a href="#l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td>
639 <td class="source"><a href="#l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td>
582 </tr>
640 </tr>
583 <tr id="l30" class="thisrev">
641 <tr id="l30" class="thisrev">
584 <td class="annotate">
642 <td class="annotate">
585
643
586 <div class="annotate-info">
644 <div class="annotate-info">
587 <div>06824edf55d0: a</div>
645 <div>06824edf55d0: a</div>
588 <div>parents: </div>
646 <div>parents: </div>
647 <a href="/diff/06824edf55d0/primes.py">diff</a>
648 <a href="/rev/06824edf55d0">changeset</a>
589 </div>
649 </div>
590 </td>
650 </td>
591 <td class="source"><a href="#l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></td>
651 <td class="source"><a href="#l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></td>
592 </tr>
652 </tr>
593 <tr id="l31" class="thisrev">
653 <tr id="l31" class="thisrev">
594 <td class="annotate">
654 <td class="annotate">
595
655
596 <div class="annotate-info">
656 <div class="annotate-info">
597 <div>06824edf55d0: a</div>
657 <div>06824edf55d0: a</div>
598 <div>parents: </div>
658 <div>parents: </div>
659 <a href="/diff/06824edf55d0/primes.py">diff</a>
660 <a href="/rev/06824edf55d0">changeset</a>
599 </div>
661 </div>
600 </td>
662 </td>
601 <td class="source"><a href="#l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
663 <td class="source"><a href="#l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
602 </tr>
664 </tr>
603 <tr id="l32" class="thisrev">
665 <tr id="l32" class="thisrev">
604 <td class="annotate">
666 <td class="annotate">
605
667
606 <div class="annotate-info">
668 <div class="annotate-info">
607 <div>06824edf55d0: a</div>
669 <div>06824edf55d0: a</div>
608 <div>parents: </div>
670 <div>parents: </div>
671 <a href="/diff/06824edf55d0/primes.py">diff</a>
672 <a href="/rev/06824edf55d0">changeset</a>
609 </div>
673 </div>
610 </td>
674 </td>
611 <td class="source"><a href="#l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></td>
675 <td class="source"><a href="#l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></td>
612 </tr>
676 </tr>
613 <tr id="l33" class="thisrev">
677 <tr id="l33" class="thisrev">
614 <td class="annotate">
678 <td class="annotate">
615
679
616 <div class="annotate-info">
680 <div class="annotate-info">
617 <div>06824edf55d0: a</div>
681 <div>06824edf55d0: a</div>
618 <div>parents: </div>
682 <div>parents: </div>
683 <a href="/diff/06824edf55d0/primes.py">diff</a>
684 <a href="/rev/06824edf55d0">changeset</a>
619 </div>
685 </div>
620 </td>
686 </td>
621 <td class="source"><a href="#l33"> 33</a> </td>
687 <td class="source"><a href="#l33"> 33</a> </td>
622 </tr>
688 </tr>
623 </tbody>
689 </tbody>
624 </table>
690 </table>
625 </div>
691 </div>
626 </div>
692 </div>
627 </div>
693 </div>
628
694
629 <script type="text/javascript">process_dates()</script>
695 <script type="text/javascript">process_dates()</script>
630
696
631
697
632 </body>
698 </body>
633 </html>
699 </html>
634
700
635
701
636 hgweb fileannotate, raw
702 hgweb fileannotate, raw
637
703
638 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py?style=raw') \
704 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py?style=raw') \
639 > | sed "s/test@//" > a
705 > | sed "s/test@//" > a
640 $ echo "200 Script output follows" > b
706 $ echo "200 Script output follows" > b
641 $ echo "" >> b
707 $ echo "" >> b
642 $ echo "" >> b
708 $ echo "" >> b
643 $ hg annotate "primes.py" >> b
709 $ hg annotate "primes.py" >> b
644 $ echo "" >> b
710 $ echo "" >> b
645 $ echo "" >> b
711 $ echo "" >> b
646 $ echo "" >> b
712 $ echo "" >> b
647 $ echo "" >> b
713 $ echo "" >> b
648 $ cmp b a || diff -u b a
714 $ cmp b a || diff -u b a
649
715
650 hgweb filerevision, raw
716 hgweb filerevision, raw
651
717
652 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py?style=raw') \
718 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py?style=raw') \
653 > > a
719 > > a
654 $ echo "200 Script output follows" > b
720 $ echo "200 Script output follows" > b
655 $ echo "" >> b
721 $ echo "" >> b
656 $ hg cat primes.py >> b
722 $ hg cat primes.py >> b
657 $ cmp b a || diff -u b a
723 $ cmp b a || diff -u b a
658
724
659 hgweb highlightcss friendly
725 hgweb highlightcss friendly
660
726
661 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
727 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
662 $ head -n 4 out
728 $ head -n 4 out
663 200 Script output follows
729 200 Script output follows
664
730
665 /* pygments_style = friendly */
731 /* pygments_style = friendly */
666
732
667 $ rm out
733 $ rm out
668
734
669 errors encountered
735 errors encountered
670
736
671 $ cat errors.log
737 $ cat errors.log
672 $ killdaemons.py
738 $ killdaemons.py
673
739
674 Change the pygments style
740 Change the pygments style
675
741
676 $ cat > .hg/hgrc <<EOF
742 $ cat > .hg/hgrc <<EOF
677 > [web]
743 > [web]
678 > pygments_style = fruity
744 > pygments_style = fruity
679 > EOF
745 > EOF
680
746
681 hg serve again
747 hg serve again
682
748
683 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
749 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
684 $ cat hg.pid >> $DAEMON_PIDS
750 $ cat hg.pid >> $DAEMON_PIDS
685
751
686 hgweb highlightcss fruity
752 hgweb highlightcss fruity
687
753
688 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
754 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
689 $ head -n 4 out
755 $ head -n 4 out
690 200 Script output follows
756 200 Script output follows
691
757
692 /* pygments_style = fruity */
758 /* pygments_style = fruity */
693
759
694 $ rm out
760 $ rm out
695
761
696 errors encountered
762 errors encountered
697
763
698 $ cat errors.log
764 $ cat errors.log
699 $ killdaemons.py
765 $ killdaemons.py
700
766
701 only highlight C source files
767 only highlight C source files
702
768
703 $ cat > .hg/hgrc <<EOF
769 $ cat > .hg/hgrc <<EOF
704 > [web]
770 > [web]
705 > highlightfiles = **.c
771 > highlightfiles = **.c
706 > EOF
772 > EOF
707
773
708 hg serve again
774 hg serve again
709
775
710 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
776 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
711 $ cat hg.pid >> $DAEMON_PIDS
777 $ cat hg.pid >> $DAEMON_PIDS
712
778
713 test that fileset in highlightfiles works and primes.py is not highlighted
779 test that fileset in highlightfiles works and primes.py is not highlighted
714
780
715 $ get-with-headers.py localhost:$HGPORT 'file/tip/primes.py' | grep 'id="l11"'
781 $ get-with-headers.py localhost:$HGPORT 'file/tip/primes.py' | grep 'id="l11"'
716 <span id="l11">def primes():</span><a href="#l11"></a>
782 <span id="l11">def primes():</span><a href="#l11"></a>
717
783
718 errors encountered
784 errors encountered
719
785
720 $ cat errors.log
786 $ cat errors.log
721 $ cd ..
787 $ cd ..
722 $ hg init eucjp
788 $ hg init eucjp
723 $ cd eucjp
789 $ cd eucjp
724 $ $PYTHON -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
790 $ $PYTHON -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
725 $ hg ci -Ama
791 $ hg ci -Ama
726 adding eucjp.txt
792 adding eucjp.txt
727 $ hgserveget () {
793 $ hgserveget () {
728 > killdaemons.py
794 > killdaemons.py
729 > echo % HGENCODING="$1" hg serve
795 > echo % HGENCODING="$1" hg serve
730 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
796 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
731 > cat hg.pid >> $DAEMON_PIDS
797 > cat hg.pid >> $DAEMON_PIDS
732 >
798 >
733 > echo % hgweb filerevision, html
799 > echo % hgweb filerevision, html
734 > get-with-headers.py localhost:$HGPORT "file/tip/$2" \
800 > get-with-headers.py localhost:$HGPORT "file/tip/$2" \
735 > | grep '<div class="parity0 source">'
801 > | grep '<div class="parity0 source">'
736 > echo % errors encountered
802 > echo % errors encountered
737 > cat errors.log
803 > cat errors.log
738 > }
804 > }
739 $ hgserveget euc-jp eucjp.txt
805 $ hgserveget euc-jp eucjp.txt
740 % HGENCODING=euc-jp hg serve
806 % HGENCODING=euc-jp hg serve
741 % hgweb filerevision, html
807 % hgweb filerevision, html
742 % errors encountered
808 % errors encountered
743 $ hgserveget utf-8 eucjp.txt
809 $ hgserveget utf-8 eucjp.txt
744 % HGENCODING=utf-8 hg serve
810 % HGENCODING=utf-8 hg serve
745 % hgweb filerevision, html
811 % hgweb filerevision, html
746 % errors encountered
812 % errors encountered
747 $ hgserveget us-ascii eucjp.txt
813 $ hgserveget us-ascii eucjp.txt
748 % HGENCODING=us-ascii hg serve
814 % HGENCODING=us-ascii hg serve
749 % hgweb filerevision, html
815 % hgweb filerevision, html
750 % errors encountered
816 % errors encountered
751
817
752 We attempt to highlight unknown files by default
818 We attempt to highlight unknown files by default
753
819
754 $ killdaemons.py
820 $ killdaemons.py
755
821
756 $ cat > .hg/hgrc << EOF
822 $ cat > .hg/hgrc << EOF
757 > [web]
823 > [web]
758 > highlightfiles = **
824 > highlightfiles = **
759 > EOF
825 > EOF
760
826
761 $ cat > unknownfile << EOF
827 $ cat > unknownfile << EOF
762 > #!/usr/bin/python
828 > #!/usr/bin/python
763 > def foo():
829 > def foo():
764 > pass
830 > pass
765 > EOF
831 > EOF
766
832
767 $ hg add unknownfile
833 $ hg add unknownfile
768 $ hg commit -m unknown unknownfile
834 $ hg commit -m unknown unknownfile
769
835
770 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid
836 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid
771 $ cat hg.pid >> $DAEMON_PIDS
837 $ cat hg.pid >> $DAEMON_PIDS
772
838
773 $ get-with-headers.py localhost:$HGPORT 'file/tip/unknownfile' | grep l2
839 $ get-with-headers.py localhost:$HGPORT 'file/tip/unknownfile' | grep l2
774 <span id="l2"><span class="k">def</span> <span class="nf">foo</span><span class="p">():</span></span><a href="#l2"></a>
840 <span id="l2"><span class="k">def</span> <span class="nf">foo</span><span class="p">():</span></span><a href="#l2"></a>
775
841
776 We can prevent Pygments from falling back to a non filename-based
842 We can prevent Pygments from falling back to a non filename-based
777 detection mode
843 detection mode
778
844
779 $ cat > .hg/hgrc << EOF
845 $ cat > .hg/hgrc << EOF
780 > [web]
846 > [web]
781 > highlightfiles = **
847 > highlightfiles = **
782 > highlightonlymatchfilename = true
848 > highlightonlymatchfilename = true
783 > EOF
849 > EOF
784
850
785 $ killdaemons.py
851 $ killdaemons.py
786 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid
852 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid
787 $ cat hg.pid >> $DAEMON_PIDS
853 $ cat hg.pid >> $DAEMON_PIDS
788 $ get-with-headers.py localhost:$HGPORT 'file/tip/unknownfile' | grep l2
854 $ get-with-headers.py localhost:$HGPORT 'file/tip/unknownfile' | grep l2
789 <span id="l2">def foo():</span><a href="#l2"></a>
855 <span id="l2">def foo():</span><a href="#l2"></a>
790
856
791 $ cd ..
857 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now