##// END OF EJS Templates
hgweb: fix dynamic date calculation not working under Safari...
Brodie Rao -
r15375:fe9d36a6 stable
parent child Browse files
Show More
@@ -1,214 +1,214 b''
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 = ../paper/footer.tmpl
5 footer = ../paper/footer.tmpl
6 search = ../paper/search.tmpl
6 search = ../paper/search.tmpl
7
7
8 changelog = ../paper/shortlog.tmpl
8 changelog = ../paper/shortlog.tmpl
9 shortlog = ../paper/shortlog.tmpl
9 shortlog = ../paper/shortlog.tmpl
10 shortlogentry = ../paper/shortlogentry.tmpl
10 shortlogentry = ../paper/shortlogentry.tmpl
11 graph = ../paper/graph.tmpl
11 graph = ../paper/graph.tmpl
12
12
13 help = ../paper/help.tmpl
13 help = ../paper/help.tmpl
14 helptopics = ../paper/helptopics.tmpl
14 helptopics = ../paper/helptopics.tmpl
15
15
16 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
16 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
17
17
18 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
21 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
21 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
22 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
22 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
24 filenolink = '{file|escape} '
24 filenolink = '{file|escape} '
25 fileellipses = '...'
25 fileellipses = '...'
26 diffstatlink = ../paper/diffstat.tmpl
26 diffstatlink = ../paper/diffstat.tmpl
27 diffstatnolink = ../paper/diffstat.tmpl
27 diffstatnolink = ../paper/diffstat.tmpl
28 changelogentry = ../paper/shortlogentry.tmpl
28 changelogentry = ../paper/shortlogentry.tmpl
29 searchentry = ../paper/shortlogentry.tmpl
29 searchentry = ../paper/shortlogentry.tmpl
30 changeset = ../paper/changeset.tmpl
30 changeset = ../paper/changeset.tmpl
31 manifest = ../paper/manifest.tmpl
31 manifest = ../paper/manifest.tmpl
32
32
33 nav = '{before%naventry} {after%naventry}'
33 nav = '{before%naventry} {after%naventry}'
34 navshort = '{before%navshortentry}{after%navshortentry}'
34 navshort = '{before%navshortentry}{after%navshortentry}'
35 navgraph = '{before%navgraphentry}{after%navgraphentry}'
35 navgraph = '{before%navgraphentry}{after%navgraphentry}'
36 filenav = '{before%filenaventry}{after%filenaventry}'
36 filenav = '{before%filenaventry}{after%filenaventry}'
37
37
38 direntry = '
38 direntry = '
39 <tr class="fileline parity{parity}">
39 <tr class="fileline parity{parity}">
40 <td class="name">
40 <td class="name">
41 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
41 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
42 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
42 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
43 </a>
43 </a>
44 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
44 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
45 {emptydirs|escape}
45 {emptydirs|escape}
46 </a>
46 </a>
47 </td>
47 </td>
48 <td class="size"></td>
48 <td class="size"></td>
49 <td class="permissions">drwxr-xr-x</td>
49 <td class="permissions">drwxr-xr-x</td>
50 </tr>'
50 </tr>'
51
51
52 fileentry = '
52 fileentry = '
53 <tr class="fileline parity{parity}">
53 <tr class="fileline parity{parity}">
54 <td class="filename">
54 <td class="filename">
55 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
55 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
56 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
56 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
57 </a>
57 </a>
58 </td>
58 </td>
59 <td class="size">{size}</td>
59 <td class="size">{size}</td>
60 <td class="permissions">{permissions|permissions}</td>
60 <td class="permissions">{permissions|permissions}</td>
61 </tr>'
61 </tr>'
62
62
63 filerevision = ../paper/filerevision.tmpl
63 filerevision = ../paper/filerevision.tmpl
64 fileannotate = ../paper/fileannotate.tmpl
64 fileannotate = ../paper/fileannotate.tmpl
65 filediff = ../paper/filediff.tmpl
65 filediff = ../paper/filediff.tmpl
66 filelog = ../paper/filelog.tmpl
66 filelog = ../paper/filelog.tmpl
67 fileline = '
67 fileline = '
68 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
68 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
69 filelogentry = ../paper/filelogentry.tmpl
69 filelogentry = ../paper/filelogentry.tmpl
70
70
71 annotateline = '
71 annotateline = '
72 <tr class="parity{parity}">
72 <tr class="parity{parity}">
73 <td class="annotate">
73 <td class="annotate">
74 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
74 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
75 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
75 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
76 </td>
76 </td>
77 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
77 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
78 </tr>'
78 </tr>'
79
79
80 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
80 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
81 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
81 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
82 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
82 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
83 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
83 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
84 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
84 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
85
85
86 changelogparent = '
86 changelogparent = '
87 <tr>
87 <tr>
88 <th class="parent">parent {rev}:</th>
88 <th class="parent">parent {rev}:</th>
89 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
89 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
90 </tr>'
90 </tr>'
91
91
92 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
92 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
93
93
94 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
94 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
95 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
95 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
96
96
97 filerename = '{file|escape}@'
97 filerename = '{file|escape}@'
98 filelogrename = '
98 filelogrename = '
99 <span class="base">
99 <span class="base">
100 base
100 base
101 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
101 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
102 {file|escape}@{node|short}
102 {file|escape}@{node|short}
103 </a>
103 </a>
104 </span>'
104 </span>'
105 fileannotateparent = '
105 fileannotateparent = '
106 <tr>
106 <tr>
107 <td class="metatag">parent:</td>
107 <td class="metatag">parent:</td>
108 <td>
108 <td>
109 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
109 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
110 {rename%filerename}{node|short}
110 {rename%filerename}{node|short}
111 </a>
111 </a>
112 </td>
112 </td>
113 </tr>'
113 </tr>'
114 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
114 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
115 changelogchild = '
115 changelogchild = '
116 <tr>
116 <tr>
117 <th class="child">child</th>
117 <th class="child">child</th>
118 <td class="child">
118 <td class="child">
119 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
119 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
120 {node|short}
120 {node|short}
121 </a>
121 </a>
122 </td>
122 </td>
123 </tr>'
123 </tr>'
124 fileannotatechild = '
124 fileannotatechild = '
125 <tr>
125 <tr>
126 <td class="metatag">child:</td>
126 <td class="metatag">child:</td>
127 <td>
127 <td>
128 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
128 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
129 {node|short}
129 {node|short}
130 </a>
130 </a>
131 </td>
131 </td>
132 </tr>'
132 </tr>'
133 tags = ../paper/tags.tmpl
133 tags = ../paper/tags.tmpl
134 tagentry = '
134 tagentry = '
135 <tr class="tagEntry parity{parity}">
135 <tr class="tagEntry parity{parity}">
136 <td>
136 <td>
137 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
137 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
138 {tag|escape}
138 {tag|escape}
139 </a>
139 </a>
140 </td>
140 </td>
141 <td class="node">
141 <td class="node">
142 {node|short}
142 {node|short}
143 </td>
143 </td>
144 </tr>'
144 </tr>'
145 bookmarks = ../paper/bookmarks.tmpl
145 bookmarks = ../paper/bookmarks.tmpl
146 bookmarkentry = '
146 bookmarkentry = '
147 <tr class="tagEntry parity{parity}">
147 <tr class="tagEntry parity{parity}">
148 <td>
148 <td>
149 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
149 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
150 {bookmark|escape}
150 {bookmark|escape}
151 </a>
151 </a>
152 </td>
152 </td>
153 <td class="node">
153 <td class="node">
154 {node|short}
154 {node|short}
155 </td>
155 </td>
156 </tr>'
156 </tr>'
157 branches = ../paper/branches.tmpl
157 branches = ../paper/branches.tmpl
158 branchentry = '
158 branchentry = '
159 <tr class="tagEntry parity{parity}">
159 <tr class="tagEntry parity{parity}">
160 <td>
160 <td>
161 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
161 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
162 {branch|escape}
162 {branch|escape}
163 </a>
163 </a>
164 </td>
164 </td>
165 <td class="node">
165 <td class="node">
166 {node|short}
166 {node|short}
167 </td>
167 </td>
168 </tr>'
168 </tr>'
169 changelogtag = '<span class="tag">{name|escape}</span> '
169 changelogtag = '<span class="tag">{name|escape}</span> '
170 changesettag = '<span class="tag">{tag|escape}</span> '
170 changesettag = '<span class="tag">{tag|escape}</span> '
171 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
171 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
172 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
172 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
173 changelogbranchname = '<span class="branchname">{name|escape}</span> '
173 changelogbranchname = '<span class="branchname">{name|escape}</span> '
174
174
175 filediffparent = '
175 filediffparent = '
176 <tr>
176 <tr>
177 <th class="parent">parent {rev}:</th>
177 <th class="parent">parent {rev}:</th>
178 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
178 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
179 </tr>'
179 </tr>'
180 filelogparent = '
180 filelogparent = '
181 <tr>
181 <tr>
182 <th>parent {rev}:</th>
182 <th>parent {rev}:</th>
183 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
183 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
184 </tr>'
184 </tr>'
185 filediffchild = '
185 filediffchild = '
186 <tr>
186 <tr>
187 <th class="child">child {rev}:</th>
187 <th class="child">child {rev}:</th>
188 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
188 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
189 </td>
189 </td>
190 </tr>'
190 </tr>'
191 filelogchild = '
191 filelogchild = '
192 <tr>
192 <tr>
193 <th>child {rev}:</th>
193 <th>child {rev}:</th>
194 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
194 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
195 </tr>'
195 </tr>'
196
196
197 indexentry = '
197 indexentry = '
198 <tr class="parity{parity}">
198 <tr class="parity{parity}">
199 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
199 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
200 <td>{description}</td>
200 <td>{description}</td>
201 <td>{contact|obfuscate}</td>
201 <td>{contact|obfuscate}</td>
202 <td class="age">{lastchange|date}</td>
202 <td class="age">{lastchange|rfc822date}</td>
203 <td class="indexlinks">{archives%indexarchiveentry}</td>
203 <td class="indexlinks">{archives%indexarchiveentry}</td>
204 </tr>\n'
204 </tr>\n'
205 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
205 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
206 index = ../paper/index.tmpl
206 index = ../paper/index.tmpl
207 archiveentry = '
207 archiveentry = '
208 <li>
208 <li>
209 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
209 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
210 </li>'
210 </li>'
211 notfound = ../paper/notfound.tmpl
211 notfound = ../paper/notfound.tmpl
212 error = ../paper/error.tmpl
212 error = ../paper/error.tmpl
213 urlparameter = '{separator}{name}={value|urlescape}'
213 urlparameter = '{separator}{name}={value|urlescape}'
214 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
214 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,14 +1,14 b''
1 <div>
1 <div>
2 <a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|date}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
2 <a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|rfc822date}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
3 </div>
3 </div>
4 <div class="title_text">
4 <div class="title_text">
5 <div class="log_link">
5 <div class="log_link">
6 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
6 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
7 </div>
7 </div>
8 <i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
8 <i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
9 </div>
9 </div>
10 <div class="log_body">
10 <div class="log_body">
11 {desc|strip|escape|addbreaks|nonempty}
11 {desc|strip|escape|addbreaks|nonempty}
12 <br/>
12 <br/>
13 <br/>
13 <br/>
14 </div>
14 </div>
@@ -1,53 +1,53 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
23 changeset |
23 changeset |
24 <a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry} |
24 <a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry} |
25 <a href="{url}help{sessionvars%urlparameter}">help</a>
25 <a href="{url}help{sessionvars%urlparameter}">help</a>
26 <br/>
26 <br/>
27 </div>
27 </div>
28
28
29 <div>
29 <div>
30 <a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
30 <a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
31 </div>
31 </div>
32 <div class="title_text">
32 <div class="title_text">
33 <table cellspacing="0">
33 <table cellspacing="0">
34 <tr><td>author</td><td>{author|obfuscate}</td></tr>
34 <tr><td>author</td><td>{author|obfuscate}</td></tr>
35 <tr><td></td><td class="date age">{date|date}</td></tr>
35 <tr><td></td><td class="date age">{date|rfc822date}</td></tr>
36 {branch%changesetbranch}
36 {branch%changesetbranch}
37 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
37 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
38 {parent%changesetparent}
38 {parent%changesetparent}
39 {child%changesetchild}
39 {child%changesetchild}
40 </table></div>
40 </table></div>
41
41
42 <div class="page_body">
42 <div class="page_body">
43 {desc|strip|escape|addbreaks|nonempty}
43 {desc|strip|escape|addbreaks|nonempty}
44 </div>
44 </div>
45 <div class="list_head"></div>
45 <div class="list_head"></div>
46 <div class="title_text">
46 <div class="title_text">
47 <table cellspacing="0">
47 <table cellspacing="0">
48 {files}
48 {files}
49 </table></div>
49 </table></div>
50
50
51 <div class="page_body">{diff}</div>
51 <div class="page_body">{diff}</div>
52
52
53 {footer}
53 {footer}
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
24 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
24 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
27 annotate |
27 annotate |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a> |
29 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a> |
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
31 <br/>
31 <br/>
32 </div>
32 </div>
33
33
34 <div class="title">{file|escape}</div>
34 <div class="title">{file|escape}</div>
35
35
36 <div class="title_text">
36 <div class="title_text">
37 <table cellspacing="0">
37 <table cellspacing="0">
38 <tr>
38 <tr>
39 <td>author</td>
39 <td>author</td>
40 <td>{author|obfuscate}</td></tr>
40 <td>{author|obfuscate}</td></tr>
41 <tr>
41 <tr>
42 <td></td>
42 <td></td>
43 <td class="date age">{date|date}</td></tr>
43 <td class="date age">{date|rfc822date}</td></tr>
44 {branch%filerevbranch}
44 {branch%filerevbranch}
45 <tr>
45 <tr>
46 <td>changeset {rev}</td>
46 <td>changeset {rev}</td>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
48 {parent%fileannotateparent}
48 {parent%fileannotateparent}
49 {child%fileannotatechild}
49 {child%fileannotatechild}
50 <tr>
50 <tr>
51 <td>permissions</td>
51 <td>permissions</td>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
53 </table>
53 </table>
54 </div>
54 </div>
55
55
56 <div class="page_path">
56 <div class="page_path">
57 {desc|strip|escape|addbreaks|nonempty}
57 {desc|strip|escape|addbreaks|nonempty}
58 </div>
58 </div>
59 <div class="page_body">
59 <div class="page_body">
60 <table>
60 <table>
61 {annotate%annotateline}
61 {annotate%annotateline}
62 </table>
62 </table>
63 </div>
63 </div>
64
64
65 {footer}
65 {footer}
@@ -1,64 +1,64 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
24 file |
24 file |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a> |
29 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a> |
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
31 <br/>
31 <br/>
32 </div>
32 </div>
33
33
34 <div class="title">{file|escape}</div>
34 <div class="title">{file|escape}</div>
35
35
36 <div class="title_text">
36 <div class="title_text">
37 <table cellspacing="0">
37 <table cellspacing="0">
38 <tr>
38 <tr>
39 <td>author</td>
39 <td>author</td>
40 <td>{author|obfuscate}</td></tr>
40 <td>{author|obfuscate}</td></tr>
41 <tr>
41 <tr>
42 <td></td>
42 <td></td>
43 <td class="date age">{date|date}</td></tr>
43 <td class="date age">{date|rfc822date}</td></tr>
44 {branch%filerevbranch}
44 {branch%filerevbranch}
45 <tr>
45 <tr>
46 <td>changeset {rev}</td>
46 <td>changeset {rev}</td>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
48 {parent%filerevparent}
48 {parent%filerevparent}
49 {child%filerevchild}
49 {child%filerevchild}
50 <tr>
50 <tr>
51 <td>permissions</td>
51 <td>permissions</td>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
53 </table>
53 </table>
54 </div>
54 </div>
55
55
56 <div class="page_path">
56 <div class="page_path">
57 {desc|strip|escape|addbreaks|nonempty}
57 {desc|strip|escape|addbreaks|nonempty}
58 </div>
58 </div>
59
59
60 <div class="page_body">
60 <div class="page_body">
61 {text%fileline}
61 {text%fileline}
62 </div>
62 </div>
63
63
64 {footer}
64 {footer}
@@ -1,272 +1,272 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15
15
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 filenodelink = '
21 filenodelink = '
22 <tr class="parity{parity}">
22 <tr class="parity{parity}">
23 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
23 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
24 <td></td>
24 <td></td>
25 <td class="link">
25 <td class="link">
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
30 </td>
30 </td>
31 </tr>'
31 </tr>'
32 filenolink = '
32 filenolink = '
33 <tr class="parity{parity}">
33 <tr class="parity{parity}">
34 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
34 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
35 <td></td>
35 <td></td>
36 <td class="link">
36 <td class="link">
37 file |
37 file |
38 annotate |
38 annotate |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
41 </td>
41 </td>
42 </tr>'
42 </tr>'
43
43
44 nav = '{before%naventry} {after%naventry}'
44 nav = '{before%naventry} {after%naventry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
48
48
49 fileellipses = '...'
49 fileellipses = '...'
50 changelogentry = changelogentry.tmpl
50 changelogentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
52 changeset = changeset.tmpl
52 changeset = changeset.tmpl
53 manifest = manifest.tmpl
53 manifest = manifest.tmpl
54 direntry = '
54 direntry = '
55 <tr class="parity{parity}">
55 <tr class="parity{parity}">
56 <td style="font-family:monospace">drwxr-xr-x</td>
56 <td style="font-family:monospace">drwxr-xr-x</td>
57 <td style="font-family:monospace"></td>
57 <td style="font-family:monospace"></td>
58 <td style="font-family:monospace"></td>
58 <td style="font-family:monospace"></td>
59 <td>
59 <td>
60 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
60 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
61 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
61 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
62 </td>
62 </td>
63 <td class="link">
63 <td class="link">
64 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
64 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
65 </td>
65 </td>
66 </tr>'
66 </tr>'
67 fileentry = '
67 fileentry = '
68 <tr class="parity{parity}">
68 <tr class="parity{parity}">
69 <td style="font-family:monospace">{permissions|permissions}</td>
69 <td style="font-family:monospace">{permissions|permissions}</td>
70 <td style="font-family:monospace" align=right>{date|isodate}</td>
70 <td style="font-family:monospace" align=right>{date|isodate}</td>
71 <td style="font-family:monospace" align=right>{size}</td>
71 <td style="font-family:monospace" align=right>{size}</td>
72 <td class="list">
72 <td class="list">
73 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
73 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
74 </td>
74 </td>
75 <td class="link">
75 <td class="link">
76 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
76 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
77 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
77 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
78 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
78 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
79 </td>
79 </td>
80 </tr>'
80 </tr>'
81 filerevision = filerevision.tmpl
81 filerevision = filerevision.tmpl
82 fileannotate = fileannotate.tmpl
82 fileannotate = fileannotate.tmpl
83 filediff = filediff.tmpl
83 filediff = filediff.tmpl
84 filelog = filelog.tmpl
84 filelog = filelog.tmpl
85 fileline = '
85 fileline = '
86 <div style="font-family:monospace" class="parity{parity}">
86 <div style="font-family:monospace" class="parity{parity}">
87 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
87 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
88 </div>'
88 </div>'
89 annotateline = '
89 annotateline = '
90 <tr style="font-family:monospace" class="parity{parity}">
90 <tr style="font-family:monospace" class="parity{parity}">
91 <td class="linenr" style="text-align: right;">
91 <td class="linenr" style="text-align: right;">
92 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
92 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
93 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
93 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
94 </td>
94 </td>
95 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
95 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
96 <td><pre>{line|escape}</pre></td>
96 <td><pre>{line|escape}</pre></td>
97 </tr>'
97 </tr>'
98 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
98 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
99 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
99 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
100 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
100 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
101 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
101 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
102 changelogparent = '
102 changelogparent = '
103 <tr>
103 <tr>
104 <th class="parent">parent {rev}:</th>
104 <th class="parent">parent {rev}:</th>
105 <td class="parent">
105 <td class="parent">
106 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
106 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
107 </td>
107 </td>
108 </tr>'
108 </tr>'
109 changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
109 changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
110 changesetparent = '
110 changesetparent = '
111 <tr>
111 <tr>
112 <td>parent {rev}</td>
112 <td>parent {rev}</td>
113 <td style="font-family:monospace">
113 <td style="font-family:monospace">
114 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
114 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
115 </td>
115 </td>
116 </tr>'
116 </tr>'
117 filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
117 filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
118 filerevparent = '
118 filerevparent = '
119 <tr>
119 <tr>
120 <td>parent {rev}</td>
120 <td>parent {rev}</td>
121 <td style="font-family:monospace">
121 <td style="font-family:monospace">
122 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
122 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
123 {rename%filerename}{node|short}
123 {rename%filerename}{node|short}
124 </a>
124 </a>
125 </td>
125 </td>
126 </tr>'
126 </tr>'
127 filerename = '{file|escape}@'
127 filerename = '{file|escape}@'
128 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
128 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
129 fileannotateparent = '
129 fileannotateparent = '
130 <tr>
130 <tr>
131 <td>parent {rev}</td>
131 <td>parent {rev}</td>
132 <td style="font-family:monospace">
132 <td style="font-family:monospace">
133 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
133 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
134 {rename%filerename}{node|short}
134 {rename%filerename}{node|short}
135 </a>
135 </a>
136 </td>
136 </td>
137 </tr>'
137 </tr>'
138 changelogchild = '
138 changelogchild = '
139 <tr>
139 <tr>
140 <th class="child">child {rev}:</th>
140 <th class="child">child {rev}:</th>
141 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
141 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
142 </tr>'
142 </tr>'
143 changesetchild = '
143 changesetchild = '
144 <tr>
144 <tr>
145 <td>child {rev}</td>
145 <td>child {rev}</td>
146 <td style="font-family:monospace">
146 <td style="font-family:monospace">
147 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
147 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
148 </td>
148 </td>
149 </tr>'
149 </tr>'
150 filerevchild = '
150 filerevchild = '
151 <tr>
151 <tr>
152 <td>child {rev}</td>
152 <td>child {rev}</td>
153 <td style="font-family:monospace">
153 <td style="font-family:monospace">
154 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
154 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
155 </tr>'
155 </tr>'
156 fileannotatechild = '
156 fileannotatechild = '
157 <tr>
157 <tr>
158 <td>child {rev}</td>
158 <td>child {rev}</td>
159 <td style="font-family:monospace">
159 <td style="font-family:monospace">
160 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
160 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
161 </tr>'
161 </tr>'
162 tags = tags.tmpl
162 tags = tags.tmpl
163 tagentry = '
163 tagentry = '
164 <tr class="parity{parity}">
164 <tr class="parity{parity}">
165 <td class="age"><i class="age">{date|date}</i></td>
165 <td class="age"><i class="age">{date|rfc822date}</i></td>
166 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
166 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
167 <td class="link">
167 <td class="link">
168 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
168 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
169 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
169 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
170 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
170 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
171 </td>
171 </td>
172 </tr>'
172 </tr>'
173 bookmarks = bookmarks.tmpl
173 bookmarks = bookmarks.tmpl
174 bookmarkentry = '
174 bookmarkentry = '
175 <tr class="parity{parity}">
175 <tr class="parity{parity}">
176 <td class="age"><i class="age">{date|date}</i></td>
176 <td class="age"><i class="age">{date|rfc822date}</i></td>
177 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
177 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
178 <td class="link">
178 <td class="link">
179 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
179 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
180 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
180 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
181 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
181 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
182 </td>
182 </td>
183 </tr>'
183 </tr>'
184 branches = branches.tmpl
184 branches = branches.tmpl
185 branchentry = '
185 branchentry = '
186 <tr class="parity{parity}">
186 <tr class="parity{parity}">
187 <td class="age"><i class="age">{date|date}</i></td>
187 <td class="age"><i class="age">{date|rfc822date}</i></td>
188 <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
188 <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
189 <td class="{status}">{branch|escape}</td>
189 <td class="{status}">{branch|escape}</td>
190 <td class="link">
190 <td class="link">
191 <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
191 <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
192 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
192 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
193 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
193 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
194 </td>
194 </td>
195 </tr>'
195 </tr>'
196 diffblock = '<pre>{lines}</pre>'
196 diffblock = '<pre>{lines}</pre>'
197 filediffparent = '
197 filediffparent = '
198 <tr>
198 <tr>
199 <td>parent {rev}</td>
199 <td>parent {rev}</td>
200 <td style="font-family:monospace">
200 <td style="font-family:monospace">
201 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
201 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
202 {node|short}
202 {node|short}
203 </a>
203 </a>
204 </td>
204 </td>
205 </tr>'
205 </tr>'
206 filelogparent = '
206 filelogparent = '
207 <tr>
207 <tr>
208 <td align="right">parent {rev}:&nbsp;</td>
208 <td align="right">parent {rev}:&nbsp;</td>
209 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
209 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
210 </tr>'
210 </tr>'
211 filediffchild = '
211 filediffchild = '
212 <tr>
212 <tr>
213 <td>child {rev}</td>
213 <td>child {rev}</td>
214 <td style="font-family:monospace">
214 <td style="font-family:monospace">
215 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
215 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
216 </td>
216 </td>
217 </tr>'
217 </tr>'
218 filelogchild = '
218 filelogchild = '
219 <tr>
219 <tr>
220 <td align="right">child {rev}:&nbsp;</td>
220 <td align="right">child {rev}:&nbsp;</td>
221 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
221 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
222 </tr>'
222 </tr>'
223 shortlog = shortlog.tmpl
223 shortlog = shortlog.tmpl
224 graph = graph.tmpl
224 graph = graph.tmpl
225 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
225 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
226 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
226 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
227 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
227 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
228 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
228 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
229 shortlogentry = '
229 shortlogentry = '
230 <tr class="parity{parity}">
230 <tr class="parity{parity}">
231 <td class="age"><i class="age">{date|date}</i></td>
231 <td class="age"><i class="age">{date|rfc822date}</i></td>
232 <td><i>{author|person}</i></td>
232 <td><i>{author|person}</i></td>
233 <td>
233 <td>
234 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
234 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
235 <b>{desc|strip|firstline|escape|nonempty}</b>
235 <b>{desc|strip|firstline|escape|nonempty}</b>
236 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
236 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
237 </a>
237 </a>
238 </td>
238 </td>
239 <td class="link" nowrap>
239 <td class="link" nowrap>
240 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
240 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
241 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
241 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
242 </td>
242 </td>
243 </tr>'
243 </tr>'
244 filelogentry = '
244 filelogentry = '
245 <tr class="parity{parity}">
245 <tr class="parity{parity}">
246 <td class="age"><i class="age">{date|date}</i></td>
246 <td class="age"><i class="age">{date|rfc822date}</i></td>
247 <td>
247 <td>
248 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
248 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
249 <b>{desc|strip|firstline|escape|nonempty}</b>
249 <b>{desc|strip|firstline|escape|nonempty}</b>
250 </a>
250 </a>
251 </td>
251 </td>
252 <td class="link">
252 <td class="link">
253 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
253 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
254 </tr>'
254 </tr>'
255 archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
255 archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
256 indexentry = '
256 indexentry = '
257 <tr class="parity{parity}">
257 <tr class="parity{parity}">
258 <td>
258 <td>
259 <a class="list" href="{url}{sessionvars%urlparameter}">
259 <a class="list" href="{url}{sessionvars%urlparameter}">
260 <b>{name|escape}</b>
260 <b>{name|escape}</b>
261 </a>
261 </a>
262 </td>
262 </td>
263 <td>{description}</td>
263 <td>{description}</td>
264 <td>{contact|obfuscate}</td>
264 <td>{contact|obfuscate}</td>
265 <td class="age">{lastchange|date}</td>
265 <td class="age">{lastchange|rfc822date}</td>
266 <td class="indexlinks">{archives%indexarchiveentry}</td>
266 <td class="indexlinks">{archives%indexarchiveentry}</td>
267 <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
267 <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
268 </tr>\n'
268 </tr>\n'
269 indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
269 indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
270 index = index.tmpl
270 index = index.tmpl
271 urlparameter = '{separator}{name}={value|urlescape}'
271 urlparameter = '{separator}{name}={value|urlescape}'
272 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
272 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,6 +1,6 b''
1 <h3 class="changelog"><a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
1 <h3 class="changelog"><a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
2 <ul class="changelog-entry">
2 <ul class="changelog-entry">
3 <li class="age">{date|date}</li>
3 <li class="age">{date|rfc822date}</li>
4 <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
4 <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
5 <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
5 <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
6 </ul>
6 </ul>
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
30 </ul>
31 </div>
31 </div>
32
32
33 <ul class="submenu">
33 <ul class="submenu">
34 <li class="current">changeset</li>
34 <li class="current">changeset</li>
35 <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
35 <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
36 </ul>
36 </ul>
37
37
38 <h2 class="no-link no-border">changeset</h2>
38 <h2 class="no-link no-border">changeset</h2>
39
39
40 <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
40 <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
41 <p class="changeset-age age">{date|date}</p>
41 <p class="changeset-age age">{date|rfc822date}</p>
42
42
43 <dl class="overview">
43 <dl class="overview">
44 <dt>author</dt>
44 <dt>author</dt>
45 <dd>{author|obfuscate}</dd>
45 <dd>{author|obfuscate}</dd>
46 <dt>date</dt>
46 <dt>date</dt>
47 <dd>{date|date}</dd>
47 <dd>{date|rfc822date}</dd>
48 {branch%changesetbranch}
48 {branch%changesetbranch}
49 <dt>changeset {rev}</dt>
49 <dt>changeset {rev}</dt>
50 <dd>{node|short}</dd>
50 <dd>{node|short}</dd>
51 {parent%changesetparent}
51 {parent%changesetparent}
52 {child%changesetchild}
52 {child%changesetchild}
53 </dl>
53 </dl>
54
54
55 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
55 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
56
56
57 <table>
57 <table>
58 {files}
58 {files}
59 </table>
59 </table>
60
60
61 <div class="diff">
61 <div class="diff">
62 {diff}
62 {diff}
63 </div>
63 </div>
64
64
65 {footer}
65 {footer}
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
30 </ul>
31 </div>
31 </div>
32
32
33 <ul class="submenu">
33 <ul class="submenu">
34 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
34 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
36 <li class="current">annotate</li>
36 <li class="current">annotate</li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
38 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
38 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
39 </ul>
39 </ul>
40
40
41 <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
41 <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
42 <h3 class="changeset">{file|escape}</h3>
42 <h3 class="changeset">{file|escape}</h3>
43 <p class="changeset-age age">{date|date}</p>
43 <p class="changeset-age age">{date|rfc822date}</p>
44
44
45 <dl class="overview">
45 <dl class="overview">
46 <dt>author</dt>
46 <dt>author</dt>
47 <dd>{author|obfuscate}</dd>
47 <dd>{author|obfuscate}</dd>
48 <dt>date</dt>
48 <dt>date</dt>
49 <dd>{date|date}</dd>
49 <dd>{date|rfc822date}</dd>
50 {branch%filerevbranch}
50 {branch%filerevbranch}
51 <dt>changeset {rev}</dt>
51 <dt>changeset {rev}</dt>
52 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
52 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
53 {parent%fileannotateparent}
53 {parent%fileannotateparent}
54 {child%fileannotatechild}
54 {child%fileannotatechild}
55 <dt>permissions</dt>
55 <dt>permissions</dt>
56 <dd>{permissions|permissions}</dd>
56 <dd>{permissions|permissions}</dd>
57 </dl>
57 </dl>
58
58
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
60
60
61 <table class="annotated">
61 <table class="annotated">
62 {annotate%annotateline}
62 {annotate%annotateline}
63 </table>
63 </table>
64
64
65 {footer}
65 {footer}
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
30 </ul>
31 </div>
31 </div>
32
32
33 <ul class="submenu">
33 <ul class="submenu">
34 <li class="current">file</li>
34 <li class="current">file</li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
36 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
36 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
38 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
38 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
39 </ul>
39 </ul>
40
40
41 <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
41 <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
42 <h3 class="changeset">{file|escape}</h3>
42 <h3 class="changeset">{file|escape}</h3>
43 <p class="changeset-age age">{date|date}</p>
43 <p class="changeset-age age">{date|rfc822date}</p>
44
44
45 <dl class="overview">
45 <dl class="overview">
46 <dt>author</dt>
46 <dt>author</dt>
47 <dd>{author|obfuscate}</dd>
47 <dd>{author|obfuscate}</dd>
48 <dt>date</dt>
48 <dt>date</dt>
49 <dd>{date|date}</dd>
49 <dd>{date|rfc822date}</dd>
50 {branch%filerevbranch}
50 {branch%filerevbranch}
51 <dt>changeset {rev}</dt>
51 <dt>changeset {rev}</dt>
52 <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
52 <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
53 {parent%filerevparent}
53 {parent%filerevparent}
54 {child%filerevchild}
54 {child%filerevchild}
55 <dt>permissions</dt>
55 <dt>permissions</dt>
56 <dd>{permissions|permissions}</dd>
56 <dd>{permissions|permissions}</dd>
57 </dl>
57 </dl>
58
58
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
60
60
61 <div class="source">
61 <div class="source">
62 {text%fileline}
62 {text%fileline}
63 </div>
63 </div>
64
64
65 {footer}
65 {footer}
@@ -1,240 +1,240 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15
15
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 filenodelink = '
21 filenodelink = '
22 <tr class="parity{parity}">
22 <tr class="parity{parity}">
23 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
23 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
24 <td></td>
24 <td></td>
25 <td>
25 <td>
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
30 </td>
30 </td>
31 </tr>'
31 </tr>'
32 filenolink = '
32 filenolink = '
33 <tr class="parity{parity}">
33 <tr class="parity{parity}">
34 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
34 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
35 <td></td>
35 <td></td>
36 <td>
36 <td>
37 file |
37 file |
38 annotate |
38 annotate |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
41 </td>
41 </td>
42 </tr>'
42 </tr>'
43
43
44 nav = '{before%naventry} {after%naventry}'
44 nav = '{before%naventry} {after%naventry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
48
48
49 fileellipses = '...'
49 fileellipses = '...'
50 changelogentry = changelogentry.tmpl
50 changelogentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
52 changeset = changeset.tmpl
52 changeset = changeset.tmpl
53 manifest = manifest.tmpl
53 manifest = manifest.tmpl
54 direntry = '
54 direntry = '
55 <tr class="parity{parity}">
55 <tr class="parity{parity}">
56 <td>drwxr-xr-x</td>
56 <td>drwxr-xr-x</td>
57 <td></td>
57 <td></td>
58 <td></td>
58 <td></td>
59 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
59 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
60 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
60 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
61 </tr>'
61 </tr>'
62 fileentry = '
62 fileentry = '
63 <tr class="parity{parity}">
63 <tr class="parity{parity}">
64 <td>{permissions|permissions}</td>
64 <td>{permissions|permissions}</td>
65 <td>{date|isodate}</td>
65 <td>{date|isodate}</td>
66 <td>{size}</td>
66 <td>{size}</td>
67 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
67 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
68 <td>
68 <td>
69 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
69 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
70 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
70 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
71 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
71 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
72 </td>
72 </td>
73 </tr>'
73 </tr>'
74 filerevision = filerevision.tmpl
74 filerevision = filerevision.tmpl
75 fileannotate = fileannotate.tmpl
75 fileannotate = fileannotate.tmpl
76 filediff = filediff.tmpl
76 filediff = filediff.tmpl
77 filelog = filelog.tmpl
77 filelog = filelog.tmpl
78 fileline = '
78 fileline = '
79 <div style="font-family:monospace" class="parity{parity}">
79 <div style="font-family:monospace" class="parity{parity}">
80 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
80 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
81 </div>'
81 </div>'
82 annotateline = '
82 annotateline = '
83 <tr class="parity{parity}">
83 <tr class="parity{parity}">
84 <td class="linenr">
84 <td class="linenr">
85 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
85 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
86 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
86 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
87 </td>
87 </td>
88 <td class="lineno">
88 <td class="lineno">
89 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
89 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
90 </td>
90 </td>
91 <td class="source">{line|escape}</td>
91 <td class="source">{line|escape}</td>
92 </tr>'
92 </tr>'
93 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
93 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
94 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
94 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
95 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
95 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
96 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
96 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
97 changelogparent = '
97 changelogparent = '
98 <tr>
98 <tr>
99 <th class="parent">parent {rev}:</th>
99 <th class="parent">parent {rev}:</th>
100 <td class="parent">
100 <td class="parent">
101 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
101 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
102 </td>
102 </td>
103 </tr>'
103 </tr>'
104 changesetbranch = '<dt>branch</dt><dd>{name}</dd>'
104 changesetbranch = '<dt>branch</dt><dd>{name}</dd>'
105 changesetparent = '
105 changesetparent = '
106 <dt>parent {rev}</dt>
106 <dt>parent {rev}</dt>
107 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
107 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
108 filerevbranch = '<dt>branch</dt><dd>{name}</dd>'
108 filerevbranch = '<dt>branch</dt><dd>{name}</dd>'
109 filerevparent = '
109 filerevparent = '
110 <dt>parent {rev}</dt>
110 <dt>parent {rev}</dt>
111 <dd>
111 <dd>
112 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
112 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
113 {rename%filerename}{node|short}
113 {rename%filerename}{node|short}
114 </a>
114 </a>
115 </dd>'
115 </dd>'
116 filerename = '{file|escape}@'
116 filerename = '{file|escape}@'
117 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
117 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
118 fileannotateparent = '
118 fileannotateparent = '
119 <dt>parent {rev}</dt>
119 <dt>parent {rev}</dt>
120 <dd>
120 <dd>
121 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
121 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
122 {rename%filerename}{node|short}
122 {rename%filerename}{node|short}
123 </a>
123 </a>
124 </dd>'
124 </dd>'
125 changelogchild = '
125 changelogchild = '
126 <dt>child {rev}:</dt>
126 <dt>child {rev}:</dt>
127 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
127 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
128 changesetchild = '
128 changesetchild = '
129 <dt>child {rev}</dt>
129 <dt>child {rev}</dt>
130 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
130 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
131 filerevchild = '
131 filerevchild = '
132 <dt>child {rev}</dt>
132 <dt>child {rev}</dt>
133 <dd>
133 <dd>
134 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
134 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
135 </dd>'
135 </dd>'
136 fileannotatechild = '
136 fileannotatechild = '
137 <dt>child {rev}</dt>
137 <dt>child {rev}</dt>
138 <dd>
138 <dd>
139 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
139 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
140 </dd>'
140 </dd>'
141 tags = tags.tmpl
141 tags = tags.tmpl
142 tagentry = '
142 tagentry = '
143 <tr class="parity{parity}">
143 <tr class="parity{parity}">
144 <td class="nowrap age">{date|date}</td>
144 <td class="nowrap age">{date|rfc822date}</td>
145 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
145 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
146 <td class="nowrap">
146 <td class="nowrap">
147 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
147 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
148 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
148 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
149 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
149 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
150 </td>
150 </td>
151 </tr>'
151 </tr>'
152 bookmarks = bookmarks.tmpl
152 bookmarks = bookmarks.tmpl
153 bookmarkentry = '
153 bookmarkentry = '
154 <tr class="parity{parity}">
154 <tr class="parity{parity}">
155 <td class="nowrap date">{date|date}</td>
155 <td class="nowrap date">{date|rfc822date}</td>
156 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
156 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
157 <td class="nowrap">
157 <td class="nowrap">
158 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
158 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
159 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
159 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
160 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
160 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
161 </td>
161 </td>
162 </tr>'
162 </tr>'
163 branches = branches.tmpl
163 branches = branches.tmpl
164 branchentry = '
164 branchentry = '
165 <tr class="parity{parity}">
165 <tr class="parity{parity}">
166 <td class="nowrap age">{date|date}</td>
166 <td class="nowrap age">{date|rfc822date}</td>
167 <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
167 <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
168 <td class="{status}">{branch|escape}</td>
168 <td class="{status}">{branch|escape}</td>
169 <td class="nowrap">
169 <td class="nowrap">
170 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
170 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
171 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
171 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
172 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
172 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
173 </td>
173 </td>
174 </tr>'
174 </tr>'
175 diffblock = '<pre>{lines}</pre>'
175 diffblock = '<pre>{lines}</pre>'
176 filediffparent = '
176 filediffparent = '
177 <dt>parent {rev}</dt>
177 <dt>parent {rev}</dt>
178 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
178 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
179 filelogparent = '
179 filelogparent = '
180 <tr>
180 <tr>
181 <td align="right">parent {rev}:&nbsp;</td>
181 <td align="right">parent {rev}:&nbsp;</td>
182 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
182 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
183 </tr>'
183 </tr>'
184 filediffchild = '
184 filediffchild = '
185 <dt>child {rev}</dt>
185 <dt>child {rev}</dt>
186 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
186 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
187 filelogchild = '
187 filelogchild = '
188 <tr>
188 <tr>
189 <td align="right">child {rev}:&nbsp;</td>
189 <td align="right">child {rev}:&nbsp;</td>
190 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
190 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
191 </tr>'
191 </tr>'
192 shortlog = shortlog.tmpl
192 shortlog = shortlog.tmpl
193 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
193 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
194 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
194 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
195 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
195 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
196 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
196 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
197 shortlogentry = '
197 shortlogentry = '
198 <tr class="parity{parity}">
198 <tr class="parity{parity}">
199 <td class="nowrap age">{date|date}</td>
199 <td class="nowrap age">{date|rfc822date}</td>
200 <td>{author|person}</td>
200 <td>{author|person}</td>
201 <td>
201 <td>
202 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
202 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
203 {desc|strip|firstline|escape|nonempty}
203 {desc|strip|firstline|escape|nonempty}
204 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
204 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
205 </a>
205 </a>
206 </td>
206 </td>
207 <td class="nowrap">
207 <td class="nowrap">
208 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
208 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
209 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
209 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
210 </td>
210 </td>
211 </tr>'
211 </tr>'
212 filelogentry = '
212 filelogentry = '
213 <tr class="parity{parity}">
213 <tr class="parity{parity}">
214 <td class="nowrap age">{date|date}</td>
214 <td class="nowrap age">{date|rfc822date}</td>
215 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
215 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
216 <td class="nowrap">
216 <td class="nowrap">
217 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
217 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
218 {rename%filelogrename}
218 {rename%filelogrename}
219 </td>
219 </td>
220 </tr>'
220 </tr>'
221 archiveentry = '<li><a href="{url}archive/{node|short}{extension}">{type|escape}</a></li>'
221 archiveentry = '<li><a href="{url}archive/{node|short}{extension}">{type|escape}</a></li>'
222 indexentry = '
222 indexentry = '
223 <tr class="parity{parity}">
223 <tr class="parity{parity}">
224 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
224 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
225 <td>{description}</td>
225 <td>{description}</td>
226 <td>{contact|obfuscate}</td>
226 <td>{contact|obfuscate}</td>
227 <td class="age">{lastchange|date}</td>
227 <td class="age">{lastchange|rfc822date}</td>
228 <td class="indexlinks">{archives%indexarchiveentry}</td>
228 <td class="indexlinks">{archives%indexarchiveentry}</td>
229 <td>
229 <td>
230 <div class="rss_logo">
230 <div class="rss_logo">
231 <a href="{url}rss-log">RSS</a>
231 <a href="{url}rss-log">RSS</a>
232 <a href="{url}atom-log">Atom</a>
232 <a href="{url}atom-log">Atom</a>
233 </div>
233 </div>
234 </td>
234 </td>
235 </tr>\n'
235 </tr>\n'
236 indexarchiveentry = '<a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
236 indexarchiveentry = '<a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
237 index = index.tmpl
237 index = index.tmpl
238 urlparameter = '{separator}{name}={value|urlescape}'
238 urlparameter = '{separator}{name}={value|urlescape}'
239 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
239 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
240 graph = graph.tmpl
240 graph = graph.tmpl
@@ -1,87 +1,87 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short}</title>
2 <title>{repo|escape}: {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5 <div class="container">
5 <div class="container">
6 <div class="menu">
6 <div class="menu">
7 <div class="logo">
7 <div class="logo">
8 <a href="{logourl}">
8 <a href="{logourl}">
9 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
9 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
10 </div>
10 </div>
11 <ul>
11 <ul>
12 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
12 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
13 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
14 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
15 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li class="active">changeset</li>
19 <li class="active">changeset</li>
20 <li><a href="{url}raw-rev/{node|short}{sessionvars%urlparameter}">raw</a></li>
20 <li><a href="{url}raw-rev/{node|short}{sessionvars%urlparameter}">raw</a></li>
21 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">browse</a></li>
21 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">browse</a></li>
22 </ul>
22 </ul>
23 <ul>
23 <ul>
24 {archives%archiveentry}
24 {archives%archiveentry}
25 </ul>
25 </ul>
26 <ul>
26 <ul>
27 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
27 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
28 </ul>
29 </div>
29 </div>
30
30
31 <div class="main">
31 <div class="main">
32
32
33 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
33 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
34 <h3>changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag} {changesetbookmark}</h3>
34 <h3>changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag} {changesetbookmark}</h3>
35
35
36 <form class="search" action="{url}log">
36 <form class="search" action="{url}log">
37 {sessionvars%hiddenformentry}
37 {sessionvars%hiddenformentry}
38 <p><input name="rev" id="search1" type="text" size="30" /></p>
38 <p><input name="rev" id="search1" type="text" size="30" /></p>
39 <div id="hint">find changesets by author, revision,
39 <div id="hint">find changesets by author, revision,
40 files, or words in the commit message</div>
40 files, or words in the commit message</div>
41 </form>
41 </form>
42
42
43 <div class="description">{desc|strip|escape|nonempty}</div>
43 <div class="description">{desc|strip|escape|nonempty}</div>
44
44
45 <table id="changesetEntry">
45 <table id="changesetEntry">
46 <tr>
46 <tr>
47 <th class="author">author</th>
47 <th class="author">author</th>
48 <td class="author">{author|obfuscate}</td>
48 <td class="author">{author|obfuscate}</td>
49 </tr>
49 </tr>
50 <tr>
50 <tr>
51 <th class="date">date</th>
51 <th class="date">date</th>
52 <td class="date age">{date|date}</td></tr>
52 <td class="date age">{date|rfc822date}</td></tr>
53 <tr>
53 <tr>
54 <th class="author">parents</th>
54 <th class="author">parents</th>
55 <td class="author">{parent%changesetparent}</td>
55 <td class="author">{parent%changesetparent}</td>
56 </tr>
56 </tr>
57 <tr>
57 <tr>
58 <th class="author">children</th>
58 <th class="author">children</th>
59 <td class="author">{child%changesetchild}</td>
59 <td class="author">{child%changesetchild}</td>
60 </tr>
60 </tr>
61 <tr>
61 <tr>
62 <th class="files">files</th>
62 <th class="files">files</th>
63 <td class="files">{files}</td>
63 <td class="files">{files}</td>
64 </tr>
64 </tr>
65 <tr>
65 <tr>
66 <th class="diffstat">diffstat</th>
66 <th class="diffstat">diffstat</th>
67 <td class="diffstat">
67 <td class="diffstat">
68 {diffsummary}
68 {diffsummary}
69 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
69 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
70 <div id="diffstatdetails" style="display:none;">
70 <div id="diffstatdetails" style="display:none;">
71 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
71 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
72 <p>
72 <p>
73 <table>{diffstat}</table>
73 <table>{diffstat}</table>
74 </div>
74 </div>
75 </td>
75 </td>
76 </tr>
76 </tr>
77 </table>
77 </table>
78
78
79 <div class="overflow">
79 <div class="overflow">
80 <div class="sourcefirst"> line diff</div>
80 <div class="sourcefirst"> line diff</div>
81
81
82 {diff}
82 {diff}
83 </div>
83 </div>
84
84
85 </div>
85 </div>
86 </div>
86 </div>
87 {footer}
87 {footer}
@@ -1,82 +1,82 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} annotate</title>
2 <title>{repo|escape}: {file|escape} annotate</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="{logourl}">
9 <a href="{logourl}">
10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
18 </ul>
18 </ul>
19
19
20 <ul>
20 <ul>
21 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
21 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
22 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
22 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
23 </ul>
23 </ul>
24 <ul>
24 <ul>
25 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
25 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
26 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
26 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
27 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
27 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
28 <li class="active">annotate</li>
28 <li class="active">annotate</li>
29 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
29 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
30 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
30 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
31 </ul>
31 </ul>
32 <ul>
32 <ul>
33 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
33 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
34 </ul>
34 </ul>
35 </div>
35 </div>
36
36
37 <div class="main">
37 <div class="main">
38 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
38 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
39 <h3>annotate {file|escape} @ {rev}:{node|short}</h3>
39 <h3>annotate {file|escape} @ {rev}:{node|short}</h3>
40
40
41 <form class="search" action="{url}log">
41 <form class="search" action="{url}log">
42 {sessionvars%hiddenformentry}
42 {sessionvars%hiddenformentry}
43 <p><input name="rev" id="search1" type="text" size="30" /></p>
43 <p><input name="rev" id="search1" type="text" size="30" /></p>
44 <div id="hint">find changesets by author, revision,
44 <div id="hint">find changesets by author, revision,
45 files, or words in the commit message</div>
45 files, or words in the commit message</div>
46 </form>
46 </form>
47
47
48 <div class="description">{desc|strip|escape|nonempty}</div>
48 <div class="description">{desc|strip|escape|nonempty}</div>
49
49
50 <table id="changesetEntry">
50 <table id="changesetEntry">
51 <tr>
51 <tr>
52 <th class="author">author</th>
52 <th class="author">author</th>
53 <td class="author">{author|obfuscate}</td>
53 <td class="author">{author|obfuscate}</td>
54 </tr>
54 </tr>
55 <tr>
55 <tr>
56 <th class="date">date</th>
56 <th class="date">date</th>
57 <td class="date age">{date|date}</td>
57 <td class="date age">{date|rfc822date}</td>
58 </tr>
58 </tr>
59 <tr>
59 <tr>
60 <th class="author">parents</th>
60 <th class="author">parents</th>
61 <td class="author">{parent%filerevparent}</td>
61 <td class="author">{parent%filerevparent}</td>
62 </tr>
62 </tr>
63 <tr>
63 <tr>
64 <th class="author">children</th>
64 <th class="author">children</th>
65 <td class="author">{child%filerevchild}</td>
65 <td class="author">{child%filerevchild}</td>
66 </tr>
66 </tr>
67 {changesettag}
67 {changesettag}
68 </table>
68 </table>
69
69
70 <div class="overflow">
70 <div class="overflow">
71 <table class="bigtable">
71 <table class="bigtable">
72 <tr>
72 <tr>
73 <th class="annotate">rev</th>
73 <th class="annotate">rev</th>
74 <th class="line">&nbsp;&nbsp;line source</th>
74 <th class="line">&nbsp;&nbsp;line source</th>
75 </tr>
75 </tr>
76 {annotate%annotateline}
76 {annotate%annotateline}
77 </table>
77 </table>
78 </div>
78 </div>
79 </div>
79 </div>
80 </div>
80 </div>
81
81
82 {footer}
82 {footer}
@@ -1,77 +1,77 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} diff</title>
2 <title>{repo|escape}: {file|escape} diff</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="{logourl}">
9 <a href="{logourl}">
10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
18 </ul>
18 </ul>
19 <ul>
19 <ul>
20 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
21 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
22 </ul>
22 </ul>
23 <ul>
23 <ul>
24 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
24 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
25 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
26 <li class="active">diff</li>
26 <li class="active">diff</li>
27 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
27 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
28 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
29 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
29 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
30 </ul>
30 </ul>
31 <ul>
31 <ul>
32 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
32 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
33 </ul>
33 </ul>
34 </div>
34 </div>
35
35
36 <div class="main">
36 <div class="main">
37 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
37 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
38 <h3>diff {file|escape} @ {rev}:{node|short}</h3>
38 <h3>diff {file|escape} @ {rev}:{node|short}</h3>
39
39
40 <form class="search" action="{url}log">
40 <form class="search" action="{url}log">
41 <p>{sessionvars%hiddenformentry}</p>
41 <p>{sessionvars%hiddenformentry}</p>
42 <p><input name="rev" id="search1" type="text" size="30" /></p>
42 <p><input name="rev" id="search1" type="text" size="30" /></p>
43 <div id="hint">find changesets by author, revision,
43 <div id="hint">find changesets by author, revision,
44 files, or words in the commit message</div>
44 files, or words in the commit message</div>
45 </form>
45 </form>
46
46
47 <div class="description">{desc|strip|escape|nonempty}</div>
47 <div class="description">{desc|strip|escape|nonempty}</div>
48
48
49 <table id="changesetEntry">
49 <table id="changesetEntry">
50 <tr>
50 <tr>
51 <th>author</th>
51 <th>author</th>
52 <td>{author|obfuscate}</td>
52 <td>{author|obfuscate}</td>
53 </tr>
53 </tr>
54 <tr>
54 <tr>
55 <th>date</th>
55 <th>date</th>
56 <td class="date age">{date|date}</td>
56 <td class="date age">{date|rfc822date}</td>
57 </tr>
57 </tr>
58 <tr>
58 <tr>
59 <th>parents</th>
59 <th>parents</th>
60 <td>{parent%filerevparent}</td>
60 <td>{parent%filerevparent}</td>
61 </tr>
61 </tr>
62 <tr>
62 <tr>
63 <th>children</th>
63 <th>children</th>
64 <td>{child%filerevchild}</td>
64 <td>{child%filerevchild}</td>
65 </tr>
65 </tr>
66 {changesettag}
66 {changesettag}
67 </table>
67 </table>
68
68
69 <div class="overflow">
69 <div class="overflow">
70 <div class="sourcefirst"> line diff</div>
70 <div class="sourcefirst"> line diff</div>
71
71
72 {diff}
72 {diff}
73 </div>
73 </div>
74 </div>
74 </div>
75 </div>
75 </div>
76
76
77 {footer}
77 {footer}
@@ -1,5 +1,5 b''
1 <tr class="parity{parity}">
1 <tr class="parity{parity}">
2 <td class="age">{date|date}</td>
2 <td class="age">{date|rfc822date}</td>
3 <td class="author">{author|person}</td>
3 <td class="author">{author|person}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{rename%filelogrename}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{rename%filelogrename}</td>
5 </tr>
5 </tr>
@@ -1,76 +1,76 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short} {file|escape}</title>
2 <title>{repo|escape}: {node|short} {file|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="{logourl}">
9 <a href="{logourl}">
10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 </ul>
21 </ul>
22 <ul>
22 <ul>
23 <li class="active">file</li>
23 <li class="active">file</li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
25 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
29 </ul>
29 </ul>
30 <ul>
30 <ul>
31 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
31 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
32 </ul>
32 </ul>
33 </div>
33 </div>
34
34
35 <div class="main">
35 <div class="main">
36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
37 <h3>view {file|escape} @ {rev}:{node|short}</h3>
37 <h3>view {file|escape} @ {rev}:{node|short}</h3>
38
38
39 <form class="search" action="{url}log">
39 <form class="search" action="{url}log">
40 {sessionvars%hiddenformentry}
40 {sessionvars%hiddenformentry}
41 <p><input name="rev" id="search1" type="text" size="30" /></p>
41 <p><input name="rev" id="search1" type="text" size="30" /></p>
42 <div id="hint">find changesets by author, revision,
42 <div id="hint">find changesets by author, revision,
43 files, or words in the commit message</div>
43 files, or words in the commit message</div>
44 </form>
44 </form>
45
45
46 <div class="description">{desc|strip|escape|nonempty}</div>
46 <div class="description">{desc|strip|escape|nonempty}</div>
47
47
48 <table id="changesetEntry">
48 <table id="changesetEntry">
49 <tr>
49 <tr>
50 <th class="author">author</th>
50 <th class="author">author</th>
51 <td class="author">{author|obfuscate}</td>
51 <td class="author">{author|obfuscate}</td>
52 </tr>
52 </tr>
53 <tr>
53 <tr>
54 <th class="date">date</th>
54 <th class="date">date</th>
55 <td class="date age">{date|date}</td>
55 <td class="date age">{date|rfc822date}</td>
56 </tr>
56 </tr>
57 <tr>
57 <tr>
58 <th class="author">parents</th>
58 <th class="author">parents</th>
59 <td class="author">{parent%filerevparent}</td>
59 <td class="author">{parent%filerevparent}</td>
60 </tr>
60 </tr>
61 <tr>
61 <tr>
62 <th class="author">children</th>
62 <th class="author">children</th>
63 <td class="author">{child%filerevchild}</td>
63 <td class="author">{child%filerevchild}</td>
64 </tr>
64 </tr>
65 {changesettag}
65 {changesettag}
66 </table>
66 </table>
67
67
68 <div class="overflow">
68 <div class="overflow">
69 <div class="sourcefirst"> line source</div>
69 <div class="sourcefirst"> line source</div>
70 {text%fileline}
70 {text%fileline}
71 <div class="sourcelast"></div>
71 <div class="sourcelast"></div>
72 </div>
72 </div>
73 </div>
73 </div>
74 </div>
74 </div>
75
75
76 {footer}
76 {footer}
@@ -1,213 +1,213 b''
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 = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
16
16
17 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
20 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
21 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
22 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
22 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 filenolink = '{file|escape} '
23 filenolink = '{file|escape} '
24 fileellipses = '...'
24 fileellipses = '...'
25 diffstatlink = diffstat.tmpl
25 diffstatlink = diffstat.tmpl
26 diffstatnolink = diffstat.tmpl
26 diffstatnolink = diffstat.tmpl
27 changelogentry = shortlogentry.tmpl
27 changelogentry = shortlogentry.tmpl
28 searchentry = shortlogentry.tmpl
28 searchentry = shortlogentry.tmpl
29 changeset = changeset.tmpl
29 changeset = changeset.tmpl
30 manifest = manifest.tmpl
30 manifest = manifest.tmpl
31
31
32 nav = '{before%naventry} {after%naventry}'
32 nav = '{before%naventry} {after%naventry}'
33 navshort = '{before%navshortentry}{after%navshortentry}'
33 navshort = '{before%navshortentry}{after%navshortentry}'
34 navgraph = '{before%navgraphentry}{after%navgraphentry}'
34 navgraph = '{before%navgraphentry}{after%navgraphentry}'
35 filenav = '{before%filenaventry}{after%filenaventry}'
35 filenav = '{before%filenaventry}{after%filenaventry}'
36
36
37 direntry = '
37 direntry = '
38 <tr class="fileline parity{parity}">
38 <tr class="fileline parity{parity}">
39 <td class="name">
39 <td class="name">
40 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
40 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
41 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
41 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
42 </a>
42 </a>
43 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
43 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
44 {emptydirs|escape}
44 {emptydirs|escape}
45 </a>
45 </a>
46 </td>
46 </td>
47 <td class="size"></td>
47 <td class="size"></td>
48 <td class="permissions">drwxr-xr-x</td>
48 <td class="permissions">drwxr-xr-x</td>
49 </tr>'
49 </tr>'
50
50
51 fileentry = '
51 fileentry = '
52 <tr class="fileline parity{parity}">
52 <tr class="fileline parity{parity}">
53 <td class="filename">
53 <td class="filename">
54 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
54 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
55 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
55 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
56 </a>
56 </a>
57 </td>
57 </td>
58 <td class="size">{size}</td>
58 <td class="size">{size}</td>
59 <td class="permissions">{permissions|permissions}</td>
59 <td class="permissions">{permissions|permissions}</td>
60 </tr>'
60 </tr>'
61
61
62 filerevision = filerevision.tmpl
62 filerevision = filerevision.tmpl
63 fileannotate = fileannotate.tmpl
63 fileannotate = fileannotate.tmpl
64 filediff = filediff.tmpl
64 filediff = filediff.tmpl
65 filelog = filelog.tmpl
65 filelog = filelog.tmpl
66 fileline = '
66 fileline = '
67 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
67 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
68 filelogentry = filelogentry.tmpl
68 filelogentry = filelogentry.tmpl
69
69
70 annotateline = '
70 annotateline = '
71 <tr class="parity{parity}">
71 <tr class="parity{parity}">
72 <td class="annotate">
72 <td class="annotate">
73 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
73 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
74 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
74 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
75 </td>
75 </td>
76 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
76 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
77 </tr>'
77 </tr>'
78
78
79 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
79 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
80 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
80 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
81 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
81 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
82 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
82 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
83 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
83 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
84
84
85 changelogparent = '
85 changelogparent = '
86 <tr>
86 <tr>
87 <th class="parent">parent {rev}:</th>
87 <th class="parent">parent {rev}:</th>
88 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
88 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
89 </tr>'
89 </tr>'
90
90
91 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
91 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
92
92
93 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
93 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
94 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
94 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
95
95
96 filerename = '{file|escape}@'
96 filerename = '{file|escape}@'
97 filelogrename = '
97 filelogrename = '
98 <span class="base">
98 <span class="base">
99 base
99 base
100 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
100 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
101 {file|escape}@{node|short}
101 {file|escape}@{node|short}
102 </a>
102 </a>
103 </span>'
103 </span>'
104 fileannotateparent = '
104 fileannotateparent = '
105 <tr>
105 <tr>
106 <td class="metatag">parent:</td>
106 <td class="metatag">parent:</td>
107 <td>
107 <td>
108 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
108 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
109 {rename%filerename}{node|short}
109 {rename%filerename}{node|short}
110 </a>
110 </a>
111 </td>
111 </td>
112 </tr>'
112 </tr>'
113 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
113 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
114 changelogchild = '
114 changelogchild = '
115 <tr>
115 <tr>
116 <th class="child">child</th>
116 <th class="child">child</th>
117 <td class="child">
117 <td class="child">
118 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
118 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
119 {node|short}
119 {node|short}
120 </a>
120 </a>
121 </td>
121 </td>
122 </tr>'
122 </tr>'
123 fileannotatechild = '
123 fileannotatechild = '
124 <tr>
124 <tr>
125 <td class="metatag">child:</td>
125 <td class="metatag">child:</td>
126 <td>
126 <td>
127 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
127 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
128 {node|short}
128 {node|short}
129 </a>
129 </a>
130 </td>
130 </td>
131 </tr>'
131 </tr>'
132 tags = tags.tmpl
132 tags = tags.tmpl
133 tagentry = '
133 tagentry = '
134 <tr class="tagEntry parity{parity}">
134 <tr class="tagEntry parity{parity}">
135 <td>
135 <td>
136 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
136 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
137 {tag|escape}
137 {tag|escape}
138 </a>
138 </a>
139 </td>
139 </td>
140 <td class="node">
140 <td class="node">
141 {node|short}
141 {node|short}
142 </td>
142 </td>
143 </tr>'
143 </tr>'
144 bookmarks = bookmarks.tmpl
144 bookmarks = bookmarks.tmpl
145 bookmarkentry = '
145 bookmarkentry = '
146 <tr class="tagEntry parity{parity}">
146 <tr class="tagEntry parity{parity}">
147 <td>
147 <td>
148 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
148 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
149 {bookmark|escape}
149 {bookmark|escape}
150 </a>
150 </a>
151 </td>
151 </td>
152 <td class="node">
152 <td class="node">
153 {node|short}
153 {node|short}
154 </td>
154 </td>
155 </tr>'
155 </tr>'
156 branches = branches.tmpl
156 branches = branches.tmpl
157 branchentry = '
157 branchentry = '
158 <tr class="tagEntry parity{parity}">
158 <tr class="tagEntry parity{parity}">
159 <td>
159 <td>
160 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
160 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
161 {branch|escape}
161 {branch|escape}
162 </a>
162 </a>
163 </td>
163 </td>
164 <td class="node">
164 <td class="node">
165 {node|short}
165 {node|short}
166 </td>
166 </td>
167 </tr>'
167 </tr>'
168 changelogtag = '<span class="tag">{name|escape}</span> '
168 changelogtag = '<span class="tag">{name|escape}</span> '
169 changesettag = '<span class="tag">{tag|escape}</span> '
169 changesettag = '<span class="tag">{tag|escape}</span> '
170 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
170 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
171 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
171 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
172 changelogbranchname = '<span class="branchname">{name|escape}</span> '
172 changelogbranchname = '<span class="branchname">{name|escape}</span> '
173
173
174 filediffparent = '
174 filediffparent = '
175 <tr>
175 <tr>
176 <th class="parent">parent {rev}:</th>
176 <th class="parent">parent {rev}:</th>
177 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
177 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
178 </tr>'
178 </tr>'
179 filelogparent = '
179 filelogparent = '
180 <tr>
180 <tr>
181 <th>parent {rev}:</th>
181 <th>parent {rev}:</th>
182 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
182 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
183 </tr>'
183 </tr>'
184 filediffchild = '
184 filediffchild = '
185 <tr>
185 <tr>
186 <th class="child">child {rev}:</th>
186 <th class="child">child {rev}:</th>
187 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
187 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
188 </td>
188 </td>
189 </tr>'
189 </tr>'
190 filelogchild = '
190 filelogchild = '
191 <tr>
191 <tr>
192 <th>child {rev}:</th>
192 <th>child {rev}:</th>
193 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
193 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
194 </tr>'
194 </tr>'
195
195
196 indexentry = '
196 indexentry = '
197 <tr class="parity{parity}">
197 <tr class="parity{parity}">
198 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
198 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
199 <td>{description}</td>
199 <td>{description}</td>
200 <td>{contact|obfuscate}</td>
200 <td>{contact|obfuscate}</td>
201 <td class="age">{lastchange|date}</td>
201 <td class="age">{lastchange|rfc822date}</td>
202 <td class="indexlinks">{archives%indexarchiveentry}</td>
202 <td class="indexlinks">{archives%indexarchiveentry}</td>
203 </tr>\n'
203 </tr>\n'
204 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
204 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
205 index = index.tmpl
205 index = index.tmpl
206 archiveentry = '
206 archiveentry = '
207 <li>
207 <li>
208 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
208 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
209 </li>'
209 </li>'
210 notfound = notfound.tmpl
210 notfound = notfound.tmpl
211 error = error.tmpl
211 error = error.tmpl
212 urlparameter = '{separator}{name}={value|urlescape}'
212 urlparameter = '{separator}{name}={value|urlescape}'
213 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
213 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,5 +1,5 b''
1 <tr class="parity{parity}">
1 <tr class="parity{parity}">
2 <td class="age">{date|date}</td>
2 <td class="age">{date|rfc822date}</td>
3 <td class="author">{author|person}</td>
3 <td class="author">{author|person}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags % '<span class="tag">{name|escape}</span> '}{bookmarks % '<span class="tag">{name|escape}</span> '}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags % '<span class="tag">{name|escape}</span> '}{bookmarks % '<span class="tag">{name|escape}</span> '}</td>
5 </tr>
5 </tr>
@@ -1,25 +1,25 b''
1 <table class="logEntry parity{parity}">
1 <table class="logEntry parity{parity}">
2 <tr>
2 <tr>
3 <th><span class="age">{date|date}</span>:</th>
3 <th><span class="age">{date|rfc822date}</span>:</th>
4 <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
4 <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
5 </tr>
5 </tr>
6 <tr>
6 <tr>
7 <th class="revision">changeset {rev}:</th>
7 <th class="revision">changeset {rev}:</th>
8 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
8 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
9 </tr>
9 </tr>
10 {parent%changelogparent}
10 {parent%changelogparent}
11 {child%changelogchild}
11 {child%changelogchild}
12 {changelogtag}
12 {changelogtag}
13 <tr>
13 <tr>
14 <th class="author">author:</th>
14 <th class="author">author:</th>
15 <td class="author">{author|obfuscate}</td>
15 <td class="author">{author|obfuscate}</td>
16 </tr>
16 </tr>
17 <tr>
17 <tr>
18 <th class="date">date:</th>
18 <th class="date">date:</th>
19 <td class="date">{date|date}</td>
19 <td class="date">{date|rfc822date}</td>
20 </tr>
20 </tr>
21 <tr>
21 <tr>
22 <th class="files"><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
22 <th class="files"><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
23 <td class="files">{files}</td>
23 <td class="files">{files}</td>
24 </tr>
24 </tr>
25 </table>
25 </table>
@@ -1,52 +1,52 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {node|short}</title>
2 <title>{repo|escape}: changeset {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
13 <a href="{url}raw-rev/{node|short}">raw</a>
13 <a href="{url}raw-rev/{node|short}">raw</a>
14 {archives%archiveentry}
14 {archives%archiveentry}
15 <a href="{url}help{sessionvars%urlparameter}">help</a>
15 <a href="{url}help{sessionvars%urlparameter}">help</a>
16 </div>
16 </div>
17
17
18 <h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
18 <h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
19
19
20 <table id="changesetEntry">
20 <table id="changesetEntry">
21 <tr>
21 <tr>
22 <th class="changeset">changeset {rev}:</th>
22 <th class="changeset">changeset {rev}:</th>
23 <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
23 <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
24 </tr>
24 </tr>
25 {parent%changesetparent}
25 {parent%changesetparent}
26 {child%changesetchild}
26 {child%changesetchild}
27 {changesettag}
27 {changesettag}
28 <tr>
28 <tr>
29 <th class="author">author:</th>
29 <th class="author">author:</th>
30 <td class="author">{author|obfuscate}</td>
30 <td class="author">{author|obfuscate}</td>
31 </tr>
31 </tr>
32 <tr>
32 <tr>
33 <th class="date">date:</th>
33 <th class="date">date:</th>
34 <td class="date age">{date|date}</td>
34 <td class="date age">{date|rfc822date}</td>
35 </tr>
35 </tr>
36 <tr>
36 <tr>
37 <th class="files">files:</th>
37 <th class="files">files:</th>
38 <td class="files">{files}</td>
38 <td class="files">{files}</td>
39 </tr>
39 </tr>
40 <tr>
40 <tr>
41 <th class="description">description:</th>
41 <th class="description">description:</th>
42 <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
42 <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
43 </tr>
43 </tr>
44 </table>
44 </table>
45
45
46 <div id="changesetDiff">
46 <div id="changesetDiff">
47 {diff}
47 {diff}
48 </div>
48 </div>
49
49
50 {footer}
50 {footer}
51
51
52
52
@@ -1,49 +1,49 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} annotate</title>
2 <title>{repo|escape}: {file|escape} annotate</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
14 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
15 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
16 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
16 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 </div>
18 </div>
19
19
20 <h2>Annotate {file|escape}</h2>
20 <h2>Annotate {file|escape}</h2>
21
21
22 <table>
22 <table>
23 <tr>
23 <tr>
24 <td class="metatag">changeset {rev}:</td>
24 <td class="metatag">changeset {rev}:</td>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
26 {parent%fileannotateparent}
26 {parent%fileannotateparent}
27 {child%fileannotatechild}
27 {child%fileannotatechild}
28 <tr>
28 <tr>
29 <td class="metatag">author:</td>
29 <td class="metatag">author:</td>
30 <td>{author|obfuscate}</td></tr>
30 <td>{author|obfuscate}</td></tr>
31 <tr>
31 <tr>
32 <td class="metatag">date:</td>
32 <td class="metatag">date:</td>
33 <td class="date age">{date|date}</td>
33 <td class="date age">{date|rfc822date}</td>
34 </tr>
34 </tr>
35 <tr>
35 <tr>
36 <td class="metatag">permissions:</td>
36 <td class="metatag">permissions:</td>
37 <td>{permissions|permissions}</td>
37 <td>{permissions|permissions}</td>
38 </tr>
38 </tr>
39 <tr>
39 <tr>
40 <td class="metatag">description:</td>
40 <td class="metatag">description:</td>
41 <td>{desc|strip|escape|addbreaks|nonempty}</td>
41 <td>{desc|strip|escape|addbreaks|nonempty}</td>
42 </tr>
42 </tr>
43 </table>
43 </table>
44
44
45 <table cellspacing="0" cellpadding="0">
45 <table cellspacing="0" cellpadding="0">
46 {annotate%annotateline}
46 {annotate%annotateline}
47 </table>
47 </table>
48
48
49 {footer}
49 {footer}
@@ -1,25 +1,25 b''
1 <table class="logEntry parity{parity}">
1 <table class="logEntry parity{parity}">
2 <tr>
2 <tr>
3 <th><span class="age">{date|date}</span>:</th>
3 <th><span class="age">{date|rfc822date}</span>:</th>
4 <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
4 <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
5 </tr>
5 </tr>
6 <tr>
6 <tr>
7 <th class="revision">revision {filerev}:</td>
7 <th class="revision">revision {filerev}:</td>
8 <td class="node">
8 <td class="node">
9 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
9 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
10 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(diff)</a>
10 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(diff)</a>
11 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(annotate)</a>
11 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(annotate)</a>
12 </td>
12 </td>
13 </tr>
13 </tr>
14 {rename%filelogrename}
14 {rename%filelogrename}
15 <tr>
15 <tr>
16 <th class="author">author:</th>
16 <th class="author">author:</th>
17 <td class="author">{author|obfuscate}</td>
17 <td class="author">{author|obfuscate}</td>
18 </tr>
18 </tr>
19 <tr>
19 <tr>
20 <th class="date">date:</th>
20 <th class="date">date:</th>
21 <td class="date">{date|date}</td>
21 <td class="date">{date|rfc822date}</td>
22 </tr>
22 </tr>
23 </table>
23 </table>
24
24
25
25
@@ -1,47 +1,47 b''
1 {header}
1 {header}
2 <title>{repo|escape}:{file|escape}</title>
2 <title>{repo|escape}:{file|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
16 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
16 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 </div>
18 </div>
19
19
20 <h2>{file|escape}</h2>
20 <h2>{file|escape}</h2>
21
21
22 <table>
22 <table>
23 <tr>
23 <tr>
24 <td class="metatag">changeset {rev}:</td>
24 <td class="metatag">changeset {rev}:</td>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
26 {parent%filerevparent}
26 {parent%filerevparent}
27 {child%filerevchild}
27 {child%filerevchild}
28 <tr>
28 <tr>
29 <td class="metatag">author:</td>
29 <td class="metatag">author:</td>
30 <td>{author|obfuscate}</td></tr>
30 <td>{author|obfuscate}</td></tr>
31 <tr>
31 <tr>
32 <td class="metatag">date:</td>
32 <td class="metatag">date:</td>
33 <td class="date age">{date|date}</td></tr>
33 <td class="date age">{date|rfc822date}</td></tr>
34 <tr>
34 <tr>
35 <td class="metatag">permissions:</td>
35 <td class="metatag">permissions:</td>
36 <td>{permissions|permissions}</td></tr>
36 <td>{permissions|permissions}</td></tr>
37 <tr>
37 <tr>
38 <td class="metatag">description:</td>
38 <td class="metatag">description:</td>
39 <td>{desc|strip|escape|addbreaks|nonempty}</td>
39 <td>{desc|strip|escape|addbreaks|nonempty}</td>
40 </tr>
40 </tr>
41 </table>
41 </table>
42
42
43 <pre>
43 <pre>
44 {text%fileline}
44 {text%fileline}
45 </pre>
45 </pre>
46
46
47 {footer}
47 {footer}
@@ -1,183 +1,183 b''
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}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
10 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
13 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
13 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
14 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
14 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 filenodelink = '<a href="{url}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}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
34 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
35 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
35 <a href="{url}file/{node|short}{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}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
44 <td><a href="{url}file/{node|short}/{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}">
57 <tr class="parity{parity}">
58 <td class="annotate">
58 <td class="annotate">
59 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
59 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
60 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
60 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
61 </td>
61 </td>
62 <td>
62 <td>
63 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
63 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
64 </td>
64 </td>
65 <td><pre>&nbsp;{line|escape}</pre></td>
65 <td><pre>&nbsp;{line|escape}</pre></td>
66 </tr>'
66 </tr>'
67 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
67 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
68 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
68 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
69 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
69 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
70 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
70 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
71 changelogparent = '
71 changelogparent = '
72 <tr>
72 <tr>
73 <th class="parent">parent {rev}:</th>
73 <th class="parent">parent {rev}:</th>
74 <td class="parent">
74 <td class="parent">
75 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
75 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
76 </td>
76 </td>
77 </tr>'
77 </tr>'
78 changesetparent = '
78 changesetparent = '
79 <tr>
79 <tr>
80 <th class="parent">parent {rev}:</th>
80 <th class="parent">parent {rev}:</th>
81 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
81 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
82 </tr>'
82 </tr>'
83 filerevparent = '
83 filerevparent = '
84 <tr>
84 <tr>
85 <td class="metatag">parent:</td>
85 <td class="metatag">parent:</td>
86 <td>
86 <td>
87 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
87 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
88 {rename%filerename}{node|short}
88 {rename%filerename}{node|short}
89 </a>
89 </a>
90 </td>
90 </td>
91 </tr>'
91 </tr>'
92 filerename = '{file|escape}@'
92 filerename = '{file|escape}@'
93 filelogrename = '
93 filelogrename = '
94 <tr>
94 <tr>
95 <th>base:</th>
95 <th>base:</th>
96 <td>
96 <td>
97 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
97 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
98 {file|escape}@{node|short}
98 {file|escape}@{node|short}
99 </a>
99 </a>
100 </td>
100 </td>
101 </tr>'
101 </tr>'
102 fileannotateparent = '
102 fileannotateparent = '
103 <tr>
103 <tr>
104 <td class="metatag">parent:</td>
104 <td class="metatag">parent:</td>
105 <td>
105 <td>
106 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
106 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
107 {rename%filerename}{node|short}
107 {rename%filerename}{node|short}
108 </a>
108 </a>
109 </td>
109 </td>
110 </tr>'
110 </tr>'
111 changesetchild = '
111 changesetchild = '
112 <tr>
112 <tr>
113 <th class="child">child {rev}:</th>
113 <th class="child">child {rev}:</th>
114 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
114 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
115 </tr>'
115 </tr>'
116 changelogchild = '
116 changelogchild = '
117 <tr>
117 <tr>
118 <th class="child">child {rev}:</th>
118 <th class="child">child {rev}:</th>
119 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
119 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
120 </tr>'
120 </tr>'
121 filerevchild = '
121 filerevchild = '
122 <tr>
122 <tr>
123 <td class="metatag">child:</td>
123 <td class="metatag">child:</td>
124 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
124 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
125 </tr>'
125 </tr>'
126 fileannotatechild = '
126 fileannotatechild = '
127 <tr>
127 <tr>
128 <td class="metatag">child:</td>
128 <td class="metatag">child:</td>
129 <td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
129 <td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
130 </tr>'
130 </tr>'
131 tags = tags.tmpl
131 tags = tags.tmpl
132 tagentry = '
132 tagentry = '
133 <li class="tagEntry parity{parity}">
133 <li class="tagEntry parity{parity}">
134 <tt class="node">{node}</tt>
134 <tt class="node">{node}</tt>
135 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
135 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
136 </li>'
136 </li>'
137 branches = branches.tmpl
137 branches = branches.tmpl
138 branchentry = '
138 branchentry = '
139 <li class="tagEntry parity{parity}">
139 <li class="tagEntry parity{parity}">
140 <tt class="node">{node}</tt>
140 <tt class="node">{node}</tt>
141 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
141 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
142 </li>'
142 </li>'
143 diffblock = '<pre class="parity{parity}">{lines}</pre>'
143 diffblock = '<pre class="parity{parity}">{lines}</pre>'
144 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
144 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
145 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
145 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
146 filediffparent = '
146 filediffparent = '
147 <tr>
147 <tr>
148 <th class="parent">parent {rev}:</th>
148 <th class="parent">parent {rev}:</th>
149 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
149 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
150 </tr>'
150 </tr>'
151 filelogparent = '
151 filelogparent = '
152 <tr>
152 <tr>
153 <th>parent {rev}:</th>
153 <th>parent {rev}:</th>
154 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
154 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
155 </tr>'
155 </tr>'
156 filediffchild = '
156 filediffchild = '
157 <tr>
157 <tr>
158 <th class="child">child {rev}:</th>
158 <th class="child">child {rev}:</th>
159 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
159 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
160 </tr>'
160 </tr>'
161 filelogchild = '
161 filelogchild = '
162 <tr>
162 <tr>
163 <th>child {rev}:</th>
163 <th>child {rev}:</th>
164 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
164 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
165 </tr>'
165 </tr>'
166 indexentry = '
166 indexentry = '
167 <tr class="parity{parity}">
167 <tr class="parity{parity}">
168 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
168 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
169 <td>{description}</td>
169 <td>{description}</td>
170 <td>{contact|obfuscate}</td>
170 <td>{contact|obfuscate}</td>
171 <td class="age">{lastchange|date}</td>
171 <td class="age">{lastchange|rfc822date}</td>
172 <td class="indexlinks">
172 <td class="indexlinks">
173 <a href="{url}rss-log">RSS</a>
173 <a href="{url}rss-log">RSS</a>
174 <a href="{url}atom-log">Atom</a>
174 <a href="{url}atom-log">Atom</a>
175 {archives%archiveentry}
175 {archives%archiveentry}
176 </td>
176 </td>
177 </tr>'
177 </tr>'
178 index = index.tmpl
178 index = index.tmpl
179 archiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
179 archiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
180 notfound = notfound.tmpl
180 notfound = notfound.tmpl
181 error = error.tmpl
181 error = error.tmpl
182 urlparameter = '{separator}{name}={value|urlescape}'
182 urlparameter = '{separator}{name}={value|urlescape}'
183 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
183 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,7 +1,7 b''
1 <table class="slogEntry parity{parity}">
1 <table class="slogEntry parity{parity}">
2 <tr>
2 <tr>
3 <td class="age">{date|date}</td>
3 <td class="age">{date|rfc822date}</td>
4 <td class="author">{author|person}</td>
4 <td class="author">{author|person}</td>
5 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
5 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
6 </tr>
6 </tr>
7 </table>
7 </table>
@@ -1,1157 +1,1157 b''
1 An attempt at more fully testing the hgweb web interface.
1 An attempt at more fully testing the hgweb web interface.
2 The following things are tested elsewhere and are therefore omitted:
2 The following things are tested elsewhere and are therefore omitted:
3 - archive, tested in test-archive
3 - archive, tested in test-archive
4 - unbundle, tested in test-push-http
4 - unbundle, tested in test-push-http
5 - changegroupsubset, tested in test-pull
5 - changegroupsubset, tested in test-pull
6
6
7 Set up the repo
7 Set up the repo
8
8
9 $ hg init test
9 $ hg init test
10 $ cd test
10 $ cd test
11 $ mkdir da
11 $ mkdir da
12 $ echo foo > da/foo
12 $ echo foo > da/foo
13 $ echo foo > foo
13 $ echo foo > foo
14 $ hg ci -Ambase
14 $ hg ci -Ambase
15 adding da/foo
15 adding da/foo
16 adding foo
16 adding foo
17 $ hg tag 1.0
17 $ hg tag 1.0
18 $ hg bookmark something
18 $ hg bookmark something
19 $ hg bookmark -r0 anotherthing
19 $ hg bookmark -r0 anotherthing
20 $ echo another > foo
20 $ echo another > foo
21 $ hg branch stable
21 $ hg branch stable
22 marked working directory as branch stable
22 marked working directory as branch stable
23 $ hg ci -Ambranch
23 $ hg ci -Ambranch
24 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
24 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
25 $ cat hg.pid >> $DAEMON_PIDS
25 $ cat hg.pid >> $DAEMON_PIDS
26
26
27 Logs and changes
27 Logs and changes
28
28
29 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
29 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
30 200 Script output follows
30 200 Script output follows
31
31
32 <?xml version="1.0" encoding="ascii"?>
32 <?xml version="1.0" encoding="ascii"?>
33 <feed xmlns="http://www.w3.org/2005/Atom">
33 <feed xmlns="http://www.w3.org/2005/Atom">
34 <!-- Changelog -->
34 <!-- Changelog -->
35 <id>http://*:$HGPORT/</id> (glob)
35 <id>http://*:$HGPORT/</id> (glob)
36 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
36 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
37 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
37 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
38 <title>test Changelog</title>
38 <title>test Changelog</title>
39 <updated>1970-01-01T00:00:00+00:00</updated>
39 <updated>1970-01-01T00:00:00+00:00</updated>
40
40
41 <entry>
41 <entry>
42 <title>branch</title>
42 <title>branch</title>
43 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
43 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
44 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
44 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
45 <author>
45 <author>
46 <name>test</name>
46 <name>test</name>
47 <email>&#116;&#101;&#115;&#116;</email>
47 <email>&#116;&#101;&#115;&#116;</email>
48 </author>
48 </author>
49 <updated>1970-01-01T00:00:00+00:00</updated>
49 <updated>1970-01-01T00:00:00+00:00</updated>
50 <published>1970-01-01T00:00:00+00:00</published>
50 <published>1970-01-01T00:00:00+00:00</published>
51 <content type="xhtml">
51 <content type="xhtml">
52 <div xmlns="http://www.w3.org/1999/xhtml">
52 <div xmlns="http://www.w3.org/1999/xhtml">
53 <pre xml:space="preserve">branch</pre>
53 <pre xml:space="preserve">branch</pre>
54 </div>
54 </div>
55 </content>
55 </content>
56 </entry>
56 </entry>
57 <entry>
57 <entry>
58 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
58 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
59 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
59 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
60 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
60 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
61 <author>
61 <author>
62 <name>test</name>
62 <name>test</name>
63 <email>&#116;&#101;&#115;&#116;</email>
63 <email>&#116;&#101;&#115;&#116;</email>
64 </author>
64 </author>
65 <updated>1970-01-01T00:00:00+00:00</updated>
65 <updated>1970-01-01T00:00:00+00:00</updated>
66 <published>1970-01-01T00:00:00+00:00</published>
66 <published>1970-01-01T00:00:00+00:00</published>
67 <content type="xhtml">
67 <content type="xhtml">
68 <div xmlns="http://www.w3.org/1999/xhtml">
68 <div xmlns="http://www.w3.org/1999/xhtml">
69 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
69 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
70 </div>
70 </div>
71 </content>
71 </content>
72 </entry>
72 </entry>
73 <entry>
73 <entry>
74 <title>base</title>
74 <title>base</title>
75 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
75 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
76 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
76 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
77 <author>
77 <author>
78 <name>test</name>
78 <name>test</name>
79 <email>&#116;&#101;&#115;&#116;</email>
79 <email>&#116;&#101;&#115;&#116;</email>
80 </author>
80 </author>
81 <updated>1970-01-01T00:00:00+00:00</updated>
81 <updated>1970-01-01T00:00:00+00:00</updated>
82 <published>1970-01-01T00:00:00+00:00</published>
82 <published>1970-01-01T00:00:00+00:00</published>
83 <content type="xhtml">
83 <content type="xhtml">
84 <div xmlns="http://www.w3.org/1999/xhtml">
84 <div xmlns="http://www.w3.org/1999/xhtml">
85 <pre xml:space="preserve">base</pre>
85 <pre xml:space="preserve">base</pre>
86 </div>
86 </div>
87 </content>
87 </content>
88 </entry>
88 </entry>
89
89
90 </feed>
90 </feed>
91 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
91 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
92 200 Script output follows
92 200 Script output follows
93
93
94 <?xml version="1.0" encoding="ascii"?>
94 <?xml version="1.0" encoding="ascii"?>
95 <feed xmlns="http://www.w3.org/2005/Atom">
95 <feed xmlns="http://www.w3.org/2005/Atom">
96 <!-- Changelog -->
96 <!-- Changelog -->
97 <id>http://*:$HGPORT/</id> (glob)
97 <id>http://*:$HGPORT/</id> (glob)
98 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
98 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
99 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
99 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
100 <title>test Changelog</title>
100 <title>test Changelog</title>
101 <updated>1970-01-01T00:00:00+00:00</updated>
101 <updated>1970-01-01T00:00:00+00:00</updated>
102
102
103 <entry>
103 <entry>
104 <title>branch</title>
104 <title>branch</title>
105 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
105 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
106 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
106 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
107 <author>
107 <author>
108 <name>test</name>
108 <name>test</name>
109 <email>&#116;&#101;&#115;&#116;</email>
109 <email>&#116;&#101;&#115;&#116;</email>
110 </author>
110 </author>
111 <updated>1970-01-01T00:00:00+00:00</updated>
111 <updated>1970-01-01T00:00:00+00:00</updated>
112 <published>1970-01-01T00:00:00+00:00</published>
112 <published>1970-01-01T00:00:00+00:00</published>
113 <content type="xhtml">
113 <content type="xhtml">
114 <div xmlns="http://www.w3.org/1999/xhtml">
114 <div xmlns="http://www.w3.org/1999/xhtml">
115 <pre xml:space="preserve">branch</pre>
115 <pre xml:space="preserve">branch</pre>
116 </div>
116 </div>
117 </content>
117 </content>
118 </entry>
118 </entry>
119 <entry>
119 <entry>
120 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
120 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
121 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
121 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
122 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
122 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
123 <author>
123 <author>
124 <name>test</name>
124 <name>test</name>
125 <email>&#116;&#101;&#115;&#116;</email>
125 <email>&#116;&#101;&#115;&#116;</email>
126 </author>
126 </author>
127 <updated>1970-01-01T00:00:00+00:00</updated>
127 <updated>1970-01-01T00:00:00+00:00</updated>
128 <published>1970-01-01T00:00:00+00:00</published>
128 <published>1970-01-01T00:00:00+00:00</published>
129 <content type="xhtml">
129 <content type="xhtml">
130 <div xmlns="http://www.w3.org/1999/xhtml">
130 <div xmlns="http://www.w3.org/1999/xhtml">
131 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
131 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
132 </div>
132 </div>
133 </content>
133 </content>
134 </entry>
134 </entry>
135 <entry>
135 <entry>
136 <title>base</title>
136 <title>base</title>
137 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
137 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
138 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
138 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
139 <author>
139 <author>
140 <name>test</name>
140 <name>test</name>
141 <email>&#116;&#101;&#115;&#116;</email>
141 <email>&#116;&#101;&#115;&#116;</email>
142 </author>
142 </author>
143 <updated>1970-01-01T00:00:00+00:00</updated>
143 <updated>1970-01-01T00:00:00+00:00</updated>
144 <published>1970-01-01T00:00:00+00:00</published>
144 <published>1970-01-01T00:00:00+00:00</published>
145 <content type="xhtml">
145 <content type="xhtml">
146 <div xmlns="http://www.w3.org/1999/xhtml">
146 <div xmlns="http://www.w3.org/1999/xhtml">
147 <pre xml:space="preserve">base</pre>
147 <pre xml:space="preserve">base</pre>
148 </div>
148 </div>
149 </content>
149 </content>
150 </entry>
150 </entry>
151
151
152 </feed>
152 </feed>
153 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
153 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
154 200 Script output follows
154 200 Script output follows
155
155
156 <?xml version="1.0" encoding="ascii"?>
156 <?xml version="1.0" encoding="ascii"?>
157 <feed xmlns="http://www.w3.org/2005/Atom">
157 <feed xmlns="http://www.w3.org/2005/Atom">
158 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
158 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
159 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
159 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
160 <title>test: foo history</title>
160 <title>test: foo history</title>
161 <updated>1970-01-01T00:00:00+00:00</updated>
161 <updated>1970-01-01T00:00:00+00:00</updated>
162
162
163 <entry>
163 <entry>
164 <title>base</title>
164 <title>base</title>
165 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
165 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
166 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
166 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
167 <author>
167 <author>
168 <name>test</name>
168 <name>test</name>
169 <email>&#116;&#101;&#115;&#116;</email>
169 <email>&#116;&#101;&#115;&#116;</email>
170 </author>
170 </author>
171 <updated>1970-01-01T00:00:00+00:00</updated>
171 <updated>1970-01-01T00:00:00+00:00</updated>
172 <published>1970-01-01T00:00:00+00:00</published>
172 <published>1970-01-01T00:00:00+00:00</published>
173 <content type="xhtml">
173 <content type="xhtml">
174 <div xmlns="http://www.w3.org/1999/xhtml">
174 <div xmlns="http://www.w3.org/1999/xhtml">
175 <pre xml:space="preserve">base</pre>
175 <pre xml:space="preserve">base</pre>
176 </div>
176 </div>
177 </content>
177 </content>
178 </entry>
178 </entry>
179
179
180 </feed>
180 </feed>
181 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
181 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
182 200 Script output follows
182 200 Script output follows
183
183
184 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
184 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
185 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
185 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
186 <head>
186 <head>
187 <link rel="icon" href="/static/hgicon.png" type="image/png" />
187 <link rel="icon" href="/static/hgicon.png" type="image/png" />
188 <meta name="robots" content="index, nofollow" />
188 <meta name="robots" content="index, nofollow" />
189 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
189 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
190 <script type="text/javascript" src="/static/mercurial.js"></script>
190 <script type="text/javascript" src="/static/mercurial.js"></script>
191
191
192 <title>test: log</title>
192 <title>test: log</title>
193 <link rel="alternate" type="application/atom+xml"
193 <link rel="alternate" type="application/atom+xml"
194 href="/atom-log" title="Atom feed for test" />
194 href="/atom-log" title="Atom feed for test" />
195 <link rel="alternate" type="application/rss+xml"
195 <link rel="alternate" type="application/rss+xml"
196 href="/rss-log" title="RSS feed for test" />
196 href="/rss-log" title="RSS feed for test" />
197 </head>
197 </head>
198 <body>
198 <body>
199
199
200 <div class="container">
200 <div class="container">
201 <div class="menu">
201 <div class="menu">
202 <div class="logo">
202 <div class="logo">
203 <a href="http://mercurial.selenic.com/">
203 <a href="http://mercurial.selenic.com/">
204 <img src="/static/hglogo.png" alt="mercurial" /></a>
204 <img src="/static/hglogo.png" alt="mercurial" /></a>
205 </div>
205 </div>
206 <ul>
206 <ul>
207 <li class="active">log</li>
207 <li class="active">log</li>
208 <li><a href="/graph/1d22e65f027e">graph</a></li>
208 <li><a href="/graph/1d22e65f027e">graph</a></li>
209 <li><a href="/tags">tags</a></li>
209 <li><a href="/tags">tags</a></li>
210 <li><a href="/bookmarks">bookmarks</a></li>
210 <li><a href="/bookmarks">bookmarks</a></li>
211 <li><a href="/branches">branches</a></li>
211 <li><a href="/branches">branches</a></li>
212 </ul>
212 </ul>
213 <ul>
213 <ul>
214 <li><a href="/rev/1d22e65f027e">changeset</a></li>
214 <li><a href="/rev/1d22e65f027e">changeset</a></li>
215 <li><a href="/file/1d22e65f027e">browse</a></li>
215 <li><a href="/file/1d22e65f027e">browse</a></li>
216 </ul>
216 </ul>
217 <ul>
217 <ul>
218
218
219 </ul>
219 </ul>
220 <ul>
220 <ul>
221 <li><a href="/help">help</a></li>
221 <li><a href="/help">help</a></li>
222 </ul>
222 </ul>
223 </div>
223 </div>
224
224
225 <div class="main">
225 <div class="main">
226 <h2><a href="/">test</a></h2>
226 <h2><a href="/">test</a></h2>
227 <h3>log</h3>
227 <h3>log</h3>
228
228
229 <form class="search" action="/log">
229 <form class="search" action="/log">
230
230
231 <p><input name="rev" id="search1" type="text" size="30" /></p>
231 <p><input name="rev" id="search1" type="text" size="30" /></p>
232 <div id="hint">find changesets by author, revision,
232 <div id="hint">find changesets by author, revision,
233 files, or words in the commit message</div>
233 files, or words in the commit message</div>
234 </form>
234 </form>
235
235
236 <div class="navigate">
236 <div class="navigate">
237 <a href="/shortlog/2?revcount=30">less</a>
237 <a href="/shortlog/2?revcount=30">less</a>
238 <a href="/shortlog/2?revcount=120">more</a>
238 <a href="/shortlog/2?revcount=120">more</a>
239 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
239 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
240 </div>
240 </div>
241
241
242 <table class="bigtable">
242 <table class="bigtable">
243 <tr>
243 <tr>
244 <th class="age">age</th>
244 <th class="age">age</th>
245 <th class="author">author</th>
245 <th class="author">author</th>
246 <th class="description">description</th>
246 <th class="description">description</th>
247 </tr>
247 </tr>
248 <tr class="parity0">
248 <tr class="parity0">
249 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
249 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
250 <td class="author">test</td>
250 <td class="author">test</td>
251 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> <span class="tag">something</span> </td>
251 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> <span class="tag">something</span> </td>
252 </tr>
252 </tr>
253 <tr class="parity1">
253 <tr class="parity1">
254 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
254 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
255 <td class="author">test</td>
255 <td class="author">test</td>
256 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
256 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
257 </tr>
257 </tr>
258 <tr class="parity0">
258 <tr class="parity0">
259 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
259 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
260 <td class="author">test</td>
260 <td class="author">test</td>
261 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
261 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
262 </tr>
262 </tr>
263
263
264 </table>
264 </table>
265
265
266 <div class="navigate">
266 <div class="navigate">
267 <a href="/shortlog/2?revcount=30">less</a>
267 <a href="/shortlog/2?revcount=30">less</a>
268 <a href="/shortlog/2?revcount=120">more</a>
268 <a href="/shortlog/2?revcount=120">more</a>
269 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
269 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
270 </div>
270 </div>
271
271
272 </div>
272 </div>
273 </div>
273 </div>
274
274
275 <script type="text/javascript">process_dates()</script>
275 <script type="text/javascript">process_dates()</script>
276
276
277
277
278 </body>
278 </body>
279 </html>
279 </html>
280
280
281 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
281 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
282 200 Script output follows
282 200 Script output follows
283
283
284 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
284 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
285 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
285 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
286 <head>
286 <head>
287 <link rel="icon" href="/static/hgicon.png" type="image/png" />
287 <link rel="icon" href="/static/hgicon.png" type="image/png" />
288 <meta name="robots" content="index, nofollow" />
288 <meta name="robots" content="index, nofollow" />
289 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
289 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
290 <script type="text/javascript" src="/static/mercurial.js"></script>
290 <script type="text/javascript" src="/static/mercurial.js"></script>
291
291
292 <title>test: 2ef0ac749a14</title>
292 <title>test: 2ef0ac749a14</title>
293 </head>
293 </head>
294 <body>
294 <body>
295 <div class="container">
295 <div class="container">
296 <div class="menu">
296 <div class="menu">
297 <div class="logo">
297 <div class="logo">
298 <a href="http://mercurial.selenic.com/">
298 <a href="http://mercurial.selenic.com/">
299 <img src="/static/hglogo.png" alt="mercurial" /></a>
299 <img src="/static/hglogo.png" alt="mercurial" /></a>
300 </div>
300 </div>
301 <ul>
301 <ul>
302 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
302 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
303 <li><a href="/graph/2ef0ac749a14">graph</a></li>
303 <li><a href="/graph/2ef0ac749a14">graph</a></li>
304 <li><a href="/tags">tags</a></li>
304 <li><a href="/tags">tags</a></li>
305 <li><a href="/bookmarks">bookmarks</a></li>
305 <li><a href="/bookmarks">bookmarks</a></li>
306 <li><a href="/branches">branches</a></li>
306 <li><a href="/branches">branches</a></li>
307 </ul>
307 </ul>
308 <ul>
308 <ul>
309 <li class="active">changeset</li>
309 <li class="active">changeset</li>
310 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
310 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
311 <li><a href="/file/2ef0ac749a14">browse</a></li>
311 <li><a href="/file/2ef0ac749a14">browse</a></li>
312 </ul>
312 </ul>
313 <ul>
313 <ul>
314
314
315 </ul>
315 </ul>
316 <ul>
316 <ul>
317 <li><a href="/help">help</a></li>
317 <li><a href="/help">help</a></li>
318 </ul>
318 </ul>
319 </div>
319 </div>
320
320
321 <div class="main">
321 <div class="main">
322
322
323 <h2><a href="/">test</a></h2>
323 <h2><a href="/">test</a></h2>
324 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> <span class="tag">anotherthing</span> </h3>
324 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> <span class="tag">anotherthing</span> </h3>
325
325
326 <form class="search" action="/log">
326 <form class="search" action="/log">
327
327
328 <p><input name="rev" id="search1" type="text" size="30" /></p>
328 <p><input name="rev" id="search1" type="text" size="30" /></p>
329 <div id="hint">find changesets by author, revision,
329 <div id="hint">find changesets by author, revision,
330 files, or words in the commit message</div>
330 files, or words in the commit message</div>
331 </form>
331 </form>
332
332
333 <div class="description">base</div>
333 <div class="description">base</div>
334
334
335 <table id="changesetEntry">
335 <table id="changesetEntry">
336 <tr>
336 <tr>
337 <th class="author">author</th>
337 <th class="author">author</th>
338 <td class="author">&#116;&#101;&#115;&#116;</td>
338 <td class="author">&#116;&#101;&#115;&#116;</td>
339 </tr>
339 </tr>
340 <tr>
340 <tr>
341 <th class="date">date</th>
341 <th class="date">date</th>
342 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
342 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
343 <tr>
343 <tr>
344 <th class="author">parents</th>
344 <th class="author">parents</th>
345 <td class="author"></td>
345 <td class="author"></td>
346 </tr>
346 </tr>
347 <tr>
347 <tr>
348 <th class="author">children</th>
348 <th class="author">children</th>
349 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
349 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
350 </tr>
350 </tr>
351 <tr>
351 <tr>
352 <th class="files">files</th>
352 <th class="files">files</th>
353 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
353 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
354 </tr>
354 </tr>
355 <tr>
355 <tr>
356 <th class="diffstat">diffstat</th>
356 <th class="diffstat">diffstat</th>
357 <td class="diffstat">
357 <td class="diffstat">
358 2 files changed, 2 insertions(+), 0 deletions(-)
358 2 files changed, 2 insertions(+), 0 deletions(-)
359
359
360 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
360 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
361 <div id="diffstatdetails" style="display:none;">
361 <div id="diffstatdetails" style="display:none;">
362 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
362 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
363 <p>
363 <p>
364 <table> <tr class="parity0">
364 <table> <tr class="parity0">
365 <td class="diffstat-file"><a href="#l1.1">da/foo</a></td>
365 <td class="diffstat-file"><a href="#l1.1">da/foo</a></td>
366 <td class="diffstat-total" align="right">1</td>
366 <td class="diffstat-total" align="right">1</td>
367 <td class="diffstat-graph">
367 <td class="diffstat-graph">
368 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
368 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
369 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
369 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
370 </td>
370 </td>
371 </tr>
371 </tr>
372 <tr class="parity1">
372 <tr class="parity1">
373 <td class="diffstat-file"><a href="#l2.1">foo</a></td>
373 <td class="diffstat-file"><a href="#l2.1">foo</a></td>
374 <td class="diffstat-total" align="right">1</td>
374 <td class="diffstat-total" align="right">1</td>
375 <td class="diffstat-graph">
375 <td class="diffstat-graph">
376 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
376 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
377 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
377 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
378 </td>
378 </td>
379 </tr>
379 </tr>
380 </table>
380 </table>
381 </div>
381 </div>
382 </td>
382 </td>
383 </tr>
383 </tr>
384 </table>
384 </table>
385
385
386 <div class="overflow">
386 <div class="overflow">
387 <div class="sourcefirst"> line diff</div>
387 <div class="sourcefirst"> line diff</div>
388
388
389 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
389 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
390 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/da/foo Thu Jan 01 00:00:00 1970 +0000
390 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/da/foo Thu Jan 01 00:00:00 1970 +0000
391 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
391 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
392 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
392 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
393 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
393 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
394 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
394 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
395 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
395 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
396 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
396 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
397 </span></pre></div>
397 </span></pre></div>
398 </div>
398 </div>
399
399
400 </div>
400 </div>
401 </div>
401 </div>
402 <script type="text/javascript">process_dates()</script>
402 <script type="text/javascript">process_dates()</script>
403
403
404
404
405 </body>
405 </body>
406 </html>
406 </html>
407
407
408 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
408 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
409 200 Script output follows
409 200 Script output follows
410
410
411
411
412 # HG changeset patch
412 # HG changeset patch
413 # User test
413 # User test
414 # Date 0 0
414 # Date 0 0
415 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
415 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
416 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
416 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
417 Added tag 1.0 for changeset 2ef0ac749a14
417 Added tag 1.0 for changeset 2ef0ac749a14
418
418
419 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
419 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
420 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
420 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
421 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
421 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
422 @@ -0,0 +1,1 @@
422 @@ -0,0 +1,1 @@
423 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
423 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
424
424
425 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
425 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
426 200 Script output follows
426 200 Script output follows
427
427
428 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
428 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
429 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
429 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
430 <head>
430 <head>
431 <link rel="icon" href="/static/hgicon.png" type="image/png" />
431 <link rel="icon" href="/static/hgicon.png" type="image/png" />
432 <meta name="robots" content="index, nofollow" />
432 <meta name="robots" content="index, nofollow" />
433 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
433 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
434 <script type="text/javascript" src="/static/mercurial.js"></script>
434 <script type="text/javascript" src="/static/mercurial.js"></script>
435
435
436 <title>test: searching for base</title>
436 <title>test: searching for base</title>
437 </head>
437 </head>
438 <body>
438 <body>
439
439
440 <div class="container">
440 <div class="container">
441 <div class="menu">
441 <div class="menu">
442 <div class="logo">
442 <div class="logo">
443 <a href="http://mercurial.selenic.com/">
443 <a href="http://mercurial.selenic.com/">
444 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
444 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
445 </div>
445 </div>
446 <ul>
446 <ul>
447 <li><a href="/shortlog">log</a></li>
447 <li><a href="/shortlog">log</a></li>
448 <li><a href="/graph">graph</a></li>
448 <li><a href="/graph">graph</a></li>
449 <li><a href="/tags">tags</a></li>
449 <li><a href="/tags">tags</a></li>
450 <li><a href="/bookmarks">bookmarks</a></li>
450 <li><a href="/bookmarks">bookmarks</a></li>
451 <li><a href="/branches">branches</a></li>
451 <li><a href="/branches">branches</a></li>
452 <li><a href="/help">help</a></li>
452 <li><a href="/help">help</a></li>
453 </ul>
453 </ul>
454 </div>
454 </div>
455
455
456 <div class="main">
456 <div class="main">
457 <h2><a href="/">test</a></h2>
457 <h2><a href="/">test</a></h2>
458 <h3>searching for 'base'</h3>
458 <h3>searching for 'base'</h3>
459
459
460 <form class="search" action="/log">
460 <form class="search" action="/log">
461
461
462 <p><input name="rev" id="search1" type="text" size="30"></p>
462 <p><input name="rev" id="search1" type="text" size="30"></p>
463 <div id="hint">find changesets by author, revision,
463 <div id="hint">find changesets by author, revision,
464 files, or words in the commit message</div>
464 files, or words in the commit message</div>
465 </form>
465 </form>
466
466
467 <div class="navigate">
467 <div class="navigate">
468 <a href="/search/?rev=base&revcount=5">less</a>
468 <a href="/search/?rev=base&revcount=5">less</a>
469 <a href="/search/?rev=base&revcount=20">more</a>
469 <a href="/search/?rev=base&revcount=20">more</a>
470 </div>
470 </div>
471
471
472 <table class="bigtable">
472 <table class="bigtable">
473 <tr>
473 <tr>
474 <th class="age">age</th>
474 <th class="age">age</th>
475 <th class="author">author</th>
475 <th class="author">author</th>
476 <th class="description">description</th>
476 <th class="description">description</th>
477 </tr>
477 </tr>
478 <tr class="parity0">
478 <tr class="parity0">
479 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
479 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
480 <td class="author">test</td>
480 <td class="author">test</td>
481 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
481 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
482 </tr>
482 </tr>
483
483
484 </table>
484 </table>
485
485
486 <div class="navigate">
486 <div class="navigate">
487 <a href="/search/?rev=base&revcount=5">less</a>
487 <a href="/search/?rev=base&revcount=5">less</a>
488 <a href="/search/?rev=base&revcount=20">more</a>
488 <a href="/search/?rev=base&revcount=20">more</a>
489 </div>
489 </div>
490
490
491 </div>
491 </div>
492 </div>
492 </div>
493
493
494 <script type="text/javascript">process_dates()</script>
494 <script type="text/javascript">process_dates()</script>
495
495
496
496
497 </body>
497 </body>
498 </html>
498 </html>
499
499
500
500
501 File-related
501 File-related
502
502
503 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
503 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
504 200 Script output follows
504 200 Script output follows
505
505
506 foo
506 foo
507 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
507 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
508 200 Script output follows
508 200 Script output follows
509
509
510
510
511 test@0: foo
511 test@0: foo
512
512
513
513
514
514
515
515
516 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
516 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
517 200 Script output follows
517 200 Script output follows
518
518
519
519
520 drwxr-xr-x da
520 drwxr-xr-x da
521 -rw-r--r-- 45 .hgtags
521 -rw-r--r-- 45 .hgtags
522 -rw-r--r-- 4 foo
522 -rw-r--r-- 4 foo
523
523
524
524
525 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
525 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
526 200 Script output follows
526 200 Script output follows
527
527
528 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
528 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
529 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
529 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
530 <head>
530 <head>
531 <link rel="icon" href="/static/hgicon.png" type="image/png" />
531 <link rel="icon" href="/static/hgicon.png" type="image/png" />
532 <meta name="robots" content="index, nofollow" />
532 <meta name="robots" content="index, nofollow" />
533 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
533 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
534 <script type="text/javascript" src="/static/mercurial.js"></script>
534 <script type="text/javascript" src="/static/mercurial.js"></script>
535
535
536 <title>test: a4f92ed23982 foo</title>
536 <title>test: a4f92ed23982 foo</title>
537 </head>
537 </head>
538 <body>
538 <body>
539
539
540 <div class="container">
540 <div class="container">
541 <div class="menu">
541 <div class="menu">
542 <div class="logo">
542 <div class="logo">
543 <a href="http://mercurial.selenic.com/">
543 <a href="http://mercurial.selenic.com/">
544 <img src="/static/hglogo.png" alt="mercurial" /></a>
544 <img src="/static/hglogo.png" alt="mercurial" /></a>
545 </div>
545 </div>
546 <ul>
546 <ul>
547 <li><a href="/shortlog/a4f92ed23982">log</a></li>
547 <li><a href="/shortlog/a4f92ed23982">log</a></li>
548 <li><a href="/graph/a4f92ed23982">graph</a></li>
548 <li><a href="/graph/a4f92ed23982">graph</a></li>
549 <li><a href="/tags">tags</a></li>
549 <li><a href="/tags">tags</a></li>
550 <li><a href="/branches">branches</a></li>
550 <li><a href="/branches">branches</a></li>
551 </ul>
551 </ul>
552 <ul>
552 <ul>
553 <li><a href="/rev/a4f92ed23982">changeset</a></li>
553 <li><a href="/rev/a4f92ed23982">changeset</a></li>
554 <li><a href="/file/a4f92ed23982/">browse</a></li>
554 <li><a href="/file/a4f92ed23982/">browse</a></li>
555 </ul>
555 </ul>
556 <ul>
556 <ul>
557 <li class="active">file</li>
557 <li class="active">file</li>
558 <li><a href="/file/tip/foo">latest</a></li>
558 <li><a href="/file/tip/foo">latest</a></li>
559 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
559 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
560 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
560 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
561 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
561 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
562 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
562 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
563 </ul>
563 </ul>
564 <ul>
564 <ul>
565 <li><a href="/help">help</a></li>
565 <li><a href="/help">help</a></li>
566 </ul>
566 </ul>
567 </div>
567 </div>
568
568
569 <div class="main">
569 <div class="main">
570 <h2><a href="/">test</a></h2>
570 <h2><a href="/">test</a></h2>
571 <h3>view foo @ 1:a4f92ed23982</h3>
571 <h3>view foo @ 1:a4f92ed23982</h3>
572
572
573 <form class="search" action="/log">
573 <form class="search" action="/log">
574
574
575 <p><input name="rev" id="search1" type="text" size="30" /></p>
575 <p><input name="rev" id="search1" type="text" size="30" /></p>
576 <div id="hint">find changesets by author, revision,
576 <div id="hint">find changesets by author, revision,
577 files, or words in the commit message</div>
577 files, or words in the commit message</div>
578 </form>
578 </form>
579
579
580 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
580 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
581
581
582 <table id="changesetEntry">
582 <table id="changesetEntry">
583 <tr>
583 <tr>
584 <th class="author">author</th>
584 <th class="author">author</th>
585 <td class="author">&#116;&#101;&#115;&#116;</td>
585 <td class="author">&#116;&#101;&#115;&#116;</td>
586 </tr>
586 </tr>
587 <tr>
587 <tr>
588 <th class="date">date</th>
588 <th class="date">date</th>
589 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
589 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
590 </tr>
590 </tr>
591 <tr>
591 <tr>
592 <th class="author">parents</th>
592 <th class="author">parents</th>
593 <td class="author"></td>
593 <td class="author"></td>
594 </tr>
594 </tr>
595 <tr>
595 <tr>
596 <th class="author">children</th>
596 <th class="author">children</th>
597 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
597 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
598 </tr>
598 </tr>
599
599
600 </table>
600 </table>
601
601
602 <div class="overflow">
602 <div class="overflow">
603 <div class="sourcefirst"> line source</div>
603 <div class="sourcefirst"> line source</div>
604
604
605 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
605 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
606 </div>
606 </div>
607 <div class="sourcelast"></div>
607 <div class="sourcelast"></div>
608 </div>
608 </div>
609 </div>
609 </div>
610 </div>
610 </div>
611
611
612 <script type="text/javascript">process_dates()</script>
612 <script type="text/javascript">process_dates()</script>
613
613
614
614
615 </body>
615 </body>
616 </html>
616 </html>
617
617
618 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
618 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
619 200 Script output follows
619 200 Script output follows
620
620
621
621
622 diff -r 000000000000 -r a4f92ed23982 foo
622 diff -r 000000000000 -r a4f92ed23982 foo
623 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
623 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
624 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
624 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
625 @@ -0,0 +1,1 @@
625 @@ -0,0 +1,1 @@
626 +foo
626 +foo
627
627
628
628
629
629
630
630
631
631
632 Overviews
632 Overviews
633
633
634 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
634 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
635 200 Script output follows
635 200 Script output follows
636
636
637 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
637 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
638 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
638 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
639 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
639 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
640 200 Script output follows
640 200 Script output follows
641
641
642 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
642 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
643 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
643 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
644 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-bookmarks'
644 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-bookmarks'
645 200 Script output follows
645 200 Script output follows
646
646
647 anotherthing 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
647 anotherthing 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
648 something 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
648 something 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
649 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
649 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
650 200 Script output follows
650 200 Script output follows
651
651
652 <?xml version="1.0" encoding="ascii"?>
652 <?xml version="1.0" encoding="ascii"?>
653 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
653 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
654 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
654 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
655 <head>
655 <head>
656 <link rel="icon" href="/static/hgicon.png" type="image/png" />
656 <link rel="icon" href="/static/hgicon.png" type="image/png" />
657 <meta name="robots" content="index, nofollow"/>
657 <meta name="robots" content="index, nofollow"/>
658 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
658 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
659 <script type="text/javascript" src="/static/mercurial.js"></script>
659 <script type="text/javascript" src="/static/mercurial.js"></script>
660
660
661 <title>test: Summary</title>
661 <title>test: Summary</title>
662 <link rel="alternate" type="application/atom+xml"
662 <link rel="alternate" type="application/atom+xml"
663 href="/atom-log" title="Atom feed for test"/>
663 href="/atom-log" title="Atom feed for test"/>
664 <link rel="alternate" type="application/rss+xml"
664 <link rel="alternate" type="application/rss+xml"
665 href="/rss-log" title="RSS feed for test"/>
665 href="/rss-log" title="RSS feed for test"/>
666 </head>
666 </head>
667 <body>
667 <body>
668
668
669 <div class="page_header">
669 <div class="page_header">
670 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
670 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
671
671
672 <form action="/log">
672 <form action="/log">
673 <input type="hidden" name="style" value="gitweb" />
673 <input type="hidden" name="style" value="gitweb" />
674 <div class="search">
674 <div class="search">
675 <input type="text" name="rev" />
675 <input type="text" name="rev" />
676 </div>
676 </div>
677 </form>
677 </form>
678 </div>
678 </div>
679
679
680 <div class="page_nav">
680 <div class="page_nav">
681 summary |
681 summary |
682 <a href="/shortlog?style=gitweb">shortlog</a> |
682 <a href="/shortlog?style=gitweb">shortlog</a> |
683 <a href="/log?style=gitweb">changelog</a> |
683 <a href="/log?style=gitweb">changelog</a> |
684 <a href="/graph?style=gitweb">graph</a> |
684 <a href="/graph?style=gitweb">graph</a> |
685 <a href="/tags?style=gitweb">tags</a> |
685 <a href="/tags?style=gitweb">tags</a> |
686 <a href="/bookmarks?style=gitweb">bookmarks</a> |
686 <a href="/bookmarks?style=gitweb">bookmarks</a> |
687 <a href="/branches?style=gitweb">branches</a> |
687 <a href="/branches?style=gitweb">branches</a> |
688 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
688 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
689 <a href="/help?style=gitweb">help</a>
689 <a href="/help?style=gitweb">help</a>
690 <br/>
690 <br/>
691 </div>
691 </div>
692
692
693 <div class="title">&nbsp;</div>
693 <div class="title">&nbsp;</div>
694 <table cellspacing="0">
694 <table cellspacing="0">
695 <tr><td>description</td><td>unknown</td></tr>
695 <tr><td>description</td><td>unknown</td></tr>
696 <tr><td>owner</td><td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td></tr>
696 <tr><td>owner</td><td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td></tr>
697 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
697 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
698 </table>
698 </table>
699
699
700 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
700 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
701 <table cellspacing="0">
701 <table cellspacing="0">
702
702
703 <tr class="parity0">
703 <tr class="parity0">
704 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
704 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
705 <td><i>test</i></td>
705 <td><i>test</i></td>
706 <td>
706 <td>
707 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
707 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
708 <b>branch</b>
708 <b>branch</b>
709 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> <span class="bookmarktag" title="something">something</span> </span>
709 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> <span class="bookmarktag" title="something">something</span> </span>
710 </a>
710 </a>
711 </td>
711 </td>
712 <td class="link" nowrap>
712 <td class="link" nowrap>
713 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
713 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
714 <a href="/file/1d22e65f027e?style=gitweb">files</a>
714 <a href="/file/1d22e65f027e?style=gitweb">files</a>
715 </td>
715 </td>
716 </tr>
716 </tr>
717 <tr class="parity1">
717 <tr class="parity1">
718 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
718 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
719 <td><i>test</i></td>
719 <td><i>test</i></td>
720 <td>
720 <td>
721 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
721 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
722 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
722 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
723 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
723 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
724 </a>
724 </a>
725 </td>
725 </td>
726 <td class="link" nowrap>
726 <td class="link" nowrap>
727 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
727 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
728 <a href="/file/a4f92ed23982?style=gitweb">files</a>
728 <a href="/file/a4f92ed23982?style=gitweb">files</a>
729 </td>
729 </td>
730 </tr>
730 </tr>
731 <tr class="parity0">
731 <tr class="parity0">
732 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
732 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
733 <td><i>test</i></td>
733 <td><i>test</i></td>
734 <td>
734 <td>
735 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
735 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
736 <b>base</b>
736 <b>base</b>
737 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> <span class="bookmarktag" title="anotherthing">anotherthing</span> </span>
737 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> <span class="bookmarktag" title="anotherthing">anotherthing</span> </span>
738 </a>
738 </a>
739 </td>
739 </td>
740 <td class="link" nowrap>
740 <td class="link" nowrap>
741 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
741 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
742 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
742 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
743 </td>
743 </td>
744 </tr>
744 </tr>
745 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
745 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
746 </table>
746 </table>
747
747
748 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
748 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
749 <table cellspacing="0">
749 <table cellspacing="0">
750
750
751 <tr class="parity0">
751 <tr class="parity0">
752 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
752 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
753 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
753 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
754 <td class="link">
754 <td class="link">
755 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
755 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
756 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
756 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
757 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
757 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
758 </td>
758 </td>
759 </tr>
759 </tr>
760 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
760 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
761 </table>
761 </table>
762
762
763 <div><a class="title" href="/bookmarks?style=gitweb">bookmarks</a></div>
763 <div><a class="title" href="/bookmarks?style=gitweb">bookmarks</a></div>
764 <table cellspacing="0">
764 <table cellspacing="0">
765
765
766 <tr class="parity0">
766 <tr class="parity0">
767 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
767 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
768 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>anotherthing</b></a></td>
768 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>anotherthing</b></a></td>
769 <td class="link">
769 <td class="link">
770 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
770 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
771 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
771 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
772 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
772 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
773 </td>
773 </td>
774 </tr>
774 </tr>
775 <tr class="parity1">
775 <tr class="parity1">
776 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
776 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
777 <td><a class="list" href="/rev/1d22e65f027e?style=gitweb"><b>something</b></a></td>
777 <td><a class="list" href="/rev/1d22e65f027e?style=gitweb"><b>something</b></a></td>
778 <td class="link">
778 <td class="link">
779 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
779 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
780 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
780 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
781 <a href="/file/1d22e65f027e?style=gitweb">files</a>
781 <a href="/file/1d22e65f027e?style=gitweb">files</a>
782 </td>
782 </td>
783 </tr>
783 </tr>
784 <tr class="light"><td colspan="3"><a class="list" href="/bookmarks?style=gitweb">...</a></td></tr>
784 <tr class="light"><td colspan="3"><a class="list" href="/bookmarks?style=gitweb">...</a></td></tr>
785 </table>
785 </table>
786
786
787 <div><a class="title" href="#">branches</a></div>
787 <div><a class="title" href="#">branches</a></div>
788 <table cellspacing="0">
788 <table cellspacing="0">
789
789
790 <tr class="parity0">
790 <tr class="parity0">
791 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
791 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
792 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
792 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
793 <td class="">stable</td>
793 <td class="">stable</td>
794 <td class="link">
794 <td class="link">
795 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
795 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
796 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
796 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
797 <a href="/file/1d22e65f027e?style=gitweb">files</a>
797 <a href="/file/1d22e65f027e?style=gitweb">files</a>
798 </td>
798 </td>
799 </tr>
799 </tr>
800 <tr class="parity1">
800 <tr class="parity1">
801 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
801 <td class="age"><i class="age">Thu, 01 Jan 1970 00:00:00 +0000</i></td>
802 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
802 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
803 <td class="">default</td>
803 <td class="">default</td>
804 <td class="link">
804 <td class="link">
805 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
805 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
806 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
806 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
807 <a href="/file/a4f92ed23982?style=gitweb">files</a>
807 <a href="/file/a4f92ed23982?style=gitweb">files</a>
808 </td>
808 </td>
809 </tr>
809 </tr>
810 <tr class="light">
810 <tr class="light">
811 <td colspan="4"><a class="list" href="#">...</a></td>
811 <td colspan="4"><a class="list" href="#">...</a></td>
812 </tr>
812 </tr>
813 </table>
813 </table>
814 <script type="text/javascript">process_dates()</script>
814 <script type="text/javascript">process_dates()</script>
815 <div class="page_footer">
815 <div class="page_footer">
816 <div class="page_footer_text">test</div>
816 <div class="page_footer_text">test</div>
817 <div class="rss_logo">
817 <div class="rss_logo">
818 <a href="/rss-log">RSS</a>
818 <a href="/rss-log">RSS</a>
819 <a href="/atom-log">Atom</a>
819 <a href="/atom-log">Atom</a>
820 </div>
820 </div>
821 <br />
821 <br />
822
822
823 </div>
823 </div>
824 </body>
824 </body>
825 </html>
825 </html>
826
826
827 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
827 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
828 200 Script output follows
828 200 Script output follows
829
829
830 <?xml version="1.0" encoding="ascii"?>
830 <?xml version="1.0" encoding="ascii"?>
831 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
831 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
832 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
832 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
833 <head>
833 <head>
834 <link rel="icon" href="/static/hgicon.png" type="image/png" />
834 <link rel="icon" href="/static/hgicon.png" type="image/png" />
835 <meta name="robots" content="index, nofollow"/>
835 <meta name="robots" content="index, nofollow"/>
836 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
836 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
837 <script type="text/javascript" src="/static/mercurial.js"></script>
837 <script type="text/javascript" src="/static/mercurial.js"></script>
838
838
839 <title>test: Graph</title>
839 <title>test: Graph</title>
840 <link rel="alternate" type="application/atom+xml"
840 <link rel="alternate" type="application/atom+xml"
841 href="/atom-log" title="Atom feed for test"/>
841 href="/atom-log" title="Atom feed for test"/>
842 <link rel="alternate" type="application/rss+xml"
842 <link rel="alternate" type="application/rss+xml"
843 href="/rss-log" title="RSS feed for test"/>
843 href="/rss-log" title="RSS feed for test"/>
844 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
844 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
845 </head>
845 </head>
846 <body>
846 <body>
847
847
848 <div class="page_header">
848 <div class="page_header">
849 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
849 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
850 </div>
850 </div>
851
851
852 <form action="/log">
852 <form action="/log">
853 <input type="hidden" name="style" value="gitweb" />
853 <input type="hidden" name="style" value="gitweb" />
854 <div class="search">
854 <div class="search">
855 <input type="text" name="rev" />
855 <input type="text" name="rev" />
856 </div>
856 </div>
857 </form>
857 </form>
858 <div class="page_nav">
858 <div class="page_nav">
859 <a href="/summary?style=gitweb">summary</a> |
859 <a href="/summary?style=gitweb">summary</a> |
860 <a href="/shortlog?style=gitweb">shortlog</a> |
860 <a href="/shortlog?style=gitweb">shortlog</a> |
861 <a href="/log/2?style=gitweb">changelog</a> |
861 <a href="/log/2?style=gitweb">changelog</a> |
862 graph |
862 graph |
863 <a href="/tags?style=gitweb">tags</a> |
863 <a href="/tags?style=gitweb">tags</a> |
864 <a href="/bookmarks?style=gitweb">bookmarks</a> |
864 <a href="/bookmarks?style=gitweb">bookmarks</a> |
865 <a href="/branches?style=gitweb">branches</a> |
865 <a href="/branches?style=gitweb">branches</a> |
866 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
866 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
867 <a href="/help?style=gitweb">help</a>
867 <a href="/help?style=gitweb">help</a>
868 <br/>
868 <br/>
869 <a href="/graph/2?style=gitweb&revcount=30">less</a>
869 <a href="/graph/2?style=gitweb&revcount=30">less</a>
870 <a href="/graph/2?style=gitweb&revcount=120">more</a>
870 <a href="/graph/2?style=gitweb&revcount=120">more</a>
871 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
871 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
872 </div>
872 </div>
873
873
874 <div class="title">&nbsp;</div>
874 <div class="title">&nbsp;</div>
875
875
876 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
876 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
877
877
878 <div id="wrapper">
878 <div id="wrapper">
879 <ul id="nodebgs"></ul>
879 <ul id="nodebgs"></ul>
880 <canvas id="graph" width="480" height="129"></canvas>
880 <canvas id="graph" width="480" height="129"></canvas>
881 <ul id="graphnodes"></ul>
881 <ul id="graphnodes"></ul>
882 </div>
882 </div>
883
883
884 <script>
884 <script>
885 <!-- hide script content
885 <!-- hide script content
886
886
887 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
887 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
888 var graph = new Graph();
888 var graph = new Graph();
889 graph.scale(39);
889 graph.scale(39);
890
890
891 graph.edge = function(x0, y0, x1, y1, color) {
891 graph.edge = function(x0, y0, x1, y1, color) {
892
892
893 this.setColor(color, 0.0, 0.65);
893 this.setColor(color, 0.0, 0.65);
894 this.ctx.beginPath();
894 this.ctx.beginPath();
895 this.ctx.moveTo(x0, y0);
895 this.ctx.moveTo(x0, y0);
896 this.ctx.lineTo(x1, y1);
896 this.ctx.lineTo(x1, y1);
897 this.ctx.stroke();
897 this.ctx.stroke();
898
898
899 }
899 }
900
900
901 var revlink = '<li style="_STYLE"><span class="desc">';
901 var revlink = '<li style="_STYLE"><span class="desc">';
902 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
902 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
903 revlink += '</span> _TAGS';
903 revlink += '</span> _TAGS';
904 revlink += '<span class="info">_DATE, by _USER</span></li>';
904 revlink += '<span class="info">_DATE, by _USER</span></li>';
905
905
906 graph.vertex = function(x, y, color, parity, cur) {
906 graph.vertex = function(x, y, color, parity, cur) {
907
907
908 this.ctx.beginPath();
908 this.ctx.beginPath();
909 color = this.setColor(color, 0.25, 0.75);
909 color = this.setColor(color, 0.25, 0.75);
910 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
910 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
911 this.ctx.fill();
911 this.ctx.fill();
912
912
913 var bg = '<li class="bg parity' + parity + '"></li>';
913 var bg = '<li class="bg parity' + parity + '"></li>';
914 var left = (this.columns + 1) * this.bg_height;
914 var left = (this.columns + 1) * this.bg_height;
915 var nstyle = 'padding-left: ' + left + 'px;';
915 var nstyle = 'padding-left: ' + left + 'px;';
916 var item = revlink.replace(/_STYLE/, nstyle);
916 var item = revlink.replace(/_STYLE/, nstyle);
917 item = item.replace(/_PARITY/, 'parity' + parity);
917 item = item.replace(/_PARITY/, 'parity' + parity);
918 item = item.replace(/_NODEID/, cur[0]);
918 item = item.replace(/_NODEID/, cur[0]);
919 item = item.replace(/_NODEID/, cur[0]);
919 item = item.replace(/_NODEID/, cur[0]);
920 item = item.replace(/_DESC/, cur[3]);
920 item = item.replace(/_DESC/, cur[3]);
921 item = item.replace(/_USER/, cur[4]);
921 item = item.replace(/_USER/, cur[4]);
922 item = item.replace(/_DATE/, cur[5]);
922 item = item.replace(/_DATE/, cur[5]);
923
923
924 var tagspan = '';
924 var tagspan = '';
925 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
925 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
926 tagspan = '<span class="logtags">';
926 tagspan = '<span class="logtags">';
927 if (cur[6][1]) {
927 if (cur[6][1]) {
928 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
928 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
929 tagspan += cur[6][0] + '</span> ';
929 tagspan += cur[6][0] + '</span> ';
930 } else if (!cur[6][1] && cur[6][0] != 'default') {
930 } else if (!cur[6][1] && cur[6][0] != 'default') {
931 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
931 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
932 tagspan += cur[6][0] + '</span> ';
932 tagspan += cur[6][0] + '</span> ';
933 }
933 }
934 if (cur[7].length) {
934 if (cur[7].length) {
935 for (var t in cur[7]) {
935 for (var t in cur[7]) {
936 var tag = cur[7][t];
936 var tag = cur[7][t];
937 tagspan += '<span class="tagtag">' + tag + '</span> ';
937 tagspan += '<span class="tagtag">' + tag + '</span> ';
938 }
938 }
939 }
939 }
940 if (cur[8].length) {
940 if (cur[8].length) {
941 for (var t in cur[8]) {
941 for (var t in cur[8]) {
942 var bookmark = cur[8][t];
942 var bookmark = cur[8][t];
943 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
943 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
944 }
944 }
945 }
945 }
946 tagspan += '</span>';
946 tagspan += '</span>';
947 }
947 }
948
948
949 item = item.replace(/_TAGS/, tagspan);
949 item = item.replace(/_TAGS/, tagspan);
950 return [bg, item];
950 return [bg, item];
951
951
952 }
952 }
953
953
954 graph.render(data);
954 graph.render(data);
955
955
956 // stop hiding script -->
956 // stop hiding script -->
957 </script>
957 </script>
958
958
959 <div class="page_nav">
959 <div class="page_nav">
960 <a href="/graph/2?style=gitweb&revcount=30">less</a>
960 <a href="/graph/2?style=gitweb&revcount=30">less</a>
961 <a href="/graph/2?style=gitweb&revcount=120">more</a>
961 <a href="/graph/2?style=gitweb&revcount=120">more</a>
962 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
962 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
963 </div>
963 </div>
964
964
965 <script type="text/javascript">process_dates()</script>
965 <script type="text/javascript">process_dates()</script>
966 <div class="page_footer">
966 <div class="page_footer">
967 <div class="page_footer_text">test</div>
967 <div class="page_footer_text">test</div>
968 <div class="rss_logo">
968 <div class="rss_logo">
969 <a href="/rss-log">RSS</a>
969 <a href="/rss-log">RSS</a>
970 <a href="/atom-log">Atom</a>
970 <a href="/atom-log">Atom</a>
971 </div>
971 </div>
972 <br />
972 <br />
973
973
974 </div>
974 </div>
975 </body>
975 </body>
976 </html>
976 </html>
977
977
978
978
979 capabilities
979 capabilities
980
980
981 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
981 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
982 200 Script output follows
982 200 Script output follows
983
983
984 lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
984 lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
985
985
986 heads
986 heads
987
987
988 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
988 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
989 200 Script output follows
989 200 Script output follows
990
990
991 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
991 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
992
992
993 branches
993 branches
994
994
995 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
995 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
996 200 Script output follows
996 200 Script output follows
997
997
998 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
998 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
999
999
1000 changegroup
1000 changegroup
1001
1001
1002 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
1002 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
1003 200 Script output follows
1003 200 Script output follows
1004
1004
1005 x\x9c\xbdTMHUA\x14\xbe\xa8\xf9\xec\xda&\x10\x11*\xb8\x88\x81\x99\xbef\xe6\xce\xbdw\xc6\xf2a\x16E\x1b\x11[%\x98\xcc\xaf\x8f\x8c\xf7\xc0\xf7\x82 (esc)
1005 x\x9c\xbdTMHUA\x14\xbe\xa8\xf9\xec\xda&\x10\x11*\xb8\x88\x81\x99\xbef\xe6\xce\xbdw\xc6\xf2a\x16E\x1b\x11[%\x98\xcc\xaf\x8f\x8c\xf7\xc0\xf7\x82 (esc)
1006 4\x11KP2m\x95\xad*\xabE\x05AP\xd0\xc22Z\x14\xf9\x03\xb9j\xa3\x9b$\xa4MJ\xb4\x90\xc0\x9a\x9bO0\x10\xdf\x13\xa2\x81\x0f\x869g\xe6|\xe7\x9c\xef\x8ceY\xf7\xa2KO\xd2\xb7K\x16~\\n\xe9\xad\x90w\x86\xab\x93W\x8e\xdf\xb0r\\Y\xee6(\xa2)\xf6\x95\xc6\x01\xe4\x1az\x80R\xe8kN\x98\xe7R\xa4\xa9K@\xe0!A\xb4k\xa7U*m\x03\x07\xd8\x92\x1d\xd2\xc9\xa4\x1d\xc2\xe6,\xa5\xcc+\x1f\xef\xafDgi\xef\xab\x1d\x1d\xb7\x9a\xe7[W\xfbc\x8f\xde-\xcd\xe7\xcaz\xb3\xbb\x19\xd3\x81\x10>c>\x08\x00"X\x11\xc2\x84@\xd2\xe7B*L\x00\x01P\x04R\xc3@\xbaB0\xdb8#\x83:\x83\xa2h\xbc=\xcd\xdaS\xe1Y,L\xd3\xa0\xf2\xa8\x94J:\xe6\xd8\x81Q\xe0\xe8d\xa7#\xe2,\xd1\xaeR*\xed \xa5\x01\x13\x01\xa6\x0cb\xe3;\xbe\xaf\xfcK[^wK\xe1N\xaf\xbbk\xe8B\xd1\xf4\xc1\x07\xb3\xab[\x10\xfdkmvwcB\xa6\xa4\xd4G\xc4D\xc2\x141\xad\x91\x10\x00\x08J\x81\xcb}\xee \xee+W\xba\x8a\x80\x90|\xd4\xa0\xd6\xa0\xd4T\xde\xe1\x9d,!\xe2\xb5\xa94\xe3\xe7\xd5\x9f\x06\x18\xcba\x03aP\xb8f\xcd\x04\x1a_\\9\xf1\xed\xe4\x9e\xe5\xa6\xd1\xd2\x9f\x03\xa7o\xae\x90H\xf3\xfb\xef\xffH3\xadk (esc)
1006 4\x11KP2m\x95\xad*\xabE\x05AP\xd0\xc22Z\x14\xf9\x03\xb9j\xa3\x9b$\xa4MJ\xb4\x90\xc0\x9a\x9bO0\x10\xdf\x13\xa2\x81\x0f\x869g\xe6|\xe7\x9c\xef\x8ceY\xf7\xa2KO\xd2\xb7K\x16~\\n\xe9\xad\x90w\x86\xab\x93W\x8e\xdf\xb0r\\Y\xee6(\xa2)\xf6\x95\xc6\x01\xe4\x1az\x80R\xe8kN\x98\xe7R\xa4\xa9K@\xe0!A\xb4k\xa7U*m\x03\x07\xd8\x92\x1d\xd2\xc9\xa4\x1d\xc2\xe6,\xa5\xcc+\x1f\xef\xafDgi\xef\xab\x1d\x1d\xb7\x9a\xe7[W\xfbc\x8f\xde-\xcd\xe7\xcaz\xb3\xbb\x19\xd3\x81\x10>c>\x08\x00"X\x11\xc2\x84@\xd2\xe7B*L\x00\x01P\x04R\xc3@\xbaB0\xdb8#\x83:\x83\xa2h\xbc=\xcd\xdaS\xe1Y,L\xd3\xa0\xf2\xa8\x94J:\xe6\xd8\x81Q\xe0\xe8d\xa7#\xe2,\xd1\xaeR*\xed \xa5\x01\x13\x01\xa6\x0cb\xe3;\xbe\xaf\xfcK[^wK\xe1N\xaf\xbbk\xe8B\xd1\xf4\xc1\x07\xb3\xab[\x10\xfdkmvwcB\xa6\xa4\xd4G\xc4D\xc2\x141\xad\x91\x10\x00\x08J\x81\xcb}\xee \xee+W\xba\x8a\x80\x90|\xd4\xa0\xd6\xa0\xd4T\xde\xe1\x9d,!\xe2\xb5\xa94\xe3\xe7\xd5\x9f\x06\x18\xcba\x03aP\xb8f\xcd\x04\x1a_\\9\xf1\xed\xe4\x9e\xe5\xa6\xd1\xd2\x9f\x03\xa7o\xae\x90H\xf3\xfb\xef\xffH3\xadk (esc)
1007 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3'\x859 (esc)
1007 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3'\x859 (esc)
1008 \xa8\x80\x84S \xa5\xbd-g\x13`\xe4\xdc\xc3H^\xdf\xe2\xc0TM\xc7\xf4BO\xcf\xde\xae\xe5\xae#\x1frM(K\x97`F\x19\x16s\x05GD\xb9\x01\xc1\x00+\x8c|\x9fp\xc11\xf0\x14\x00\x9cJ\x82<\xe0\x12\x9f\xc1\x90\xd0\xf5\xc8\x19>Pr\xaa\xeaW\xf5\xc4\xae\xd1\xfc\x17\xcf'\x13u\xb1\x9e\xcdHnC\x0e\xcc`\xc8\xa0&\xac\x0e\xf1|\x8c\x10$\xc4\x8c\xa2p\x05`\xdc\x08 \x80\xc4\xd7Rr-\x94\x10\x102\xedi;\xf3f\xf1z\x16\x86\xdb\xd8d\xe5\xe7\x8b\xf5\x8d\rzp\xb2\xfe\xac\xf5\xf2\xd3\xfe\xfckws\xedt\x96b\xd5l\x1c\x0b\x85\xb5\x170\x8f\x11\x84\xb0\x8f\x19\xa0\x00 _\x07\x1ac\xa2\xc3\x89Z\xe7\x96\xf9 \xccNFg\xc7F\xaa\x8a+\x9a\x9cc_\x17\x1b\x17\x9e]z38<\x97+\xb5,",\xc8\xc8?\\\x91\xff\x17.~U\x96\x97\xf5%\xdeN<\x8e\xf5\x97%\xe7^\xcfL\xed~\xda\x96k\xdc->\x86\x02\x83"\x96H\xa6\xe3\xaas=-\xeb7\xe5\xda\x8f\xbc (no-eol) (esc)
1008 \xa8\x80\x84S \xa5\xbd-g\x13`\xe4\xdc\xc3H^\xdf\xe2\xc0TM\xc7\xf4BO\xcf\xde\xae\xe5\xae#\x1frM(K\x97`F\x19\x16s\x05GD\xb9\x01\xc1\x00+\x8c|\x9fp\xc11\xf0\x14\x00\x9cJ\x82<\xe0\x12\x9f\xc1\x90\xd0\xf5\xc8\x19>Pr\xaa\xeaW\xf5\xc4\xae\xd1\xfc\x17\xcf'\x13u\xb1\x9e\xcdHnC\x0e\xcc`\xc8\xa0&\xac\x0e\xf1|\x8c\x10$\xc4\x8c\xa2p\x05`\xdc\x08 \x80\xc4\xd7Rr-\x94\x10\x102\xedi;\xf3f\xf1z\x16\x86\xdb\xd8d\xe5\xe7\x8b\xf5\x8d\rzp\xb2\xfe\xac\xf5\xf2\xd3\xfe\xfckws\xedt\x96b\xd5l\x1c\x0b\x85\xb5\x170\x8f\x11\x84\xb0\x8f\x19\xa0\x00 _\x07\x1ac\xa2\xc3\x89Z\xe7\x96\xf9 \xccNFg\xc7F\xaa\x8a+\x9a\x9cc_\x17\x1b\x17\x9e]z38<\x97+\xb5,",\xc8\xc8?\\\x91\xff\x17.~U\x96\x97\xf5%\xdeN<\x8e\xf5\x97%\xe7^\xcfL\xed~\xda\x96k\xdc->\x86\x02\x83"\x96H\xa6\xe3\xaas=-\xeb7\xe5\xda\x8f\xbc (no-eol) (esc)
1009
1009
1010 stream_out
1010 stream_out
1011
1011
1012 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
1012 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
1013 200 Script output follows
1013 200 Script output follows
1014
1014
1015 1
1015 1
1016
1016
1017 failing unbundle, requires POST request
1017 failing unbundle, requires POST request
1018
1018
1019 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
1019 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
1020 405 push requires POST request
1020 405 push requires POST request
1021
1021
1022 0
1022 0
1023 push requires POST request
1023 push requires POST request
1024 [1]
1024 [1]
1025
1025
1026 Static files
1026 Static files
1027
1027
1028 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
1028 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
1029 200 Script output follows
1029 200 Script output follows
1030
1030
1031 a { text-decoration:none; }
1031 a { text-decoration:none; }
1032 .age { white-space:nowrap; }
1032 .age { white-space:nowrap; }
1033 .date { white-space:nowrap; }
1033 .date { white-space:nowrap; }
1034 .indexlinks { white-space:nowrap; }
1034 .indexlinks { white-space:nowrap; }
1035 .parity0 { background-color: #ddd; }
1035 .parity0 { background-color: #ddd; }
1036 .parity1 { background-color: #eee; }
1036 .parity1 { background-color: #eee; }
1037 .lineno { width: 60px; color: #aaa; font-size: smaller;
1037 .lineno { width: 60px; color: #aaa; font-size: smaller;
1038 text-align: right; }
1038 text-align: right; }
1039 .plusline { color: green; }
1039 .plusline { color: green; }
1040 .minusline { color: red; }
1040 .minusline { color: red; }
1041 .atline { color: purple; }
1041 .atline { color: purple; }
1042 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
1042 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
1043 .buttons a {
1043 .buttons a {
1044 background-color: #666;
1044 background-color: #666;
1045 padding: 2pt;
1045 padding: 2pt;
1046 color: white;
1046 color: white;
1047 font-family: sans;
1047 font-family: sans;
1048 font-weight: bold;
1048 font-weight: bold;
1049 }
1049 }
1050 .navigate a {
1050 .navigate a {
1051 background-color: #ccc;
1051 background-color: #ccc;
1052 padding: 2pt;
1052 padding: 2pt;
1053 font-family: sans;
1053 font-family: sans;
1054 color: black;
1054 color: black;
1055 }
1055 }
1056
1056
1057 .metatag {
1057 .metatag {
1058 background-color: #888;
1058 background-color: #888;
1059 color: white;
1059 color: white;
1060 text-align: right;
1060 text-align: right;
1061 }
1061 }
1062
1062
1063 /* Common */
1063 /* Common */
1064 pre { margin: 0; }
1064 pre { margin: 0; }
1065
1065
1066 .logo {
1066 .logo {
1067 float: right;
1067 float: right;
1068 clear: right;
1068 clear: right;
1069 }
1069 }
1070
1070
1071 /* Changelog/Filelog entries */
1071 /* Changelog/Filelog entries */
1072 .logEntry { width: 100%; }
1072 .logEntry { width: 100%; }
1073 .logEntry .age { width: 15%; }
1073 .logEntry .age { width: 15%; }
1074 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
1074 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
1075 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
1075 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
1076 .logEntry th.firstline { text-align: left; width: inherit; }
1076 .logEntry th.firstline { text-align: left; width: inherit; }
1077
1077
1078 /* Shortlog entries */
1078 /* Shortlog entries */
1079 .slogEntry { width: 100%; }
1079 .slogEntry { width: 100%; }
1080 .slogEntry .age { width: 8em; }
1080 .slogEntry .age { width: 8em; }
1081 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1081 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1082 .slogEntry td.author { width: 15em; }
1082 .slogEntry td.author { width: 15em; }
1083
1083
1084 /* Tag entries */
1084 /* Tag entries */
1085 #tagEntries { list-style: none; margin: 0; padding: 0; }
1085 #tagEntries { list-style: none; margin: 0; padding: 0; }
1086 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1086 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1087
1087
1088 /* Changeset entry */
1088 /* Changeset entry */
1089 #changesetEntry { }
1089 #changesetEntry { }
1090 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1090 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1091 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1091 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1092
1092
1093 /* File diff view */
1093 /* File diff view */
1094 #filediffEntry { }
1094 #filediffEntry { }
1095 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1095 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1096
1096
1097 /* Graph */
1097 /* Graph */
1098 div#wrapper {
1098 div#wrapper {
1099 position: relative;
1099 position: relative;
1100 margin: 0;
1100 margin: 0;
1101 padding: 0;
1101 padding: 0;
1102 }
1102 }
1103
1103
1104 canvas {
1104 canvas {
1105 position: absolute;
1105 position: absolute;
1106 z-index: 5;
1106 z-index: 5;
1107 top: -0.6em;
1107 top: -0.6em;
1108 margin: 0;
1108 margin: 0;
1109 }
1109 }
1110
1110
1111 ul#nodebgs {
1111 ul#nodebgs {
1112 list-style: none inside none;
1112 list-style: none inside none;
1113 padding: 0;
1113 padding: 0;
1114 margin: 0;
1114 margin: 0;
1115 top: -0.7em;
1115 top: -0.7em;
1116 }
1116 }
1117
1117
1118 ul#graphnodes li, ul#nodebgs li {
1118 ul#graphnodes li, ul#nodebgs li {
1119 height: 39px;
1119 height: 39px;
1120 }
1120 }
1121
1121
1122 ul#graphnodes {
1122 ul#graphnodes {
1123 position: absolute;
1123 position: absolute;
1124 z-index: 10;
1124 z-index: 10;
1125 top: -0.85em;
1125 top: -0.85em;
1126 list-style: none inside none;
1126 list-style: none inside none;
1127 padding: 0;
1127 padding: 0;
1128 }
1128 }
1129
1129
1130 ul#graphnodes li .info {
1130 ul#graphnodes li .info {
1131 display: block;
1131 display: block;
1132 font-size: 70%;
1132 font-size: 70%;
1133 position: relative;
1133 position: relative;
1134 top: -1px;
1134 top: -1px;
1135 }
1135 }
1136
1136
1137 Stop and restart with HGENCODING=cp932
1137 Stop and restart with HGENCODING=cp932
1138
1138
1139 $ "$TESTDIR/killdaemons.py"
1139 $ "$TESTDIR/killdaemons.py"
1140 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1140 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1141 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1141 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1142 $ cat hg.pid >> $DAEMON_PIDS
1142 $ cat hg.pid >> $DAEMON_PIDS
1143
1143
1144 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1144 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1145
1145
1146 $ echo foo >> foo
1146 $ echo foo >> foo
1147 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1147 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1148
1148
1149 Graph json escape of multibyte character
1149 Graph json escape of multibyte character
1150
1150
1151 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1151 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1152 > | grep '^var data ='
1152 > | grep '^var data ='
1153 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", false], [], []], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
1153 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", false], [], []], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
1154
1154
1155 ERRORS ENCOUNTERED
1155 ERRORS ENCOUNTERED
1156
1156
1157 $ cat errors.log
1157 $ cat errors.log
@@ -1,555 +1,555 b''
1 setting up repo
1 setting up repo
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo a > a
5 $ echo a > a
6 $ echo b > b
6 $ echo b > b
7 $ hg ci -Ama
7 $ hg ci -Ama
8 adding a
8 adding a
9 adding b
9 adding b
10
10
11 change permissions for git diffs
11 change permissions for git diffs
12
12
13 $ chmod 755 a
13 $ chmod 755 a
14 $ hg ci -Amb
14 $ hg ci -Amb
15
15
16 set up hgweb
16 set up hgweb
17
17
18 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
18 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
19 $ cat hg.pid >> $DAEMON_PIDS
19 $ cat hg.pid >> $DAEMON_PIDS
20
20
21 revision
21 revision
22
22
23 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
23 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
24 200 Script output follows
24 200 Script output follows
25
25
26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
27 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
27 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
28 <head>
28 <head>
29 <link rel="icon" href="/static/hgicon.png" type="image/png" />
29 <link rel="icon" href="/static/hgicon.png" type="image/png" />
30 <meta name="robots" content="index, nofollow" />
30 <meta name="robots" content="index, nofollow" />
31 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
31 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
32 <script type="text/javascript" src="/static/mercurial.js"></script>
32 <script type="text/javascript" src="/static/mercurial.js"></script>
33
33
34 <title>test: 0cd96de13884</title>
34 <title>test: 0cd96de13884</title>
35 </head>
35 </head>
36 <body>
36 <body>
37 <div class="container">
37 <div class="container">
38 <div class="menu">
38 <div class="menu">
39 <div class="logo">
39 <div class="logo">
40 <a href="http://mercurial.selenic.com/">
40 <a href="http://mercurial.selenic.com/">
41 <img src="/static/hglogo.png" alt="mercurial" /></a>
41 <img src="/static/hglogo.png" alt="mercurial" /></a>
42 </div>
42 </div>
43 <ul>
43 <ul>
44 <li><a href="/shortlog/0cd96de13884">log</a></li>
44 <li><a href="/shortlog/0cd96de13884">log</a></li>
45 <li><a href="/graph/0cd96de13884">graph</a></li>
45 <li><a href="/graph/0cd96de13884">graph</a></li>
46 <li><a href="/tags">tags</a></li>
46 <li><a href="/tags">tags</a></li>
47 <li><a href="/bookmarks">bookmarks</a></li>
47 <li><a href="/bookmarks">bookmarks</a></li>
48 <li><a href="/branches">branches</a></li>
48 <li><a href="/branches">branches</a></li>
49 </ul>
49 </ul>
50 <ul>
50 <ul>
51 <li class="active">changeset</li>
51 <li class="active">changeset</li>
52 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
52 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
53 <li><a href="/file/0cd96de13884">browse</a></li>
53 <li><a href="/file/0cd96de13884">browse</a></li>
54 </ul>
54 </ul>
55 <ul>
55 <ul>
56
56
57 </ul>
57 </ul>
58 <ul>
58 <ul>
59 <li><a href="/help">help</a></li>
59 <li><a href="/help">help</a></li>
60 </ul>
60 </ul>
61 </div>
61 </div>
62
62
63 <div class="main">
63 <div class="main">
64
64
65 <h2><a href="/">test</a></h2>
65 <h2><a href="/">test</a></h2>
66 <h3>changeset 0:0cd96de13884 </h3>
66 <h3>changeset 0:0cd96de13884 </h3>
67
67
68 <form class="search" action="/log">
68 <form class="search" action="/log">
69
69
70 <p><input name="rev" id="search1" type="text" size="30" /></p>
70 <p><input name="rev" id="search1" type="text" size="30" /></p>
71 <div id="hint">find changesets by author, revision,
71 <div id="hint">find changesets by author, revision,
72 files, or words in the commit message</div>
72 files, or words in the commit message</div>
73 </form>
73 </form>
74
74
75 <div class="description">a</div>
75 <div class="description">a</div>
76
76
77 <table id="changesetEntry">
77 <table id="changesetEntry">
78 <tr>
78 <tr>
79 <th class="author">author</th>
79 <th class="author">author</th>
80 <td class="author">&#116;&#101;&#115;&#116;</td>
80 <td class="author">&#116;&#101;&#115;&#116;</td>
81 </tr>
81 </tr>
82 <tr>
82 <tr>
83 <th class="date">date</th>
83 <th class="date">date</th>
84 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
84 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
85 <tr>
85 <tr>
86 <th class="author">parents</th>
86 <th class="author">parents</th>
87 <td class="author"></td>
87 <td class="author"></td>
88 </tr>
88 </tr>
89 <tr>
89 <tr>
90 <th class="author">children</th>
90 <th class="author">children</th>
91 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
91 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
92 </tr>
92 </tr>
93 <tr>
93 <tr>
94 <th class="files">files</th>
94 <th class="files">files</th>
95 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
95 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
96 </tr>
96 </tr>
97 <tr>
97 <tr>
98 <th class="diffstat">diffstat</th>
98 <th class="diffstat">diffstat</th>
99 <td class="diffstat">
99 <td class="diffstat">
100 2 files changed, 2 insertions(+), 0 deletions(-)
100 2 files changed, 2 insertions(+), 0 deletions(-)
101
101
102 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
102 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
103 <div id="diffstatdetails" style="display:none;">
103 <div id="diffstatdetails" style="display:none;">
104 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
104 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
105 <p>
105 <p>
106 <table> <tr class="parity0">
106 <table> <tr class="parity0">
107 <td class="diffstat-file"><a href="#l1.1">a</a></td>
107 <td class="diffstat-file"><a href="#l1.1">a</a></td>
108 <td class="diffstat-total" align="right">1</td>
108 <td class="diffstat-total" align="right">1</td>
109 <td class="diffstat-graph">
109 <td class="diffstat-graph">
110 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
110 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
111 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
111 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
112 </td>
112 </td>
113 </tr>
113 </tr>
114 <tr class="parity1">
114 <tr class="parity1">
115 <td class="diffstat-file"><a href="#l2.1">b</a></td>
115 <td class="diffstat-file"><a href="#l2.1">b</a></td>
116 <td class="diffstat-total" align="right">1</td>
116 <td class="diffstat-total" align="right">1</td>
117 <td class="diffstat-graph">
117 <td class="diffstat-graph">
118 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
118 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
119 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
119 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
120 </td>
120 </td>
121 </tr>
121 </tr>
122 </table>
122 </table>
123 </div>
123 </div>
124 </td>
124 </td>
125 </tr>
125 </tr>
126 </table>
126 </table>
127
127
128 <div class="overflow">
128 <div class="overflow">
129 <div class="sourcefirst"> line diff</div>
129 <div class="sourcefirst"> line diff</div>
130
130
131 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
131 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
132 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
132 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
133 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
133 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
134 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
134 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
135 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
135 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
136 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
136 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
137 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
137 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
138 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
138 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
139 </span></pre></div>
139 </span></pre></div>
140 </div>
140 </div>
141
141
142 </div>
142 </div>
143 </div>
143 </div>
144 <script type="text/javascript">process_dates()</script>
144 <script type="text/javascript">process_dates()</script>
145
145
146
146
147 </body>
147 </body>
148 </html>
148 </html>
149
149
150
150
151 raw revision
151 raw revision
152
152
153 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
153 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
154 200 Script output follows
154 200 Script output follows
155
155
156
156
157 # HG changeset patch
157 # HG changeset patch
158 # User test
158 # User test
159 # Date 0 0
159 # Date 0 0
160 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
160 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
161
161
162 a
162 a
163
163
164 diff -r 000000000000 -r 0cd96de13884 a
164 diff -r 000000000000 -r 0cd96de13884 a
165 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
165 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
166 +++ b/a Thu Jan 01 00:00:00 1970 +0000
166 +++ b/a Thu Jan 01 00:00:00 1970 +0000
167 @@ -0,0 +1,1 @@
167 @@ -0,0 +1,1 @@
168 +a
168 +a
169 diff -r 000000000000 -r 0cd96de13884 b
169 diff -r 000000000000 -r 0cd96de13884 b
170 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
170 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
171 +++ b/b Thu Jan 01 00:00:00 1970 +0000
171 +++ b/b Thu Jan 01 00:00:00 1970 +0000
172 @@ -0,0 +1,1 @@
172 @@ -0,0 +1,1 @@
173 +b
173 +b
174
174
175
175
176 diff removed file
176 diff removed file
177
177
178 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
178 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
179 200 Script output follows
179 200 Script output follows
180
180
181 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
181 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
182 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
182 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
183 <head>
183 <head>
184 <link rel="icon" href="/static/hgicon.png" type="image/png" />
184 <link rel="icon" href="/static/hgicon.png" type="image/png" />
185 <meta name="robots" content="index, nofollow" />
185 <meta name="robots" content="index, nofollow" />
186 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
186 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
187 <script type="text/javascript" src="/static/mercurial.js"></script>
187 <script type="text/javascript" src="/static/mercurial.js"></script>
188
188
189 <title>test: a diff</title>
189 <title>test: a diff</title>
190 </head>
190 </head>
191 <body>
191 <body>
192
192
193 <div class="container">
193 <div class="container">
194 <div class="menu">
194 <div class="menu">
195 <div class="logo">
195 <div class="logo">
196 <a href="http://mercurial.selenic.com/">
196 <a href="http://mercurial.selenic.com/">
197 <img src="/static/hglogo.png" alt="mercurial" /></a>
197 <img src="/static/hglogo.png" alt="mercurial" /></a>
198 </div>
198 </div>
199 <ul>
199 <ul>
200 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
200 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
201 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
201 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
202 <li><a href="/tags">tags</a></li>
202 <li><a href="/tags">tags</a></li>
203 <li><a href="/bookmarks">bookmarks</a></li>
203 <li><a href="/bookmarks">bookmarks</a></li>
204 <li><a href="/branches">branches</a></li>
204 <li><a href="/branches">branches</a></li>
205 </ul>
205 </ul>
206 <ul>
206 <ul>
207 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
207 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
208 <li><a href="/file/78e4ebad7cdf">browse</a></li>
208 <li><a href="/file/78e4ebad7cdf">browse</a></li>
209 </ul>
209 </ul>
210 <ul>
210 <ul>
211 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
211 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
212 <li><a href="/file/tip/a">latest</a></li>
212 <li><a href="/file/tip/a">latest</a></li>
213 <li class="active">diff</li>
213 <li class="active">diff</li>
214 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
214 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
215 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
215 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
216 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
216 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
217 </ul>
217 </ul>
218 <ul>
218 <ul>
219 <li><a href="/help">help</a></li>
219 <li><a href="/help">help</a></li>
220 </ul>
220 </ul>
221 </div>
221 </div>
222
222
223 <div class="main">
223 <div class="main">
224 <h2><a href="/">test</a></h2>
224 <h2><a href="/">test</a></h2>
225 <h3>diff a @ 1:78e4ebad7cdf</h3>
225 <h3>diff a @ 1:78e4ebad7cdf</h3>
226
226
227 <form class="search" action="/log">
227 <form class="search" action="/log">
228 <p></p>
228 <p></p>
229 <p><input name="rev" id="search1" type="text" size="30" /></p>
229 <p><input name="rev" id="search1" type="text" size="30" /></p>
230 <div id="hint">find changesets by author, revision,
230 <div id="hint">find changesets by author, revision,
231 files, or words in the commit message</div>
231 files, or words in the commit message</div>
232 </form>
232 </form>
233
233
234 <div class="description">b</div>
234 <div class="description">b</div>
235
235
236 <table id="changesetEntry">
236 <table id="changesetEntry">
237 <tr>
237 <tr>
238 <th>author</th>
238 <th>author</th>
239 <td>&#116;&#101;&#115;&#116;</td>
239 <td>&#116;&#101;&#115;&#116;</td>
240 </tr>
240 </tr>
241 <tr>
241 <tr>
242 <th>date</th>
242 <th>date</th>
243 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
243 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
244 </tr>
244 </tr>
245 <tr>
245 <tr>
246 <th>parents</th>
246 <th>parents</th>
247 <td></td>
247 <td></td>
248 </tr>
248 </tr>
249 <tr>
249 <tr>
250 <th>children</th>
250 <th>children</th>
251 <td></td>
251 <td></td>
252 </tr>
252 </tr>
253
253
254 </table>
254 </table>
255
255
256 <div class="overflow">
256 <div class="overflow">
257 <div class="sourcefirst"> line diff</div>
257 <div class="sourcefirst"> line diff</div>
258
258
259 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
259 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
260 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
260 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
261 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
261 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
262 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
262 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
263 </span></pre></div>
263 </span></pre></div>
264 </div>
264 </div>
265 </div>
265 </div>
266 </div>
266 </div>
267
267
268 <script type="text/javascript">process_dates()</script>
268 <script type="text/javascript">process_dates()</script>
269
269
270
270
271 </body>
271 </body>
272 </html>
272 </html>
273
273
274
274
275 set up hgweb with git diffs
275 set up hgweb with git diffs
276
276
277 $ "$TESTDIR/killdaemons.py"
277 $ "$TESTDIR/killdaemons.py"
278 $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
278 $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
279 $ cat hg.pid >> $DAEMON_PIDS
279 $ cat hg.pid >> $DAEMON_PIDS
280
280
281 revision
281 revision
282
282
283 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
283 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
284 200 Script output follows
284 200 Script output follows
285
285
286 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
286 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
287 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
287 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
288 <head>
288 <head>
289 <link rel="icon" href="/static/hgicon.png" type="image/png" />
289 <link rel="icon" href="/static/hgicon.png" type="image/png" />
290 <meta name="robots" content="index, nofollow" />
290 <meta name="robots" content="index, nofollow" />
291 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
291 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
292 <script type="text/javascript" src="/static/mercurial.js"></script>
292 <script type="text/javascript" src="/static/mercurial.js"></script>
293
293
294 <title>test: 0cd96de13884</title>
294 <title>test: 0cd96de13884</title>
295 </head>
295 </head>
296 <body>
296 <body>
297 <div class="container">
297 <div class="container">
298 <div class="menu">
298 <div class="menu">
299 <div class="logo">
299 <div class="logo">
300 <a href="http://mercurial.selenic.com/">
300 <a href="http://mercurial.selenic.com/">
301 <img src="/static/hglogo.png" alt="mercurial" /></a>
301 <img src="/static/hglogo.png" alt="mercurial" /></a>
302 </div>
302 </div>
303 <ul>
303 <ul>
304 <li><a href="/shortlog/0cd96de13884">log</a></li>
304 <li><a href="/shortlog/0cd96de13884">log</a></li>
305 <li><a href="/graph/0cd96de13884">graph</a></li>
305 <li><a href="/graph/0cd96de13884">graph</a></li>
306 <li><a href="/tags">tags</a></li>
306 <li><a href="/tags">tags</a></li>
307 <li><a href="/bookmarks">bookmarks</a></li>
307 <li><a href="/bookmarks">bookmarks</a></li>
308 <li><a href="/branches">branches</a></li>
308 <li><a href="/branches">branches</a></li>
309 </ul>
309 </ul>
310 <ul>
310 <ul>
311 <li class="active">changeset</li>
311 <li class="active">changeset</li>
312 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
312 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
313 <li><a href="/file/0cd96de13884">browse</a></li>
313 <li><a href="/file/0cd96de13884">browse</a></li>
314 </ul>
314 </ul>
315 <ul>
315 <ul>
316
316
317 </ul>
317 </ul>
318 <ul>
318 <ul>
319 <li><a href="/help">help</a></li>
319 <li><a href="/help">help</a></li>
320 </ul>
320 </ul>
321 </div>
321 </div>
322
322
323 <div class="main">
323 <div class="main">
324
324
325 <h2><a href="/">test</a></h2>
325 <h2><a href="/">test</a></h2>
326 <h3>changeset 0:0cd96de13884 </h3>
326 <h3>changeset 0:0cd96de13884 </h3>
327
327
328 <form class="search" action="/log">
328 <form class="search" action="/log">
329
329
330 <p><input name="rev" id="search1" type="text" size="30" /></p>
330 <p><input name="rev" id="search1" type="text" size="30" /></p>
331 <div id="hint">find changesets by author, revision,
331 <div id="hint">find changesets by author, revision,
332 files, or words in the commit message</div>
332 files, or words in the commit message</div>
333 </form>
333 </form>
334
334
335 <div class="description">a</div>
335 <div class="description">a</div>
336
336
337 <table id="changesetEntry">
337 <table id="changesetEntry">
338 <tr>
338 <tr>
339 <th class="author">author</th>
339 <th class="author">author</th>
340 <td class="author">&#116;&#101;&#115;&#116;</td>
340 <td class="author">&#116;&#101;&#115;&#116;</td>
341 </tr>
341 </tr>
342 <tr>
342 <tr>
343 <th class="date">date</th>
343 <th class="date">date</th>
344 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
344 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
345 <tr>
345 <tr>
346 <th class="author">parents</th>
346 <th class="author">parents</th>
347 <td class="author"></td>
347 <td class="author"></td>
348 </tr>
348 </tr>
349 <tr>
349 <tr>
350 <th class="author">children</th>
350 <th class="author">children</th>
351 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
351 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
352 </tr>
352 </tr>
353 <tr>
353 <tr>
354 <th class="files">files</th>
354 <th class="files">files</th>
355 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
355 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
356 </tr>
356 </tr>
357 <tr>
357 <tr>
358 <th class="diffstat">diffstat</th>
358 <th class="diffstat">diffstat</th>
359 <td class="diffstat">
359 <td class="diffstat">
360 2 files changed, 2 insertions(+), 0 deletions(-)
360 2 files changed, 2 insertions(+), 0 deletions(-)
361
361
362 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
362 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
363 <div id="diffstatdetails" style="display:none;">
363 <div id="diffstatdetails" style="display:none;">
364 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
364 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
365 <p>
365 <p>
366 <table> <tr class="parity0">
366 <table> <tr class="parity0">
367 <td class="diffstat-file"><a href="#l1.1">a</a></td>
367 <td class="diffstat-file"><a href="#l1.1">a</a></td>
368 <td class="diffstat-total" align="right">1</td>
368 <td class="diffstat-total" align="right">1</td>
369 <td class="diffstat-graph">
369 <td class="diffstat-graph">
370 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
370 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
371 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
371 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
372 </td>
372 </td>
373 </tr>
373 </tr>
374 <tr class="parity1">
374 <tr class="parity1">
375 <td class="diffstat-file"><a href="#l2.1">b</a></td>
375 <td class="diffstat-file"><a href="#l2.1">b</a></td>
376 <td class="diffstat-total" align="right">1</td>
376 <td class="diffstat-total" align="right">1</td>
377 <td class="diffstat-graph">
377 <td class="diffstat-graph">
378 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
378 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
379 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
379 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
380 </td>
380 </td>
381 </tr>
381 </tr>
382 </table>
382 </table>
383 </div>
383 </div>
384 </td>
384 </td>
385 </tr>
385 </tr>
386 </table>
386 </table>
387
387
388 <div class="overflow">
388 <div class="overflow">
389 <div class="sourcefirst"> line diff</div>
389 <div class="sourcefirst"> line diff</div>
390
390
391 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
391 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
392 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
392 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
393 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
393 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
394 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
394 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
395 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
395 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
396 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
396 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
397 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
397 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
398 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
398 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
399 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
399 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
400 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
400 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
401 </span></pre></div>
401 </span></pre></div>
402 </div>
402 </div>
403
403
404 </div>
404 </div>
405 </div>
405 </div>
406 <script type="text/javascript">process_dates()</script>
406 <script type="text/javascript">process_dates()</script>
407
407
408
408
409 </body>
409 </body>
410 </html>
410 </html>
411
411
412
412
413 revision
413 revision
414
414
415 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
415 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
416 200 Script output follows
416 200 Script output follows
417
417
418
418
419 # HG changeset patch
419 # HG changeset patch
420 # User test
420 # User test
421 # Date 0 0
421 # Date 0 0
422 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
422 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
423
423
424 a
424 a
425
425
426 diff --git a/a b/a
426 diff --git a/a b/a
427 new file mode 100644
427 new file mode 100644
428 --- /dev/null
428 --- /dev/null
429 +++ b/a
429 +++ b/a
430 @@ -0,0 +1,1 @@
430 @@ -0,0 +1,1 @@
431 +a
431 +a
432 diff --git a/b b/b
432 diff --git a/b b/b
433 new file mode 100644
433 new file mode 100644
434 --- /dev/null
434 --- /dev/null
435 +++ b/b
435 +++ b/b
436 @@ -0,0 +1,1 @@
436 @@ -0,0 +1,1 @@
437 +b
437 +b
438
438
439
439
440 diff removed file
440 diff removed file
441
441
442 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
442 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
443 200 Script output follows
443 200 Script output follows
444
444
445 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
445 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
446 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
446 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
447 <head>
447 <head>
448 <link rel="icon" href="/static/hgicon.png" type="image/png" />
448 <link rel="icon" href="/static/hgicon.png" type="image/png" />
449 <meta name="robots" content="index, nofollow" />
449 <meta name="robots" content="index, nofollow" />
450 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
450 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
451 <script type="text/javascript" src="/static/mercurial.js"></script>
451 <script type="text/javascript" src="/static/mercurial.js"></script>
452
452
453 <title>test: a diff</title>
453 <title>test: a diff</title>
454 </head>
454 </head>
455 <body>
455 <body>
456
456
457 <div class="container">
457 <div class="container">
458 <div class="menu">
458 <div class="menu">
459 <div class="logo">
459 <div class="logo">
460 <a href="http://mercurial.selenic.com/">
460 <a href="http://mercurial.selenic.com/">
461 <img src="/static/hglogo.png" alt="mercurial" /></a>
461 <img src="/static/hglogo.png" alt="mercurial" /></a>
462 </div>
462 </div>
463 <ul>
463 <ul>
464 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
464 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
465 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
465 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
466 <li><a href="/tags">tags</a></li>
466 <li><a href="/tags">tags</a></li>
467 <li><a href="/bookmarks">bookmarks</a></li>
467 <li><a href="/bookmarks">bookmarks</a></li>
468 <li><a href="/branches">branches</a></li>
468 <li><a href="/branches">branches</a></li>
469 </ul>
469 </ul>
470 <ul>
470 <ul>
471 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
471 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
472 <li><a href="/file/78e4ebad7cdf">browse</a></li>
472 <li><a href="/file/78e4ebad7cdf">browse</a></li>
473 </ul>
473 </ul>
474 <ul>
474 <ul>
475 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
475 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
476 <li><a href="/file/tip/a">latest</a></li>
476 <li><a href="/file/tip/a">latest</a></li>
477 <li class="active">diff</li>
477 <li class="active">diff</li>
478 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
478 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
479 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
479 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
480 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
480 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
481 </ul>
481 </ul>
482 <ul>
482 <ul>
483 <li><a href="/help">help</a></li>
483 <li><a href="/help">help</a></li>
484 </ul>
484 </ul>
485 </div>
485 </div>
486
486
487 <div class="main">
487 <div class="main">
488 <h2><a href="/">test</a></h2>
488 <h2><a href="/">test</a></h2>
489 <h3>diff a @ 1:78e4ebad7cdf</h3>
489 <h3>diff a @ 1:78e4ebad7cdf</h3>
490
490
491 <form class="search" action="/log">
491 <form class="search" action="/log">
492 <p></p>
492 <p></p>
493 <p><input name="rev" id="search1" type="text" size="30" /></p>
493 <p><input name="rev" id="search1" type="text" size="30" /></p>
494 <div id="hint">find changesets by author, revision,
494 <div id="hint">find changesets by author, revision,
495 files, or words in the commit message</div>
495 files, or words in the commit message</div>
496 </form>
496 </form>
497
497
498 <div class="description">b</div>
498 <div class="description">b</div>
499
499
500 <table id="changesetEntry">
500 <table id="changesetEntry">
501 <tr>
501 <tr>
502 <th>author</th>
502 <th>author</th>
503 <td>&#116;&#101;&#115;&#116;</td>
503 <td>&#116;&#101;&#115;&#116;</td>
504 </tr>
504 </tr>
505 <tr>
505 <tr>
506 <th>date</th>
506 <th>date</th>
507 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
507 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
508 </tr>
508 </tr>
509 <tr>
509 <tr>
510 <th>parents</th>
510 <th>parents</th>
511 <td></td>
511 <td></td>
512 </tr>
512 </tr>
513 <tr>
513 <tr>
514 <th>children</th>
514 <th>children</th>
515 <td></td>
515 <td></td>
516 </tr>
516 </tr>
517
517
518 </table>
518 </table>
519
519
520 <div class="overflow">
520 <div class="overflow">
521 <div class="sourcefirst"> line diff</div>
521 <div class="sourcefirst"> line diff</div>
522
522
523 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
523 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
524 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
524 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
525 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
525 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
526 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
526 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
527 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
527 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
528 </span></pre></div>
528 </span></pre></div>
529 </div>
529 </div>
530 </div>
530 </div>
531 </div>
531 </div>
532
532
533 <script type="text/javascript">process_dates()</script>
533 <script type="text/javascript">process_dates()</script>
534
534
535
535
536 </body>
536 </body>
537 </html>
537 </html>
538
538
539 $ cd ..
539 $ cd ..
540
540
541 test import rev as raw-rev
541 test import rev as raw-rev
542
542
543 $ hg clone -r0 test test1
543 $ hg clone -r0 test test1
544 adding changesets
544 adding changesets
545 adding manifests
545 adding manifests
546 adding file changes
546 adding file changes
547 added 1 changesets with 2 changes to 2 files
547 added 1 changesets with 2 changes to 2 files
548 updating to branch default
548 updating to branch default
549 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
549 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
550 $ cd test1
550 $ cd test1
551 $ hg import -q --exact http://localhost:$HGPORT/rev/1
551 $ hg import -q --exact http://localhost:$HGPORT/rev/1
552
552
553 errors
553 errors
554
554
555 $ cat ../test/errors.log
555 $ cat ../test/errors.log
@@ -1,756 +1,756 b''
1
1
2 $ hg init test
2 $ hg init test
3 $ cd test
3 $ cd test
4 $ echo b > b
4 $ echo b > b
5 $ hg ci -Am "b"
5 $ hg ci -Am "b"
6 adding b
6 adding b
7 $ echo a > a
7 $ echo a > a
8 $ hg ci -Am "first a"
8 $ hg ci -Am "first a"
9 adding a
9 adding a
10 $ hg rm a
10 $ hg rm a
11 $ hg ci -m "del a"
11 $ hg ci -m "del a"
12 $ echo b > a
12 $ echo b > a
13 $ hg ci -Am "second a"
13 $ hg ci -Am "second a"
14 adding a
14 adding a
15 $ hg rm a
15 $ hg rm a
16 $ hg ci -m "del2 a"
16 $ hg ci -m "del2 a"
17 $ hg mv b c
17 $ hg mv b c
18 $ hg ci -m "mv b"
18 $ hg ci -m "mv b"
19 $ echo c >> c
19 $ echo c >> c
20 $ hg ci -m "change c"
20 $ hg ci -m "change c"
21 $ hg log -p
21 $ hg log -p
22 changeset: 6:b7682196df1c
22 changeset: 6:b7682196df1c
23 tag: tip
23 tag: tip
24 user: test
24 user: test
25 date: Thu Jan 01 00:00:00 1970 +0000
25 date: Thu Jan 01 00:00:00 1970 +0000
26 summary: change c
26 summary: change c
27
27
28 diff -r 1a6696706df2 -r b7682196df1c c
28 diff -r 1a6696706df2 -r b7682196df1c c
29 --- a/c Thu Jan 01 00:00:00 1970 +0000
29 --- a/c Thu Jan 01 00:00:00 1970 +0000
30 +++ b/c Thu Jan 01 00:00:00 1970 +0000
30 +++ b/c Thu Jan 01 00:00:00 1970 +0000
31 @@ -1,1 +1,2 @@
31 @@ -1,1 +1,2 @@
32 b
32 b
33 +c
33 +c
34
34
35 changeset: 5:1a6696706df2
35 changeset: 5:1a6696706df2
36 user: test
36 user: test
37 date: Thu Jan 01 00:00:00 1970 +0000
37 date: Thu Jan 01 00:00:00 1970 +0000
38 summary: mv b
38 summary: mv b
39
39
40 diff -r 52e848cdcd88 -r 1a6696706df2 b
40 diff -r 52e848cdcd88 -r 1a6696706df2 b
41 --- a/b Thu Jan 01 00:00:00 1970 +0000
41 --- a/b Thu Jan 01 00:00:00 1970 +0000
42 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
42 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
43 @@ -1,1 +0,0 @@
43 @@ -1,1 +0,0 @@
44 -b
44 -b
45 diff -r 52e848cdcd88 -r 1a6696706df2 c
45 diff -r 52e848cdcd88 -r 1a6696706df2 c
46 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
46 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
47 +++ b/c Thu Jan 01 00:00:00 1970 +0000
47 +++ b/c Thu Jan 01 00:00:00 1970 +0000
48 @@ -0,0 +1,1 @@
48 @@ -0,0 +1,1 @@
49 +b
49 +b
50
50
51 changeset: 4:52e848cdcd88
51 changeset: 4:52e848cdcd88
52 user: test
52 user: test
53 date: Thu Jan 01 00:00:00 1970 +0000
53 date: Thu Jan 01 00:00:00 1970 +0000
54 summary: del2 a
54 summary: del2 a
55
55
56 diff -r 01de2d66a28d -r 52e848cdcd88 a
56 diff -r 01de2d66a28d -r 52e848cdcd88 a
57 --- a/a Thu Jan 01 00:00:00 1970 +0000
57 --- a/a Thu Jan 01 00:00:00 1970 +0000
58 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
58 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
59 @@ -1,1 +0,0 @@
59 @@ -1,1 +0,0 @@
60 -b
60 -b
61
61
62 changeset: 3:01de2d66a28d
62 changeset: 3:01de2d66a28d
63 user: test
63 user: test
64 date: Thu Jan 01 00:00:00 1970 +0000
64 date: Thu Jan 01 00:00:00 1970 +0000
65 summary: second a
65 summary: second a
66
66
67 diff -r be3ebcc91739 -r 01de2d66a28d a
67 diff -r be3ebcc91739 -r 01de2d66a28d a
68 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
68 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
69 +++ b/a Thu Jan 01 00:00:00 1970 +0000
69 +++ b/a Thu Jan 01 00:00:00 1970 +0000
70 @@ -0,0 +1,1 @@
70 @@ -0,0 +1,1 @@
71 +b
71 +b
72
72
73 changeset: 2:be3ebcc91739
73 changeset: 2:be3ebcc91739
74 user: test
74 user: test
75 date: Thu Jan 01 00:00:00 1970 +0000
75 date: Thu Jan 01 00:00:00 1970 +0000
76 summary: del a
76 summary: del a
77
77
78 diff -r 5ed941583260 -r be3ebcc91739 a
78 diff -r 5ed941583260 -r be3ebcc91739 a
79 --- a/a Thu Jan 01 00:00:00 1970 +0000
79 --- a/a Thu Jan 01 00:00:00 1970 +0000
80 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
80 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
81 @@ -1,1 +0,0 @@
81 @@ -1,1 +0,0 @@
82 -a
82 -a
83
83
84 changeset: 1:5ed941583260
84 changeset: 1:5ed941583260
85 user: test
85 user: test
86 date: Thu Jan 01 00:00:00 1970 +0000
86 date: Thu Jan 01 00:00:00 1970 +0000
87 summary: first a
87 summary: first a
88
88
89 diff -r 6563da9dcf87 -r 5ed941583260 a
89 diff -r 6563da9dcf87 -r 5ed941583260 a
90 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
90 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
91 +++ b/a Thu Jan 01 00:00:00 1970 +0000
91 +++ b/a Thu Jan 01 00:00:00 1970 +0000
92 @@ -0,0 +1,1 @@
92 @@ -0,0 +1,1 @@
93 +a
93 +a
94
94
95 changeset: 0:6563da9dcf87
95 changeset: 0:6563da9dcf87
96 user: test
96 user: test
97 date: Thu Jan 01 00:00:00 1970 +0000
97 date: Thu Jan 01 00:00:00 1970 +0000
98 summary: b
98 summary: b
99
99
100 diff -r 000000000000 -r 6563da9dcf87 b
100 diff -r 000000000000 -r 6563da9dcf87 b
101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 +++ b/b Thu Jan 01 00:00:00 1970 +0000
102 +++ b/b Thu Jan 01 00:00:00 1970 +0000
103 @@ -0,0 +1,1 @@
103 @@ -0,0 +1,1 @@
104 +b
104 +b
105
105
106 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
106 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
107 $ cat hg.pid >> $DAEMON_PIDS
107 $ cat hg.pid >> $DAEMON_PIDS
108
108
109 tip - two revisions
109 tip - two revisions
110
110
111 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/a')
111 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/a')
112 200 Script output follows
112 200 Script output follows
113
113
114 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
114 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
115 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
115 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
116 <head>
116 <head>
117 <link rel="icon" href="/static/hgicon.png" type="image/png" />
117 <link rel="icon" href="/static/hgicon.png" type="image/png" />
118 <meta name="robots" content="index, nofollow" />
118 <meta name="robots" content="index, nofollow" />
119 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
119 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
120 <script type="text/javascript" src="/static/mercurial.js"></script>
120 <script type="text/javascript" src="/static/mercurial.js"></script>
121
121
122 <title>test: a history</title>
122 <title>test: a history</title>
123 <link rel="alternate" type="application/atom+xml"
123 <link rel="alternate" type="application/atom+xml"
124 href="/atom-log/tip/a" title="Atom feed for test:a" />
124 href="/atom-log/tip/a" title="Atom feed for test:a" />
125 <link rel="alternate" type="application/rss+xml"
125 <link rel="alternate" type="application/rss+xml"
126 href="/rss-log/tip/a" title="RSS feed for test:a" />
126 href="/rss-log/tip/a" title="RSS feed for test:a" />
127 </head>
127 </head>
128 <body>
128 <body>
129
129
130 <div class="container">
130 <div class="container">
131 <div class="menu">
131 <div class="menu">
132 <div class="logo">
132 <div class="logo">
133 <a href="http://mercurial.selenic.com/">
133 <a href="http://mercurial.selenic.com/">
134 <img src="/static/hglogo.png" alt="mercurial" /></a>
134 <img src="/static/hglogo.png" alt="mercurial" /></a>
135 </div>
135 </div>
136 <ul>
136 <ul>
137 <li><a href="/shortlog/01de2d66a28d">log</a></li>
137 <li><a href="/shortlog/01de2d66a28d">log</a></li>
138 <li><a href="/graph/01de2d66a28d">graph</a></li>
138 <li><a href="/graph/01de2d66a28d">graph</a></li>
139 <li><a href="/tags">tags</a></li>
139 <li><a href="/tags">tags</a></li>
140 <li><a href="/bookmarks">bookmarks</a></li>
140 <li><a href="/bookmarks">bookmarks</a></li>
141 <li><a href="/branches">branches</a></li>
141 <li><a href="/branches">branches</a></li>
142 </ul>
142 </ul>
143 <ul>
143 <ul>
144 <li><a href="/rev/01de2d66a28d">changeset</a></li>
144 <li><a href="/rev/01de2d66a28d">changeset</a></li>
145 <li><a href="/file/01de2d66a28d">browse</a></li>
145 <li><a href="/file/01de2d66a28d">browse</a></li>
146 </ul>
146 </ul>
147 <ul>
147 <ul>
148 <li><a href="/file/01de2d66a28d/a">file</a></li>
148 <li><a href="/file/01de2d66a28d/a">file</a></li>
149 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
149 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
150 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
150 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
151 <li class="active">file log</li>
151 <li class="active">file log</li>
152 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
152 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
153 </ul>
153 </ul>
154 <ul>
154 <ul>
155 <li><a href="/help">help</a></li>
155 <li><a href="/help">help</a></li>
156 </ul>
156 </ul>
157 </div>
157 </div>
158
158
159 <div class="main">
159 <div class="main">
160 <h2><a href="/">test</a></h2>
160 <h2><a href="/">test</a></h2>
161 <h3>log a</h3>
161 <h3>log a</h3>
162
162
163 <form class="search" action="/log">
163 <form class="search" action="/log">
164
164
165 <p><input name="rev" id="search1" type="text" size="30" /></p>
165 <p><input name="rev" id="search1" type="text" size="30" /></p>
166 <div id="hint">find changesets by author, revision,
166 <div id="hint">find changesets by author, revision,
167 files, or words in the commit message</div>
167 files, or words in the commit message</div>
168 </form>
168 </form>
169
169
170 <div class="navigate">
170 <div class="navigate">
171 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
171 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
172 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
172 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
173 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
173 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
174
174
175 <table class="bigtable">
175 <table class="bigtable">
176 <tr>
176 <tr>
177 <th class="age">age</th>
177 <th class="age">age</th>
178 <th class="author">author</th>
178 <th class="author">author</th>
179 <th class="description">description</th>
179 <th class="description">description</th>
180 </tr>
180 </tr>
181 <tr class="parity0">
181 <tr class="parity0">
182 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
182 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
183 <td class="author">test</td>
183 <td class="author">test</td>
184 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
184 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
185 </tr>
185 </tr>
186 <tr class="parity1">
186 <tr class="parity1">
187 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
187 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
188 <td class="author">test</td>
188 <td class="author">test</td>
189 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
189 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
190 </tr>
190 </tr>
191
191
192 </table>
192 </table>
193
193
194 <div class="navigate">
194 <div class="navigate">
195 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
195 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
196 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
196 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
197 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
197 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
198 </div>
198 </div>
199
199
200 </div>
200 </div>
201 </div>
201 </div>
202
202
203 <script type="text/javascript">process_dates()</script>
203 <script type="text/javascript">process_dates()</script>
204
204
205
205
206 </body>
206 </body>
207 </html>
207 </html>
208
208
209
209
210 second version - two revisions
210 second version - two revisions
211
211
212 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/3/a')
212 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/3/a')
213 200 Script output follows
213 200 Script output follows
214
214
215 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
215 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
216 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
216 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
217 <head>
217 <head>
218 <link rel="icon" href="/static/hgicon.png" type="image/png" />
218 <link rel="icon" href="/static/hgicon.png" type="image/png" />
219 <meta name="robots" content="index, nofollow" />
219 <meta name="robots" content="index, nofollow" />
220 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
220 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
221 <script type="text/javascript" src="/static/mercurial.js"></script>
221 <script type="text/javascript" src="/static/mercurial.js"></script>
222
222
223 <title>test: a history</title>
223 <title>test: a history</title>
224 <link rel="alternate" type="application/atom+xml"
224 <link rel="alternate" type="application/atom+xml"
225 href="/atom-log/tip/a" title="Atom feed for test:a" />
225 href="/atom-log/tip/a" title="Atom feed for test:a" />
226 <link rel="alternate" type="application/rss+xml"
226 <link rel="alternate" type="application/rss+xml"
227 href="/rss-log/tip/a" title="RSS feed for test:a" />
227 href="/rss-log/tip/a" title="RSS feed for test:a" />
228 </head>
228 </head>
229 <body>
229 <body>
230
230
231 <div class="container">
231 <div class="container">
232 <div class="menu">
232 <div class="menu">
233 <div class="logo">
233 <div class="logo">
234 <a href="http://mercurial.selenic.com/">
234 <a href="http://mercurial.selenic.com/">
235 <img src="/static/hglogo.png" alt="mercurial" /></a>
235 <img src="/static/hglogo.png" alt="mercurial" /></a>
236 </div>
236 </div>
237 <ul>
237 <ul>
238 <li><a href="/shortlog/01de2d66a28d">log</a></li>
238 <li><a href="/shortlog/01de2d66a28d">log</a></li>
239 <li><a href="/graph/01de2d66a28d">graph</a></li>
239 <li><a href="/graph/01de2d66a28d">graph</a></li>
240 <li><a href="/tags">tags</a></li>
240 <li><a href="/tags">tags</a></li>
241 <li><a href="/bookmarks">bookmarks</a></li>
241 <li><a href="/bookmarks">bookmarks</a></li>
242 <li><a href="/branches">branches</a></li>
242 <li><a href="/branches">branches</a></li>
243 </ul>
243 </ul>
244 <ul>
244 <ul>
245 <li><a href="/rev/01de2d66a28d">changeset</a></li>
245 <li><a href="/rev/01de2d66a28d">changeset</a></li>
246 <li><a href="/file/01de2d66a28d">browse</a></li>
246 <li><a href="/file/01de2d66a28d">browse</a></li>
247 </ul>
247 </ul>
248 <ul>
248 <ul>
249 <li><a href="/file/01de2d66a28d/a">file</a></li>
249 <li><a href="/file/01de2d66a28d/a">file</a></li>
250 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
250 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
251 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
251 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
252 <li class="active">file log</li>
252 <li class="active">file log</li>
253 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
253 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
254 </ul>
254 </ul>
255 <ul>
255 <ul>
256 <li><a href="/help">help</a></li>
256 <li><a href="/help">help</a></li>
257 </ul>
257 </ul>
258 </div>
258 </div>
259
259
260 <div class="main">
260 <div class="main">
261 <h2><a href="/">test</a></h2>
261 <h2><a href="/">test</a></h2>
262 <h3>log a</h3>
262 <h3>log a</h3>
263
263
264 <form class="search" action="/log">
264 <form class="search" action="/log">
265
265
266 <p><input name="rev" id="search1" type="text" size="30" /></p>
266 <p><input name="rev" id="search1" type="text" size="30" /></p>
267 <div id="hint">find changesets by author, revision,
267 <div id="hint">find changesets by author, revision,
268 files, or words in the commit message</div>
268 files, or words in the commit message</div>
269 </form>
269 </form>
270
270
271 <div class="navigate">
271 <div class="navigate">
272 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
272 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
273 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
273 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
274 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
274 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
275
275
276 <table class="bigtable">
276 <table class="bigtable">
277 <tr>
277 <tr>
278 <th class="age">age</th>
278 <th class="age">age</th>
279 <th class="author">author</th>
279 <th class="author">author</th>
280 <th class="description">description</th>
280 <th class="description">description</th>
281 </tr>
281 </tr>
282 <tr class="parity0">
282 <tr class="parity0">
283 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
283 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
284 <td class="author">test</td>
284 <td class="author">test</td>
285 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
285 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
286 </tr>
286 </tr>
287 <tr class="parity1">
287 <tr class="parity1">
288 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
288 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
289 <td class="author">test</td>
289 <td class="author">test</td>
290 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
290 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
291 </tr>
291 </tr>
292
292
293 </table>
293 </table>
294
294
295 <div class="navigate">
295 <div class="navigate">
296 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
296 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
297 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
297 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
298 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
298 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
299 </div>
299 </div>
300
300
301 </div>
301 </div>
302 </div>
302 </div>
303
303
304 <script type="text/javascript">process_dates()</script>
304 <script type="text/javascript">process_dates()</script>
305
305
306
306
307 </body>
307 </body>
308 </html>
308 </html>
309
309
310
310
311 first deleted - one revision
311 first deleted - one revision
312
312
313 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/2/a')
313 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/2/a')
314 200 Script output follows
314 200 Script output follows
315
315
316 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
316 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
317 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
317 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
318 <head>
318 <head>
319 <link rel="icon" href="/static/hgicon.png" type="image/png" />
319 <link rel="icon" href="/static/hgicon.png" type="image/png" />
320 <meta name="robots" content="index, nofollow" />
320 <meta name="robots" content="index, nofollow" />
321 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
321 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
322 <script type="text/javascript" src="/static/mercurial.js"></script>
322 <script type="text/javascript" src="/static/mercurial.js"></script>
323
323
324 <title>test: a history</title>
324 <title>test: a history</title>
325 <link rel="alternate" type="application/atom+xml"
325 <link rel="alternate" type="application/atom+xml"
326 href="/atom-log/tip/a" title="Atom feed for test:a" />
326 href="/atom-log/tip/a" title="Atom feed for test:a" />
327 <link rel="alternate" type="application/rss+xml"
327 <link rel="alternate" type="application/rss+xml"
328 href="/rss-log/tip/a" title="RSS feed for test:a" />
328 href="/rss-log/tip/a" title="RSS feed for test:a" />
329 </head>
329 </head>
330 <body>
330 <body>
331
331
332 <div class="container">
332 <div class="container">
333 <div class="menu">
333 <div class="menu">
334 <div class="logo">
334 <div class="logo">
335 <a href="http://mercurial.selenic.com/">
335 <a href="http://mercurial.selenic.com/">
336 <img src="/static/hglogo.png" alt="mercurial" /></a>
336 <img src="/static/hglogo.png" alt="mercurial" /></a>
337 </div>
337 </div>
338 <ul>
338 <ul>
339 <li><a href="/shortlog/5ed941583260">log</a></li>
339 <li><a href="/shortlog/5ed941583260">log</a></li>
340 <li><a href="/graph/5ed941583260">graph</a></li>
340 <li><a href="/graph/5ed941583260">graph</a></li>
341 <li><a href="/tags">tags</a></li>
341 <li><a href="/tags">tags</a></li>
342 <li><a href="/bookmarks">bookmarks</a></li>
342 <li><a href="/bookmarks">bookmarks</a></li>
343 <li><a href="/branches">branches</a></li>
343 <li><a href="/branches">branches</a></li>
344 </ul>
344 </ul>
345 <ul>
345 <ul>
346 <li><a href="/rev/5ed941583260">changeset</a></li>
346 <li><a href="/rev/5ed941583260">changeset</a></li>
347 <li><a href="/file/5ed941583260">browse</a></li>
347 <li><a href="/file/5ed941583260">browse</a></li>
348 </ul>
348 </ul>
349 <ul>
349 <ul>
350 <li><a href="/file/5ed941583260/a">file</a></li>
350 <li><a href="/file/5ed941583260/a">file</a></li>
351 <li><a href="/diff/5ed941583260/a">diff</a></li>
351 <li><a href="/diff/5ed941583260/a">diff</a></li>
352 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
352 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
353 <li class="active">file log</li>
353 <li class="active">file log</li>
354 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
354 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
355 </ul>
355 </ul>
356 <ul>
356 <ul>
357 <li><a href="/help">help</a></li>
357 <li><a href="/help">help</a></li>
358 </ul>
358 </ul>
359 </div>
359 </div>
360
360
361 <div class="main">
361 <div class="main">
362 <h2><a href="/">test</a></h2>
362 <h2><a href="/">test</a></h2>
363 <h3>log a</h3>
363 <h3>log a</h3>
364
364
365 <form class="search" action="/log">
365 <form class="search" action="/log">
366
366
367 <p><input name="rev" id="search1" type="text" size="30" /></p>
367 <p><input name="rev" id="search1" type="text" size="30" /></p>
368 <div id="hint">find changesets by author, revision,
368 <div id="hint">find changesets by author, revision,
369 files, or words in the commit message</div>
369 files, or words in the commit message</div>
370 </form>
370 </form>
371
371
372 <div class="navigate">
372 <div class="navigate">
373 <a href="/log/5ed941583260/a?revcount=30">less</a>
373 <a href="/log/5ed941583260/a?revcount=30">less</a>
374 <a href="/log/5ed941583260/a?revcount=120">more</a>
374 <a href="/log/5ed941583260/a?revcount=120">more</a>
375 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
375 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
376
376
377 <table class="bigtable">
377 <table class="bigtable">
378 <tr>
378 <tr>
379 <th class="age">age</th>
379 <th class="age">age</th>
380 <th class="author">author</th>
380 <th class="author">author</th>
381 <th class="description">description</th>
381 <th class="description">description</th>
382 </tr>
382 </tr>
383 <tr class="parity0">
383 <tr class="parity0">
384 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
384 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
385 <td class="author">test</td>
385 <td class="author">test</td>
386 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
386 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
387 </tr>
387 </tr>
388
388
389 </table>
389 </table>
390
390
391 <div class="navigate">
391 <div class="navigate">
392 <a href="/log/5ed941583260/a?revcount=30">less</a>
392 <a href="/log/5ed941583260/a?revcount=30">less</a>
393 <a href="/log/5ed941583260/a?revcount=120">more</a>
393 <a href="/log/5ed941583260/a?revcount=120">more</a>
394 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
394 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
395 </div>
395 </div>
396
396
397 </div>
397 </div>
398 </div>
398 </div>
399
399
400 <script type="text/javascript">process_dates()</script>
400 <script type="text/javascript">process_dates()</script>
401
401
402
402
403 </body>
403 </body>
404 </html>
404 </html>
405
405
406
406
407 first version - one revision
407 first version - one revision
408
408
409 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/1/a')
409 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/1/a')
410 200 Script output follows
410 200 Script output follows
411
411
412 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
412 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
413 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
413 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
414 <head>
414 <head>
415 <link rel="icon" href="/static/hgicon.png" type="image/png" />
415 <link rel="icon" href="/static/hgicon.png" type="image/png" />
416 <meta name="robots" content="index, nofollow" />
416 <meta name="robots" content="index, nofollow" />
417 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
417 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
418 <script type="text/javascript" src="/static/mercurial.js"></script>
418 <script type="text/javascript" src="/static/mercurial.js"></script>
419
419
420 <title>test: a history</title>
420 <title>test: a history</title>
421 <link rel="alternate" type="application/atom+xml"
421 <link rel="alternate" type="application/atom+xml"
422 href="/atom-log/tip/a" title="Atom feed for test:a" />
422 href="/atom-log/tip/a" title="Atom feed for test:a" />
423 <link rel="alternate" type="application/rss+xml"
423 <link rel="alternate" type="application/rss+xml"
424 href="/rss-log/tip/a" title="RSS feed for test:a" />
424 href="/rss-log/tip/a" title="RSS feed for test:a" />
425 </head>
425 </head>
426 <body>
426 <body>
427
427
428 <div class="container">
428 <div class="container">
429 <div class="menu">
429 <div class="menu">
430 <div class="logo">
430 <div class="logo">
431 <a href="http://mercurial.selenic.com/">
431 <a href="http://mercurial.selenic.com/">
432 <img src="/static/hglogo.png" alt="mercurial" /></a>
432 <img src="/static/hglogo.png" alt="mercurial" /></a>
433 </div>
433 </div>
434 <ul>
434 <ul>
435 <li><a href="/shortlog/5ed941583260">log</a></li>
435 <li><a href="/shortlog/5ed941583260">log</a></li>
436 <li><a href="/graph/5ed941583260">graph</a></li>
436 <li><a href="/graph/5ed941583260">graph</a></li>
437 <li><a href="/tags">tags</a></li>
437 <li><a href="/tags">tags</a></li>
438 <li><a href="/bookmarks">bookmarks</a></li>
438 <li><a href="/bookmarks">bookmarks</a></li>
439 <li><a href="/branches">branches</a></li>
439 <li><a href="/branches">branches</a></li>
440 </ul>
440 </ul>
441 <ul>
441 <ul>
442 <li><a href="/rev/5ed941583260">changeset</a></li>
442 <li><a href="/rev/5ed941583260">changeset</a></li>
443 <li><a href="/file/5ed941583260">browse</a></li>
443 <li><a href="/file/5ed941583260">browse</a></li>
444 </ul>
444 </ul>
445 <ul>
445 <ul>
446 <li><a href="/file/5ed941583260/a">file</a></li>
446 <li><a href="/file/5ed941583260/a">file</a></li>
447 <li><a href="/diff/5ed941583260/a">diff</a></li>
447 <li><a href="/diff/5ed941583260/a">diff</a></li>
448 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
448 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
449 <li class="active">file log</li>
449 <li class="active">file log</li>
450 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
450 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
451 </ul>
451 </ul>
452 <ul>
452 <ul>
453 <li><a href="/help">help</a></li>
453 <li><a href="/help">help</a></li>
454 </ul>
454 </ul>
455 </div>
455 </div>
456
456
457 <div class="main">
457 <div class="main">
458 <h2><a href="/">test</a></h2>
458 <h2><a href="/">test</a></h2>
459 <h3>log a</h3>
459 <h3>log a</h3>
460
460
461 <form class="search" action="/log">
461 <form class="search" action="/log">
462
462
463 <p><input name="rev" id="search1" type="text" size="30" /></p>
463 <p><input name="rev" id="search1" type="text" size="30" /></p>
464 <div id="hint">find changesets by author, revision,
464 <div id="hint">find changesets by author, revision,
465 files, or words in the commit message</div>
465 files, or words in the commit message</div>
466 </form>
466 </form>
467
467
468 <div class="navigate">
468 <div class="navigate">
469 <a href="/log/5ed941583260/a?revcount=30">less</a>
469 <a href="/log/5ed941583260/a?revcount=30">less</a>
470 <a href="/log/5ed941583260/a?revcount=120">more</a>
470 <a href="/log/5ed941583260/a?revcount=120">more</a>
471 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
471 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
472
472
473 <table class="bigtable">
473 <table class="bigtable">
474 <tr>
474 <tr>
475 <th class="age">age</th>
475 <th class="age">age</th>
476 <th class="author">author</th>
476 <th class="author">author</th>
477 <th class="description">description</th>
477 <th class="description">description</th>
478 </tr>
478 </tr>
479 <tr class="parity0">
479 <tr class="parity0">
480 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
480 <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
481 <td class="author">test</td>
481 <td class="author">test</td>
482 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
482 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
483 </tr>
483 </tr>
484
484
485 </table>
485 </table>
486
486
487 <div class="navigate">
487 <div class="navigate">
488 <a href="/log/5ed941583260/a?revcount=30">less</a>
488 <a href="/log/5ed941583260/a?revcount=30">less</a>
489 <a href="/log/5ed941583260/a?revcount=120">more</a>
489 <a href="/log/5ed941583260/a?revcount=120">more</a>
490 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
490 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
491 </div>
491 </div>
492
492
493 </div>
493 </div>
494 </div>
494 </div>
495
495
496 <script type="text/javascript">process_dates()</script>
496 <script type="text/javascript">process_dates()</script>
497
497
498
498
499 </body>
499 </body>
500 </html>
500 </html>
501
501
502
502
503 before addition - error
503 before addition - error
504
504
505 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/0/a')
505 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/0/a')
506 404 Not Found
506 404 Not Found
507
507
508 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
508 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
509 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
509 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
510 <head>
510 <head>
511 <link rel="icon" href="/static/hgicon.png" type="image/png" />
511 <link rel="icon" href="/static/hgicon.png" type="image/png" />
512 <meta name="robots" content="index, nofollow" />
512 <meta name="robots" content="index, nofollow" />
513 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
513 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
514 <script type="text/javascript" src="/static/mercurial.js"></script>
514 <script type="text/javascript" src="/static/mercurial.js"></script>
515
515
516 <title>test: error</title>
516 <title>test: error</title>
517 </head>
517 </head>
518 <body>
518 <body>
519
519
520 <div class="container">
520 <div class="container">
521 <div class="menu">
521 <div class="menu">
522 <div class="logo">
522 <div class="logo">
523 <a href="http://mercurial.selenic.com/">
523 <a href="http://mercurial.selenic.com/">
524 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
524 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
525 </div>
525 </div>
526 <ul>
526 <ul>
527 <li><a href="/shortlog">log</a></li>
527 <li><a href="/shortlog">log</a></li>
528 <li><a href="/graph">graph</a></li>
528 <li><a href="/graph">graph</a></li>
529 <li><a href="/tags">tags</a></li>
529 <li><a href="/tags">tags</a></li>
530 <li><a href="/bookmarks">bookmarks</a></li>
530 <li><a href="/bookmarks">bookmarks</a></li>
531 <li><a href="/branches">branches</a></li>
531 <li><a href="/branches">branches</a></li>
532 <li><a href="/help">help</a></li>
532 <li><a href="/help">help</a></li>
533 </ul>
533 </ul>
534 </div>
534 </div>
535
535
536 <div class="main">
536 <div class="main">
537
537
538 <h2><a href="/">test</a></h2>
538 <h2><a href="/">test</a></h2>
539 <h3>error</h3>
539 <h3>error</h3>
540
540
541 <form class="search" action="/log">
541 <form class="search" action="/log">
542
542
543 <p><input name="rev" id="search1" type="text" size="30"></p>
543 <p><input name="rev" id="search1" type="text" size="30"></p>
544 <div id="hint">find changesets by author, revision,
544 <div id="hint">find changesets by author, revision,
545 files, or words in the commit message</div>
545 files, or words in the commit message</div>
546 </form>
546 </form>
547
547
548 <div class="description">
548 <div class="description">
549 <p>
549 <p>
550 An error occurred while processing your request:
550 An error occurred while processing your request:
551 </p>
551 </p>
552 <p>
552 <p>
553 a@6563da9dcf87: not found in manifest
553 a@6563da9dcf87: not found in manifest
554 </p>
554 </p>
555 </div>
555 </div>
556 </div>
556 </div>
557 </div>
557 </div>
558
558
559 <script type="text/javascript">process_dates()</script>
559 <script type="text/javascript">process_dates()</script>
560
560
561
561
562 </body>
562 </body>
563 </html>
563 </html>
564
564
565 [1]
565 [1]
566
566
567 should show base link, use spartan because it shows it
567 should show base link, use spartan because it shows it
568
568
569 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/c?style=spartan')
569 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/c?style=spartan')
570 200 Script output follows
570 200 Script output follows
571
571
572 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
572 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
573 <html>
573 <html>
574 <head>
574 <head>
575 <link rel="icon" href="/static/hgicon.png" type="image/png">
575 <link rel="icon" href="/static/hgicon.png" type="image/png">
576 <meta name="robots" content="index, nofollow" />
576 <meta name="robots" content="index, nofollow" />
577 <link rel="stylesheet" href="/static/style.css" type="text/css" />
577 <link rel="stylesheet" href="/static/style.css" type="text/css" />
578 <script type="text/javascript" src="/static/mercurial.js"></script>
578 <script type="text/javascript" src="/static/mercurial.js"></script>
579
579
580 <title>test: c history</title>
580 <title>test: c history</title>
581 <link rel="alternate" type="application/atom+xml"
581 <link rel="alternate" type="application/atom+xml"
582 href="/atom-log/tip/c" title="Atom feed for test:c">
582 href="/atom-log/tip/c" title="Atom feed for test:c">
583 <link rel="alternate" type="application/rss+xml"
583 <link rel="alternate" type="application/rss+xml"
584 href="/rss-log/tip/c" title="RSS feed for test:c">
584 href="/rss-log/tip/c" title="RSS feed for test:c">
585 </head>
585 </head>
586 <body>
586 <body>
587
587
588 <div class="buttons">
588 <div class="buttons">
589 <a href="/log?style=spartan">changelog</a>
589 <a href="/log?style=spartan">changelog</a>
590 <a href="/shortlog?style=spartan">shortlog</a>
590 <a href="/shortlog?style=spartan">shortlog</a>
591 <a href="/graph?style=spartan">graph</a>
591 <a href="/graph?style=spartan">graph</a>
592 <a href="/tags?style=spartan">tags</a>
592 <a href="/tags?style=spartan">tags</a>
593 <a href="/branches?style=spartan">branches</a>
593 <a href="/branches?style=spartan">branches</a>
594 <a href="/file/b7682196df1c/c?style=spartan">file</a>
594 <a href="/file/b7682196df1c/c?style=spartan">file</a>
595 <a href="/annotate/b7682196df1c/c?style=spartan">annotate</a>
595 <a href="/annotate/b7682196df1c/c?style=spartan">annotate</a>
596 <a href="/help?style=spartan">help</a>
596 <a href="/help?style=spartan">help</a>
597 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
597 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
598 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
598 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
599 </div>
599 </div>
600
600
601 <h2>c revision history</h2>
601 <h2>c revision history</h2>
602
602
603 <p>navigate: <small class="navigate"><a href="/log/1a6696706df2/c?style=spartan">(0)</a> <a href="/log/tip/c?style=spartan">tip</a> </small></p>
603 <p>navigate: <small class="navigate"><a href="/log/1a6696706df2/c?style=spartan">(0)</a> <a href="/log/tip/c?style=spartan">tip</a> </small></p>
604
604
605 <table class="logEntry parity0">
605 <table class="logEntry parity0">
606 <tr>
606 <tr>
607 <th><span class="age">Thu Jan 01 00:00:00 1970 +0000</span>:</th>
607 <th><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>:</th>
608 <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
608 <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
609 </tr>
609 </tr>
610 <tr>
610 <tr>
611 <th class="revision">revision 1:</td>
611 <th class="revision">revision 1:</td>
612 <td class="node">
612 <td class="node">
613 <a href="/file/b7682196df1c/c?style=spartan">b7682196df1c</a>
613 <a href="/file/b7682196df1c/c?style=spartan">b7682196df1c</a>
614 <a href="/diff/b7682196df1c/c?style=spartan">(diff)</a>
614 <a href="/diff/b7682196df1c/c?style=spartan">(diff)</a>
615 <a href="/annotate/b7682196df1c/c?style=spartan">(annotate)</a>
615 <a href="/annotate/b7682196df1c/c?style=spartan">(annotate)</a>
616 </td>
616 </td>
617 </tr>
617 </tr>
618
618
619 <tr>
619 <tr>
620 <th class="author">author:</th>
620 <th class="author">author:</th>
621 <td class="author">&#116;&#101;&#115;&#116;</td>
621 <td class="author">&#116;&#101;&#115;&#116;</td>
622 </tr>
622 </tr>
623 <tr>
623 <tr>
624 <th class="date">date:</th>
624 <th class="date">date:</th>
625 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
625 <td class="date">Thu, 01 Jan 1970 00:00:00 +0000</td>
626 </tr>
626 </tr>
627 </table>
627 </table>
628
628
629
629
630 <table class="logEntry parity1">
630 <table class="logEntry parity1">
631 <tr>
631 <tr>
632 <th><span class="age">Thu Jan 01 00:00:00 1970 +0000</span>:</th>
632 <th><span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span>:</th>
633 <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
633 <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
634 </tr>
634 </tr>
635 <tr>
635 <tr>
636 <th class="revision">revision 0:</td>
636 <th class="revision">revision 0:</td>
637 <td class="node">
637 <td class="node">
638 <a href="/file/1a6696706df2/c?style=spartan">1a6696706df2</a>
638 <a href="/file/1a6696706df2/c?style=spartan">1a6696706df2</a>
639 <a href="/diff/1a6696706df2/c?style=spartan">(diff)</a>
639 <a href="/diff/1a6696706df2/c?style=spartan">(diff)</a>
640 <a href="/annotate/1a6696706df2/c?style=spartan">(annotate)</a>
640 <a href="/annotate/1a6696706df2/c?style=spartan">(annotate)</a>
641 </td>
641 </td>
642 </tr>
642 </tr>
643
643
644 <tr>
644 <tr>
645 <th>base:</th>
645 <th>base:</th>
646 <td>
646 <td>
647 <a href="/file/1e88685f5dde/b?style=spartan">
647 <a href="/file/1e88685f5dde/b?style=spartan">
648 b@1e88685f5dde
648 b@1e88685f5dde
649 </a>
649 </a>
650 </td>
650 </td>
651 </tr>
651 </tr>
652 <tr>
652 <tr>
653 <th class="author">author:</th>
653 <th class="author">author:</th>
654 <td class="author">&#116;&#101;&#115;&#116;</td>
654 <td class="author">&#116;&#101;&#115;&#116;</td>
655 </tr>
655 </tr>
656 <tr>
656 <tr>
657 <th class="date">date:</th>
657 <th class="date">date:</th>
658 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
658 <td class="date">Thu, 01 Jan 1970 00:00:00 +0000</td>
659 </tr>
659 </tr>
660 </table>
660 </table>
661
661
662
662
663
663
664
664
665 <script type="text/javascript">process_dates()</script>
665 <script type="text/javascript">process_dates()</script>
666
666
667 <div class="logo">
667 <div class="logo">
668 <a href="http://mercurial.selenic.com/">
668 <a href="http://mercurial.selenic.com/">
669 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
669 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
670 </div>
670 </div>
671
671
672 </body>
672 </body>
673 </html>
673 </html>
674
674
675
675
676 rss log
676 rss log
677
677
678 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rss-log/tip/a')
678 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rss-log/tip/a')
679 200 Script output follows
679 200 Script output follows
680
680
681 <?xml version="1.0" encoding="ascii"?>
681 <?xml version="1.0" encoding="ascii"?>
682 <rss version="2.0">
682 <rss version="2.0">
683 <channel>
683 <channel>
684 <link>http://*:$HGPORT/</link> (glob)
684 <link>http://*:$HGPORT/</link> (glob)
685 <language>en-us</language>
685 <language>en-us</language>
686
686
687 <title>test: a history</title>
687 <title>test: a history</title>
688 <description>a revision history</description>
688 <description>a revision history</description>
689 <item>
689 <item>
690 <title>second a</title>
690 <title>second a</title>
691 <link>http://*:$HGPORT/log01de2d66a28d/a</link> (glob)
691 <link>http://*:$HGPORT/log01de2d66a28d/a</link> (glob)
692 <description><![CDATA[second a]]></description>
692 <description><![CDATA[second a]]></description>
693 <author>&#116;&#101;&#115;&#116;</author>
693 <author>&#116;&#101;&#115;&#116;</author>
694 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
694 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
695 </item>
695 </item>
696 <item>
696 <item>
697 <title>first a</title>
697 <title>first a</title>
698 <link>http://*:$HGPORT/log5ed941583260/a</link> (glob)
698 <link>http://*:$HGPORT/log5ed941583260/a</link> (glob)
699 <description><![CDATA[first a]]></description>
699 <description><![CDATA[first a]]></description>
700 <author>&#116;&#101;&#115;&#116;</author>
700 <author>&#116;&#101;&#115;&#116;</author>
701 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
701 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
702 </item>
702 </item>
703
703
704 </channel>
704 </channel>
705 </rss>
705 </rss>
706
706
707 atom log
707 atom log
708
708
709 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/atom-log/tip/a')
709 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/atom-log/tip/a')
710 200 Script output follows
710 200 Script output follows
711
711
712 <?xml version="1.0" encoding="ascii"?>
712 <?xml version="1.0" encoding="ascii"?>
713 <feed xmlns="http://www.w3.org/2005/Atom">
713 <feed xmlns="http://www.w3.org/2005/Atom">
714 <id>http://*:$HGPORT/atom-log/tip/a</id> (glob)
714 <id>http://*:$HGPORT/atom-log/tip/a</id> (glob)
715 <link rel="self" href="http://*:$HGPORT/atom-log/tip/a"/> (glob)
715 <link rel="self" href="http://*:$HGPORT/atom-log/tip/a"/> (glob)
716 <title>test: a history</title>
716 <title>test: a history</title>
717 <updated>1970-01-01T00:00:00+00:00</updated>
717 <updated>1970-01-01T00:00:00+00:00</updated>
718
718
719 <entry>
719 <entry>
720 <title>second a</title>
720 <title>second a</title>
721 <id>http://*:$HGPORT/#changeset-01de2d66a28df5549090991dccda788726948517</id> (glob)
721 <id>http://*:$HGPORT/#changeset-01de2d66a28df5549090991dccda788726948517</id> (glob)
722 <link href="http://*:$HGPORT/rev/01de2d66a28d"/> (glob)
722 <link href="http://*:$HGPORT/rev/01de2d66a28d"/> (glob)
723 <author>
723 <author>
724 <name>test</name>
724 <name>test</name>
725 <email>&#116;&#101;&#115;&#116;</email>
725 <email>&#116;&#101;&#115;&#116;</email>
726 </author>
726 </author>
727 <updated>1970-01-01T00:00:00+00:00</updated>
727 <updated>1970-01-01T00:00:00+00:00</updated>
728 <published>1970-01-01T00:00:00+00:00</published>
728 <published>1970-01-01T00:00:00+00:00</published>
729 <content type="xhtml">
729 <content type="xhtml">
730 <div xmlns="http://www.w3.org/1999/xhtml">
730 <div xmlns="http://www.w3.org/1999/xhtml">
731 <pre xml:space="preserve">second a</pre>
731 <pre xml:space="preserve">second a</pre>
732 </div>
732 </div>
733 </content>
733 </content>
734 </entry>
734 </entry>
735 <entry>
735 <entry>
736 <title>first a</title>
736 <title>first a</title>
737 <id>http://*:$HGPORT/#changeset-5ed941583260248620985524192fdc382ef57c36</id> (glob)
737 <id>http://*:$HGPORT/#changeset-5ed941583260248620985524192fdc382ef57c36</id> (glob)
738 <link href="http://*:$HGPORT/rev/5ed941583260"/> (glob)
738 <link href="http://*:$HGPORT/rev/5ed941583260"/> (glob)
739 <author>
739 <author>
740 <name>test</name>
740 <name>test</name>
741 <email>&#116;&#101;&#115;&#116;</email>
741 <email>&#116;&#101;&#115;&#116;</email>
742 </author>
742 </author>
743 <updated>1970-01-01T00:00:00+00:00</updated>
743 <updated>1970-01-01T00:00:00+00:00</updated>
744 <published>1970-01-01T00:00:00+00:00</published>
744 <published>1970-01-01T00:00:00+00:00</published>
745 <content type="xhtml">
745 <content type="xhtml">
746 <div xmlns="http://www.w3.org/1999/xhtml">
746 <div xmlns="http://www.w3.org/1999/xhtml">
747 <pre xml:space="preserve">first a</pre>
747 <pre xml:space="preserve">first a</pre>
748 </div>
748 </div>
749 </content>
749 </content>
750 </entry>
750 </entry>
751
751
752 </feed>
752 </feed>
753
753
754 errors
754 errors
755
755
756 $ cat errors.log
756 $ cat errors.log
@@ -1,231 +1,231 b''
1 setting up repo
1 setting up repo
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo a > a
5 $ echo a > a
6 $ hg ci -Ama
6 $ hg ci -Ama
7 adding a
7 adding a
8 $ hg rm a
8 $ hg rm a
9 $ hg ci -mdel
9 $ hg ci -mdel
10
10
11 set up hgweb
11 set up hgweb
12
12
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
14 $ cat hg.pid >> $DAEMON_PIDS
14 $ cat hg.pid >> $DAEMON_PIDS
15
15
16 revision
16 revision
17
17
18 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/tip'
18 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/tip'
19 200 Script output follows
19 200 Script output follows
20
20
21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
23 <head>
23 <head>
24 <link rel="icon" href="/static/hgicon.png" type="image/png" />
24 <link rel="icon" href="/static/hgicon.png" type="image/png" />
25 <meta name="robots" content="index, nofollow" />
25 <meta name="robots" content="index, nofollow" />
26 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
26 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
27 <script type="text/javascript" src="/static/mercurial.js"></script>
27 <script type="text/javascript" src="/static/mercurial.js"></script>
28
28
29 <title>test: c78f6c5cbea9</title>
29 <title>test: c78f6c5cbea9</title>
30 </head>
30 </head>
31 <body>
31 <body>
32 <div class="container">
32 <div class="container">
33 <div class="menu">
33 <div class="menu">
34 <div class="logo">
34 <div class="logo">
35 <a href="http://mercurial.selenic.com/">
35 <a href="http://mercurial.selenic.com/">
36 <img src="/static/hglogo.png" alt="mercurial" /></a>
36 <img src="/static/hglogo.png" alt="mercurial" /></a>
37 </div>
37 </div>
38 <ul>
38 <ul>
39 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
39 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
40 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
40 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
41 <li><a href="/tags">tags</a></li>
41 <li><a href="/tags">tags</a></li>
42 <li><a href="/bookmarks">bookmarks</a></li>
42 <li><a href="/bookmarks">bookmarks</a></li>
43 <li><a href="/branches">branches</a></li>
43 <li><a href="/branches">branches</a></li>
44 </ul>
44 </ul>
45 <ul>
45 <ul>
46 <li class="active">changeset</li>
46 <li class="active">changeset</li>
47 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
47 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
48 <li><a href="/file/c78f6c5cbea9">browse</a></li>
48 <li><a href="/file/c78f6c5cbea9">browse</a></li>
49 </ul>
49 </ul>
50 <ul>
50 <ul>
51
51
52 </ul>
52 </ul>
53 <ul>
53 <ul>
54 <li><a href="/help">help</a></li>
54 <li><a href="/help">help</a></li>
55 </ul>
55 </ul>
56 </div>
56 </div>
57
57
58 <div class="main">
58 <div class="main">
59
59
60 <h2><a href="/">test</a></h2>
60 <h2><a href="/">test</a></h2>
61 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
61 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
62
62
63 <form class="search" action="/log">
63 <form class="search" action="/log">
64
64
65 <p><input name="rev" id="search1" type="text" size="30" /></p>
65 <p><input name="rev" id="search1" type="text" size="30" /></p>
66 <div id="hint">find changesets by author, revision,
66 <div id="hint">find changesets by author, revision,
67 files, or words in the commit message</div>
67 files, or words in the commit message</div>
68 </form>
68 </form>
69
69
70 <div class="description">del</div>
70 <div class="description">del</div>
71
71
72 <table id="changesetEntry">
72 <table id="changesetEntry">
73 <tr>
73 <tr>
74 <th class="author">author</th>
74 <th class="author">author</th>
75 <td class="author">&#116;&#101;&#115;&#116;</td>
75 <td class="author">&#116;&#101;&#115;&#116;</td>
76 </tr>
76 </tr>
77 <tr>
77 <tr>
78 <th class="date">date</th>
78 <th class="date">date</th>
79 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
79 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
80 <tr>
80 <tr>
81 <th class="author">parents</th>
81 <th class="author">parents</th>
82 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
82 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
83 </tr>
83 </tr>
84 <tr>
84 <tr>
85 <th class="author">children</th>
85 <th class="author">children</th>
86 <td class="author"></td>
86 <td class="author"></td>
87 </tr>
87 </tr>
88 <tr>
88 <tr>
89 <th class="files">files</th>
89 <th class="files">files</th>
90 <td class="files">a </td>
90 <td class="files">a </td>
91 </tr>
91 </tr>
92 <tr>
92 <tr>
93 <th class="diffstat">diffstat</th>
93 <th class="diffstat">diffstat</th>
94 <td class="diffstat">
94 <td class="diffstat">
95 1 files changed, 0 insertions(+), 1 deletions(-)
95 1 files changed, 0 insertions(+), 1 deletions(-)
96
96
97 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
97 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
98 <div id="diffstatdetails" style="display:none;">
98 <div id="diffstatdetails" style="display:none;">
99 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
99 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
100 <p>
100 <p>
101 <table> <tr class="parity0">
101 <table> <tr class="parity0">
102 <td class="diffstat-file"><a href="#l1.1">a</a></td>
102 <td class="diffstat-file"><a href="#l1.1">a</a></td>
103 <td class="diffstat-total" align="right">1</td>
103 <td class="diffstat-total" align="right">1</td>
104 <td class="diffstat-graph">
104 <td class="diffstat-graph">
105 <span class="diffstat-add" style="width:0.0%;">&nbsp;</span>
105 <span class="diffstat-add" style="width:0.0%;">&nbsp;</span>
106 <span class="diffstat-remove" style="width:100.0%;">&nbsp;</span>
106 <span class="diffstat-remove" style="width:100.0%;">&nbsp;</span>
107 </td>
107 </td>
108 </tr>
108 </tr>
109 </table>
109 </table>
110 </div>
110 </div>
111 </td>
111 </td>
112 </tr>
112 </tr>
113 </table>
113 </table>
114
114
115 <div class="overflow">
115 <div class="overflow">
116 <div class="sourcefirst"> line diff</div>
116 <div class="sourcefirst"> line diff</div>
117
117
118 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
118 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
119 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
119 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
120 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
120 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
121 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
121 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
122 </span></pre></div>
122 </span></pre></div>
123 </div>
123 </div>
124
124
125 </div>
125 </div>
126 </div>
126 </div>
127 <script type="text/javascript">process_dates()</script>
127 <script type="text/javascript">process_dates()</script>
128
128
129
129
130 </body>
130 </body>
131 </html>
131 </html>
132
132
133
133
134 diff removed file
134 diff removed file
135
135
136 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
136 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
137 200 Script output follows
137 200 Script output follows
138
138
139 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
139 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
140 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
140 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
141 <head>
141 <head>
142 <link rel="icon" href="/static/hgicon.png" type="image/png" />
142 <link rel="icon" href="/static/hgicon.png" type="image/png" />
143 <meta name="robots" content="index, nofollow" />
143 <meta name="robots" content="index, nofollow" />
144 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
144 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
145 <script type="text/javascript" src="/static/mercurial.js"></script>
145 <script type="text/javascript" src="/static/mercurial.js"></script>
146
146
147 <title>test: a diff</title>
147 <title>test: a diff</title>
148 </head>
148 </head>
149 <body>
149 <body>
150
150
151 <div class="container">
151 <div class="container">
152 <div class="menu">
152 <div class="menu">
153 <div class="logo">
153 <div class="logo">
154 <a href="http://mercurial.selenic.com/">
154 <a href="http://mercurial.selenic.com/">
155 <img src="/static/hglogo.png" alt="mercurial" /></a>
155 <img src="/static/hglogo.png" alt="mercurial" /></a>
156 </div>
156 </div>
157 <ul>
157 <ul>
158 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
158 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
159 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
159 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
160 <li><a href="/tags">tags</a></li>
160 <li><a href="/tags">tags</a></li>
161 <li><a href="/bookmarks">bookmarks</a></li>
161 <li><a href="/bookmarks">bookmarks</a></li>
162 <li><a href="/branches">branches</a></li>
162 <li><a href="/branches">branches</a></li>
163 </ul>
163 </ul>
164 <ul>
164 <ul>
165 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
165 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
166 <li><a href="/file/c78f6c5cbea9">browse</a></li>
166 <li><a href="/file/c78f6c5cbea9">browse</a></li>
167 </ul>
167 </ul>
168 <ul>
168 <ul>
169 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
169 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
170 <li><a href="/file/tip/a">latest</a></li>
170 <li><a href="/file/tip/a">latest</a></li>
171 <li class="active">diff</li>
171 <li class="active">diff</li>
172 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
172 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
173 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
173 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
174 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
174 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
175 </ul>
175 </ul>
176 <ul>
176 <ul>
177 <li><a href="/help">help</a></li>
177 <li><a href="/help">help</a></li>
178 </ul>
178 </ul>
179 </div>
179 </div>
180
180
181 <div class="main">
181 <div class="main">
182 <h2><a href="/">test</a></h2>
182 <h2><a href="/">test</a></h2>
183 <h3>diff a @ 1:c78f6c5cbea9</h3>
183 <h3>diff a @ 1:c78f6c5cbea9</h3>
184
184
185 <form class="search" action="/log">
185 <form class="search" action="/log">
186 <p></p>
186 <p></p>
187 <p><input name="rev" id="search1" type="text" size="30" /></p>
187 <p><input name="rev" id="search1" type="text" size="30" /></p>
188 <div id="hint">find changesets by author, revision,
188 <div id="hint">find changesets by author, revision,
189 files, or words in the commit message</div>
189 files, or words in the commit message</div>
190 </form>
190 </form>
191
191
192 <div class="description">del</div>
192 <div class="description">del</div>
193
193
194 <table id="changesetEntry">
194 <table id="changesetEntry">
195 <tr>
195 <tr>
196 <th>author</th>
196 <th>author</th>
197 <td>&#116;&#101;&#115;&#116;</td>
197 <td>&#116;&#101;&#115;&#116;</td>
198 </tr>
198 </tr>
199 <tr>
199 <tr>
200 <th>date</th>
200 <th>date</th>
201 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
201 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
202 </tr>
202 </tr>
203 <tr>
203 <tr>
204 <th>parents</th>
204 <th>parents</th>
205 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
205 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
206 </tr>
206 </tr>
207 <tr>
207 <tr>
208 <th>children</th>
208 <th>children</th>
209 <td></td>
209 <td></td>
210 </tr>
210 </tr>
211
211
212 </table>
212 </table>
213
213
214 <div class="overflow">
214 <div class="overflow">
215 <div class="sourcefirst"> line diff</div>
215 <div class="sourcefirst"> line diff</div>
216
216
217 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
217 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
218 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
218 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
219 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
219 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
220 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
220 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
221 </span></pre></div>
221 </span></pre></div>
222 </div>
222 </div>
223 </div>
223 </div>
224 </div>
224 </div>
225
225
226 <script type="text/javascript">process_dates()</script>
226 <script type="text/javascript">process_dates()</script>
227
227
228
228
229 </body>
229 </body>
230 </html>
230 </html>
231
231
@@ -1,605 +1,605 b''
1
1
2 $ "$TESTDIR/hghave" pygments || exit 80
2 $ "$TESTDIR/hghave" pygments || exit 80
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 > EOF
8 > EOF
9 $ hg init test
9 $ hg init test
10 $ cd test
10 $ cd test
11
11
12 create random Python file to exercise Pygments
12 create random Python file to exercise Pygments
13
13
14 $ cat <<EOF > primes.py
14 $ cat <<EOF > primes.py
15 > #!/usr/bin/env python
15 > #!/usr/bin/env python
16 >
16 >
17 > """Fun with generators. Corresponding Haskell implementation:
17 > """Fun with generators. Corresponding Haskell implementation:
18 >
18 >
19 > primes = 2 : sieve [3, 5..]
19 > primes = 2 : sieve [3, 5..]
20 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
20 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
21 > """
21 > """
22 >
22 >
23 > from itertools import dropwhile, ifilter, islice, count, chain
23 > from itertools import dropwhile, ifilter, islice, count, chain
24 >
24 >
25 > def primes():
25 > def primes():
26 > """Generate all primes."""
26 > """Generate all primes."""
27 > def sieve(ns):
27 > def sieve(ns):
28 > p = ns.next()
28 > p = ns.next()
29 > # It is important to yield *here* in order to stop the
29 > # It is important to yield *here* in order to stop the
30 > # infinite recursion.
30 > # infinite recursion.
31 > yield p
31 > yield p
32 > ns = ifilter(lambda n: n % p != 0, ns)
32 > ns = ifilter(lambda n: n % p != 0, ns)
33 > for n in sieve(ns):
33 > for n in sieve(ns):
34 > yield n
34 > yield n
35 >
35 >
36 > odds = ifilter(lambda i: i % 2 == 1, count())
36 > odds = ifilter(lambda i: i % 2 == 1, count())
37 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
37 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
38 >
38 >
39 > if __name__ == "__main__":
39 > if __name__ == "__main__":
40 > import sys
40 > import sys
41 > try:
41 > try:
42 > n = int(sys.argv[1])
42 > n = int(sys.argv[1])
43 > except (ValueError, IndexError):
43 > except (ValueError, IndexError):
44 > n = 10
44 > n = 10
45 > p = primes()
45 > p = primes()
46 > print "The first %d primes: %s" % (n, list(islice(p, n)))
46 > print "The first %d primes: %s" % (n, list(islice(p, n)))
47 > EOF
47 > EOF
48 $ hg ci -Ama
48 $ hg ci -Ama
49 adding primes.py
49 adding primes.py
50
50
51 hg serve
51 hg serve
52
52
53 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
53 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
54 $ cat hg.pid >> $DAEMON_PIDS
54 $ cat hg.pid >> $DAEMON_PIDS
55
55
56 hgweb filerevision, html
56 hgweb filerevision, html
57
57
58 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \
58 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \
59 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
59 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
60 200 Script output follows
60 200 Script output follows
61
61
62 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
62 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
63 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
63 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
64 <head>
64 <head>
65 <link rel="icon" href="/static/hgicon.png" type="image/png" />
65 <link rel="icon" href="/static/hgicon.png" type="image/png" />
66 <meta name="robots" content="index, nofollow" />
66 <meta name="robots" content="index, nofollow" />
67 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
67 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
68 <script type="text/javascript" src="/static/mercurial.js"></script>
68 <script type="text/javascript" src="/static/mercurial.js"></script>
69
69
70 <link rel="stylesheet" href="/highlightcss" type="text/css" />
70 <link rel="stylesheet" href="/highlightcss" type="text/css" />
71 <title>test: 853dcd4de2a6 primes.py</title>
71 <title>test: 853dcd4de2a6 primes.py</title>
72 </head>
72 </head>
73 <body>
73 <body>
74
74
75 <div class="container">
75 <div class="container">
76 <div class="menu">
76 <div class="menu">
77 <div class="logo">
77 <div class="logo">
78 <a href="http://mercurial.selenic.com/">
78 <a href="http://mercurial.selenic.com/">
79 <img src="/static/hglogo.png" alt="mercurial" /></a>
79 <img src="/static/hglogo.png" alt="mercurial" /></a>
80 </div>
80 </div>
81 <ul>
81 <ul>
82 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
82 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
83 <li><a href="/graph/853dcd4de2a6">graph</a></li>
83 <li><a href="/graph/853dcd4de2a6">graph</a></li>
84 <li><a href="/tags">tags</a></li>
84 <li><a href="/tags">tags</a></li>
85 <li><a href="/branches">branches</a></li>
85 <li><a href="/branches">branches</a></li>
86 </ul>
86 </ul>
87 <ul>
87 <ul>
88 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
88 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
89 <li><a href="/file/853dcd4de2a6/">browse</a></li>
89 <li><a href="/file/853dcd4de2a6/">browse</a></li>
90 </ul>
90 </ul>
91 <ul>
91 <ul>
92 <li class="active">file</li>
92 <li class="active">file</li>
93 <li><a href="/file/tip/primes.py">latest</a></li>
93 <li><a href="/file/tip/primes.py">latest</a></li>
94 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
94 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
95 <li><a href="/annotate/853dcd4de2a6/primes.py">annotate</a></li>
95 <li><a href="/annotate/853dcd4de2a6/primes.py">annotate</a></li>
96 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
96 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
97 <li><a href="/raw-file/853dcd4de2a6/primes.py">raw</a></li>
97 <li><a href="/raw-file/853dcd4de2a6/primes.py">raw</a></li>
98 </ul>
98 </ul>
99 <ul>
99 <ul>
100 <li><a href="/help">help</a></li>
100 <li><a href="/help">help</a></li>
101 </ul>
101 </ul>
102 </div>
102 </div>
103
103
104 <div class="main">
104 <div class="main">
105 <h2><a href="/">test</a></h2>
105 <h2><a href="/">test</a></h2>
106 <h3>view primes.py @ 0:853dcd4de2a6</h3>
106 <h3>view primes.py @ 0:853dcd4de2a6</h3>
107
107
108 <form class="search" action="/log">
108 <form class="search" action="/log">
109
109
110 <p><input name="rev" id="search1" type="text" size="30" /></p>
110 <p><input name="rev" id="search1" type="text" size="30" /></p>
111 <div id="hint">find changesets by author, revision,
111 <div id="hint">find changesets by author, revision,
112 files, or words in the commit message</div>
112 files, or words in the commit message</div>
113 </form>
113 </form>
114
114
115 <div class="description">a</div>
115 <div class="description">a</div>
116
116
117 <table id="changesetEntry">
117 <table id="changesetEntry">
118 <tr>
118 <tr>
119 <th class="author">author</th>
119 <th class="author">author</th>
120 <td class="author">&#116;&#101;&#115;&#116;</td>
120 <td class="author">&#116;&#101;&#115;&#116;</td>
121 </tr>
121 </tr>
122 <tr>
122 <tr>
123 <th class="date">date</th>
123 <th class="date">date</th>
124 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
124 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
125 </tr>
125 </tr>
126 <tr>
126 <tr>
127 <th class="author">parents</th>
127 <th class="author">parents</th>
128 <td class="author"></td>
128 <td class="author"></td>
129 </tr>
129 </tr>
130 <tr>
130 <tr>
131 <th class="author">children</th>
131 <th class="author">children</th>
132 <td class="author"></td>
132 <td class="author"></td>
133 </tr>
133 </tr>
134
134
135 </table>
135 </table>
136
136
137 <div class="overflow">
137 <div class="overflow">
138 <div class="sourcefirst"> line source</div>
138 <div class="sourcefirst"> line source</div>
139
139
140 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
140 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
141 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
141 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
142 <div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></div>
142 <div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></div>
143 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
143 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
144 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
144 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
145 <div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></div>
145 <div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></div>
146 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
146 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
147 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
147 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
148 <div class="parity0 source"><a href="#l9" id="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></div>
148 <div class="parity0 source"><a href="#l9" id="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></div>
149 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
149 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
150 <div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></div>
150 <div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></div>
151 <div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></div>
151 <div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></div>
152 <div class="parity0 source"><a href="#l13" id="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></div>
152 <div class="parity0 source"><a href="#l13" id="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></div>
153 <div class="parity1 source"><a href="#l14" id="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></div>
153 <div class="parity1 source"><a href="#l14" id="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></div>
154 <div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></div>
154 <div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></div>
155 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
155 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
156 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
156 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
157 <div class="parity1 source"><a href="#l18" id="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></div>
157 <div class="parity1 source"><a href="#l18" id="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></div>
158 <div class="parity0 source"><a href="#l19" id="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></div>
158 <div class="parity0 source"><a href="#l19" id="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></div>
159 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
159 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
160 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
160 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
161 <div class="parity1 source"><a href="#l22" id="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></div>
161 <div class="parity1 source"><a href="#l22" id="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></div>
162 <div class="parity0 source"><a href="#l23" id="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></div>
162 <div class="parity0 source"><a href="#l23" id="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></div>
163 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
163 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
164 <div class="parity0 source"><a href="#l25" id="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></div>
164 <div class="parity0 source"><a href="#l25" id="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></div>
165 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
165 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
166 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
166 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
167 <div class="parity1 source"><a href="#l28" id="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></div>
167 <div class="parity1 source"><a href="#l28" id="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></div>
168 <div class="parity0 source"><a href="#l29" id="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></div>
168 <div class="parity0 source"><a href="#l29" id="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></div>
169 <div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></div>
169 <div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></div>
170 <div class="parity0 source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></div>
170 <div class="parity0 source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></div>
171 <div class="parity1 source"><a href="#l32" id="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></div>
171 <div class="parity1 source"><a href="#l32" id="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></div>
172 <div class="sourcelast"></div>
172 <div class="sourcelast"></div>
173 </div>
173 </div>
174 </div>
174 </div>
175 </div>
175 </div>
176
176
177 <script type="text/javascript">process_dates()</script>
177 <script type="text/javascript">process_dates()</script>
178
178
179
179
180 </body>
180 </body>
181 </html>
181 </html>
182
182
183
183
184 hgweb fileannotate, html
184 hgweb fileannotate, html
185
185
186 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \
186 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \
187 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
187 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
188 200 Script output follows
188 200 Script output follows
189
189
190 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
190 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
191 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
191 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
192 <head>
192 <head>
193 <link rel="icon" href="/static/hgicon.png" type="image/png" />
193 <link rel="icon" href="/static/hgicon.png" type="image/png" />
194 <meta name="robots" content="index, nofollow" />
194 <meta name="robots" content="index, nofollow" />
195 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
195 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
196 <script type="text/javascript" src="/static/mercurial.js"></script>
196 <script type="text/javascript" src="/static/mercurial.js"></script>
197
197
198 <link rel="stylesheet" href="/highlightcss" type="text/css" />
198 <link rel="stylesheet" href="/highlightcss" type="text/css" />
199 <title>test: primes.py annotate</title>
199 <title>test: primes.py annotate</title>
200 </head>
200 </head>
201 <body>
201 <body>
202
202
203 <div class="container">
203 <div class="container">
204 <div class="menu">
204 <div class="menu">
205 <div class="logo">
205 <div class="logo">
206 <a href="http://mercurial.selenic.com/">
206 <a href="http://mercurial.selenic.com/">
207 <img src="/static/hglogo.png" alt="mercurial" /></a>
207 <img src="/static/hglogo.png" alt="mercurial" /></a>
208 </div>
208 </div>
209 <ul>
209 <ul>
210 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
210 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
211 <li><a href="/graph/853dcd4de2a6">graph</a></li>
211 <li><a href="/graph/853dcd4de2a6">graph</a></li>
212 <li><a href="/tags">tags</a></li>
212 <li><a href="/tags">tags</a></li>
213 <li><a href="/bookmarks">bookmarks</a></li>
213 <li><a href="/bookmarks">bookmarks</a></li>
214 <li><a href="/branches">branches</a></li>
214 <li><a href="/branches">branches</a></li>
215 </ul>
215 </ul>
216
216
217 <ul>
217 <ul>
218 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
218 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
219 <li><a href="/file/853dcd4de2a6/">browse</a></li>
219 <li><a href="/file/853dcd4de2a6/">browse</a></li>
220 </ul>
220 </ul>
221 <ul>
221 <ul>
222 <li><a href="/file/853dcd4de2a6/primes.py">file</a></li>
222 <li><a href="/file/853dcd4de2a6/primes.py">file</a></li>
223 <li><a href="/file/tip/primes.py">latest</a></li>
223 <li><a href="/file/tip/primes.py">latest</a></li>
224 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
224 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
225 <li class="active">annotate</li>
225 <li class="active">annotate</li>
226 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
226 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
227 <li><a href="/raw-annotate/853dcd4de2a6/primes.py">raw</a></li>
227 <li><a href="/raw-annotate/853dcd4de2a6/primes.py">raw</a></li>
228 </ul>
228 </ul>
229 <ul>
229 <ul>
230 <li><a href="/help">help</a></li>
230 <li><a href="/help">help</a></li>
231 </ul>
231 </ul>
232 </div>
232 </div>
233
233
234 <div class="main">
234 <div class="main">
235 <h2><a href="/">test</a></h2>
235 <h2><a href="/">test</a></h2>
236 <h3>annotate primes.py @ 0:853dcd4de2a6</h3>
236 <h3>annotate primes.py @ 0:853dcd4de2a6</h3>
237
237
238 <form class="search" action="/log">
238 <form class="search" action="/log">
239
239
240 <p><input name="rev" id="search1" type="text" size="30" /></p>
240 <p><input name="rev" id="search1" type="text" size="30" /></p>
241 <div id="hint">find changesets by author, revision,
241 <div id="hint">find changesets by author, revision,
242 files, or words in the commit message</div>
242 files, or words in the commit message</div>
243 </form>
243 </form>
244
244
245 <div class="description">a</div>
245 <div class="description">a</div>
246
246
247 <table id="changesetEntry">
247 <table id="changesetEntry">
248 <tr>
248 <tr>
249 <th class="author">author</th>
249 <th class="author">author</th>
250 <td class="author">&#116;&#101;&#115;&#116;</td>
250 <td class="author">&#116;&#101;&#115;&#116;</td>
251 </tr>
251 </tr>
252 <tr>
252 <tr>
253 <th class="date">date</th>
253 <th class="date">date</th>
254 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
254 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
255 </tr>
255 </tr>
256 <tr>
256 <tr>
257 <th class="author">parents</th>
257 <th class="author">parents</th>
258 <td class="author"></td>
258 <td class="author"></td>
259 </tr>
259 </tr>
260 <tr>
260 <tr>
261 <th class="author">children</th>
261 <th class="author">children</th>
262 <td class="author"></td>
262 <td class="author"></td>
263 </tr>
263 </tr>
264
264
265 </table>
265 </table>
266
266
267 <div class="overflow">
267 <div class="overflow">
268 <table class="bigtable">
268 <table class="bigtable">
269 <tr>
269 <tr>
270 <th class="annotate">rev</th>
270 <th class="annotate">rev</th>
271 <th class="line">&nbsp;&nbsp;line source</th>
271 <th class="line">&nbsp;&nbsp;line source</th>
272 </tr>
272 </tr>
273
273
274 <tr class="parity0">
274 <tr class="parity0">
275 <td class="annotate">
275 <td class="annotate">
276 <a href="/annotate/853dcd4de2a6/primes.py#1"
276 <a href="/annotate/853dcd4de2a6/primes.py#1"
277 title="853dcd4de2a6: a">test@0</a>
277 title="853dcd4de2a6: a">test@0</a>
278 </td>
278 </td>
279 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
279 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
280 </tr>
280 </tr>
281 <tr class="parity1">
281 <tr class="parity1">
282 <td class="annotate">
282 <td class="annotate">
283 <a href="/annotate/853dcd4de2a6/primes.py#2"
283 <a href="/annotate/853dcd4de2a6/primes.py#2"
284 title="853dcd4de2a6: a">test@0</a>
284 title="853dcd4de2a6: a">test@0</a>
285 </td>
285 </td>
286 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
286 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
287 </tr>
287 </tr>
288 <tr class="parity0">
288 <tr class="parity0">
289 <td class="annotate">
289 <td class="annotate">
290 <a href="/annotate/853dcd4de2a6/primes.py#3"
290 <a href="/annotate/853dcd4de2a6/primes.py#3"
291 title="853dcd4de2a6: a">test@0</a>
291 title="853dcd4de2a6: a">test@0</a>
292 </td>
292 </td>
293 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
293 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
294 </tr>
294 </tr>
295 <tr class="parity1">
295 <tr class="parity1">
296 <td class="annotate">
296 <td class="annotate">
297 <a href="/annotate/853dcd4de2a6/primes.py#4"
297 <a href="/annotate/853dcd4de2a6/primes.py#4"
298 title="853dcd4de2a6: a">test@0</a>
298 title="853dcd4de2a6: a">test@0</a>
299 </td>
299 </td>
300 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
300 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
301 </tr>
301 </tr>
302 <tr class="parity0">
302 <tr class="parity0">
303 <td class="annotate">
303 <td class="annotate">
304 <a href="/annotate/853dcd4de2a6/primes.py#5"
304 <a href="/annotate/853dcd4de2a6/primes.py#5"
305 title="853dcd4de2a6: a">test@0</a>
305 title="853dcd4de2a6: a">test@0</a>
306 </td>
306 </td>
307 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
307 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
308 </tr>
308 </tr>
309 <tr class="parity1">
309 <tr class="parity1">
310 <td class="annotate">
310 <td class="annotate">
311 <a href="/annotate/853dcd4de2a6/primes.py#6"
311 <a href="/annotate/853dcd4de2a6/primes.py#6"
312 title="853dcd4de2a6: a">test@0</a>
312 title="853dcd4de2a6: a">test@0</a>
313 </td>
313 </td>
314 <td class="source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
314 <td class="source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
315 </tr>
315 </tr>
316 <tr class="parity0">
316 <tr class="parity0">
317 <td class="annotate">
317 <td class="annotate">
318 <a href="/annotate/853dcd4de2a6/primes.py#7"
318 <a href="/annotate/853dcd4de2a6/primes.py#7"
319 title="853dcd4de2a6: a">test@0</a>
319 title="853dcd4de2a6: a">test@0</a>
320 </td>
320 </td>
321 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
321 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
322 </tr>
322 </tr>
323 <tr class="parity1">
323 <tr class="parity1">
324 <td class="annotate">
324 <td class="annotate">
325 <a href="/annotate/853dcd4de2a6/primes.py#8"
325 <a href="/annotate/853dcd4de2a6/primes.py#8"
326 title="853dcd4de2a6: a">test@0</a>
326 title="853dcd4de2a6: a">test@0</a>
327 </td>
327 </td>
328 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
328 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
329 </tr>
329 </tr>
330 <tr class="parity0">
330 <tr class="parity0">
331 <td class="annotate">
331 <td class="annotate">
332 <a href="/annotate/853dcd4de2a6/primes.py#9"
332 <a href="/annotate/853dcd4de2a6/primes.py#9"
333 title="853dcd4de2a6: a">test@0</a>
333 title="853dcd4de2a6: a">test@0</a>
334 </td>
334 </td>
335 <td class="source"><a href="#l9" id="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>
335 <td class="source"><a href="#l9" id="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>
336 </tr>
336 </tr>
337 <tr class="parity1">
337 <tr class="parity1">
338 <td class="annotate">
338 <td class="annotate">
339 <a href="/annotate/853dcd4de2a6/primes.py#10"
339 <a href="/annotate/853dcd4de2a6/primes.py#10"
340 title="853dcd4de2a6: a">test@0</a>
340 title="853dcd4de2a6: a">test@0</a>
341 </td>
341 </td>
342 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
342 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
343 </tr>
343 </tr>
344 <tr class="parity0">
344 <tr class="parity0">
345 <td class="annotate">
345 <td class="annotate">
346 <a href="/annotate/853dcd4de2a6/primes.py#11"
346 <a href="/annotate/853dcd4de2a6/primes.py#11"
347 title="853dcd4de2a6: a">test@0</a>
347 title="853dcd4de2a6: a">test@0</a>
348 </td>
348 </td>
349 <td class="source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
349 <td class="source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
350 </tr>
350 </tr>
351 <tr class="parity1">
351 <tr class="parity1">
352 <td class="annotate">
352 <td class="annotate">
353 <a href="/annotate/853dcd4de2a6/primes.py#12"
353 <a href="/annotate/853dcd4de2a6/primes.py#12"
354 title="853dcd4de2a6: a">test@0</a>
354 title="853dcd4de2a6: a">test@0</a>
355 </td>
355 </td>
356 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
356 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
357 </tr>
357 </tr>
358 <tr class="parity0">
358 <tr class="parity0">
359 <td class="annotate">
359 <td class="annotate">
360 <a href="/annotate/853dcd4de2a6/primes.py#13"
360 <a href="/annotate/853dcd4de2a6/primes.py#13"
361 title="853dcd4de2a6: a">test@0</a>
361 title="853dcd4de2a6: a">test@0</a>
362 </td>
362 </td>
363 <td class="source"><a href="#l13" id="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>
363 <td class="source"><a href="#l13" id="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>
364 </tr>
364 </tr>
365 <tr class="parity1">
365 <tr class="parity1">
366 <td class="annotate">
366 <td class="annotate">
367 <a href="/annotate/853dcd4de2a6/primes.py#14"
367 <a href="/annotate/853dcd4de2a6/primes.py#14"
368 title="853dcd4de2a6: a">test@0</a>
368 title="853dcd4de2a6: a">test@0</a>
369 </td>
369 </td>
370 <td class="source"><a href="#l14" id="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>
370 <td class="source"><a href="#l14" id="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>
371 </tr>
371 </tr>
372 <tr class="parity0">
372 <tr class="parity0">
373 <td class="annotate">
373 <td class="annotate">
374 <a href="/annotate/853dcd4de2a6/primes.py#15"
374 <a href="/annotate/853dcd4de2a6/primes.py#15"
375 title="853dcd4de2a6: a">test@0</a>
375 title="853dcd4de2a6: a">test@0</a>
376 </td>
376 </td>
377 <td class="source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
377 <td class="source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
378 </tr>
378 </tr>
379 <tr class="parity1">
379 <tr class="parity1">
380 <td class="annotate">
380 <td class="annotate">
381 <a href="/annotate/853dcd4de2a6/primes.py#16"
381 <a href="/annotate/853dcd4de2a6/primes.py#16"
382 title="853dcd4de2a6: a">test@0</a>
382 title="853dcd4de2a6: a">test@0</a>
383 </td>
383 </td>
384 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
384 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
385 </tr>
385 </tr>
386 <tr class="parity0">
386 <tr class="parity0">
387 <td class="annotate">
387 <td class="annotate">
388 <a href="/annotate/853dcd4de2a6/primes.py#17"
388 <a href="/annotate/853dcd4de2a6/primes.py#17"
389 title="853dcd4de2a6: a">test@0</a>
389 title="853dcd4de2a6: a">test@0</a>
390 </td>
390 </td>
391 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
391 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
392 </tr>
392 </tr>
393 <tr class="parity1">
393 <tr class="parity1">
394 <td class="annotate">
394 <td class="annotate">
395 <a href="/annotate/853dcd4de2a6/primes.py#18"
395 <a href="/annotate/853dcd4de2a6/primes.py#18"
396 title="853dcd4de2a6: a">test@0</a>
396 title="853dcd4de2a6: a">test@0</a>
397 </td>
397 </td>
398 <td class="source"><a href="#l18" id="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="mf">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
398 <td class="source"><a href="#l18" id="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="mf">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
399 </tr>
399 </tr>
400 <tr class="parity0">
400 <tr class="parity0">
401 <td class="annotate">
401 <td class="annotate">
402 <a href="/annotate/853dcd4de2a6/primes.py#19"
402 <a href="/annotate/853dcd4de2a6/primes.py#19"
403 title="853dcd4de2a6: a">test@0</a>
403 title="853dcd4de2a6: a">test@0</a>
404 </td>
404 </td>
405 <td class="source"><a href="#l19" id="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>
405 <td class="source"><a href="#l19" id="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>
406 </tr>
406 </tr>
407 <tr class="parity1">
407 <tr class="parity1">
408 <td class="annotate">
408 <td class="annotate">
409 <a href="/annotate/853dcd4de2a6/primes.py#20"
409 <a href="/annotate/853dcd4de2a6/primes.py#20"
410 title="853dcd4de2a6: a">test@0</a>
410 title="853dcd4de2a6: a">test@0</a>
411 </td>
411 </td>
412 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
412 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
413 </tr>
413 </tr>
414 <tr class="parity0">
414 <tr class="parity0">
415 <td class="annotate">
415 <td class="annotate">
416 <a href="/annotate/853dcd4de2a6/primes.py#21"
416 <a href="/annotate/853dcd4de2a6/primes.py#21"
417 title="853dcd4de2a6: a">test@0</a>
417 title="853dcd4de2a6: a">test@0</a>
418 </td>
418 </td>
419 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
419 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
420 </tr>
420 </tr>
421 <tr class="parity1">
421 <tr class="parity1">
422 <td class="annotate">
422 <td class="annotate">
423 <a href="/annotate/853dcd4de2a6/primes.py#22"
423 <a href="/annotate/853dcd4de2a6/primes.py#22"
424 title="853dcd4de2a6: a">test@0</a>
424 title="853dcd4de2a6: a">test@0</a>
425 </td>
425 </td>
426 <td class="source"><a href="#l22" id="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="mf">2</span> <span class="o">==</span> <span class="mf">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
426 <td class="source"><a href="#l22" id="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="mf">2</span> <span class="o">==</span> <span class="mf">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
427 </tr>
427 </tr>
428 <tr class="parity0">
428 <tr class="parity0">
429 <td class="annotate">
429 <td class="annotate">
430 <a href="/annotate/853dcd4de2a6/primes.py#23"
430 <a href="/annotate/853dcd4de2a6/primes.py#23"
431 title="853dcd4de2a6: a">test@0</a>
431 title="853dcd4de2a6: a">test@0</a>
432 </td>
432 </td>
433 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mf">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="mf">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
433 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mf">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="mf">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
434 </tr>
434 </tr>
435 <tr class="parity1">
435 <tr class="parity1">
436 <td class="annotate">
436 <td class="annotate">
437 <a href="/annotate/853dcd4de2a6/primes.py#24"
437 <a href="/annotate/853dcd4de2a6/primes.py#24"
438 title="853dcd4de2a6: a">test@0</a>
438 title="853dcd4de2a6: a">test@0</a>
439 </td>
439 </td>
440 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
440 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
441 </tr>
441 </tr>
442 <tr class="parity0">
442 <tr class="parity0">
443 <td class="annotate">
443 <td class="annotate">
444 <a href="/annotate/853dcd4de2a6/primes.py#25"
444 <a href="/annotate/853dcd4de2a6/primes.py#25"
445 title="853dcd4de2a6: a">test@0</a>
445 title="853dcd4de2a6: a">test@0</a>
446 </td>
446 </td>
447 <td class="source"><a href="#l25" id="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>
447 <td class="source"><a href="#l25" id="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>
448 </tr>
448 </tr>
449 <tr class="parity1">
449 <tr class="parity1">
450 <td class="annotate">
450 <td class="annotate">
451 <a href="/annotate/853dcd4de2a6/primes.py#26"
451 <a href="/annotate/853dcd4de2a6/primes.py#26"
452 title="853dcd4de2a6: a">test@0</a>
452 title="853dcd4de2a6: a">test@0</a>
453 </td>
453 </td>
454 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
454 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
455 </tr>
455 </tr>
456 <tr class="parity0">
456 <tr class="parity0">
457 <td class="annotate">
457 <td class="annotate">
458 <a href="/annotate/853dcd4de2a6/primes.py#27"
458 <a href="/annotate/853dcd4de2a6/primes.py#27"
459 title="853dcd4de2a6: a">test@0</a>
459 title="853dcd4de2a6: a">test@0</a>
460 </td>
460 </td>
461 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
461 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
462 </tr>
462 </tr>
463 <tr class="parity1">
463 <tr class="parity1">
464 <td class="annotate">
464 <td class="annotate">
465 <a href="/annotate/853dcd4de2a6/primes.py#28"
465 <a href="/annotate/853dcd4de2a6/primes.py#28"
466 title="853dcd4de2a6: a">test@0</a>
466 title="853dcd4de2a6: a">test@0</a>
467 </td>
467 </td>
468 <td class="source"><a href="#l28" id="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="mf">1</span><span class="p">])</span></td>
468 <td class="source"><a href="#l28" id="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="mf">1</span><span class="p">])</span></td>
469 </tr>
469 </tr>
470 <tr class="parity0">
470 <tr class="parity0">
471 <td class="annotate">
471 <td class="annotate">
472 <a href="/annotate/853dcd4de2a6/primes.py#29"
472 <a href="/annotate/853dcd4de2a6/primes.py#29"
473 title="853dcd4de2a6: a">test@0</a>
473 title="853dcd4de2a6: a">test@0</a>
474 </td>
474 </td>
475 <td class="source"><a href="#l29" id="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>
475 <td class="source"><a href="#l29" id="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>
476 </tr>
476 </tr>
477 <tr class="parity1">
477 <tr class="parity1">
478 <td class="annotate">
478 <td class="annotate">
479 <a href="/annotate/853dcd4de2a6/primes.py#30"
479 <a href="/annotate/853dcd4de2a6/primes.py#30"
480 title="853dcd4de2a6: a">test@0</a>
480 title="853dcd4de2a6: a">test@0</a>
481 </td>
481 </td>
482 <td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mf">10</span></td>
482 <td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mf">10</span></td>
483 </tr>
483 </tr>
484 <tr class="parity0">
484 <tr class="parity0">
485 <td class="annotate">
485 <td class="annotate">
486 <a href="/annotate/853dcd4de2a6/primes.py#31"
486 <a href="/annotate/853dcd4de2a6/primes.py#31"
487 title="853dcd4de2a6: a">test@0</a>
487 title="853dcd4de2a6: a">test@0</a>
488 </td>
488 </td>
489 <td class="source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
489 <td class="source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
490 </tr>
490 </tr>
491 <tr class="parity1">
491 <tr class="parity1">
492 <td class="annotate">
492 <td class="annotate">
493 <a href="/annotate/853dcd4de2a6/primes.py#32"
493 <a href="/annotate/853dcd4de2a6/primes.py#32"
494 title="853dcd4de2a6: a">test@0</a>
494 title="853dcd4de2a6: a">test@0</a>
495 </td>
495 </td>
496 <td class="source"><a href="#l32" id="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>
496 <td class="source"><a href="#l32" id="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>
497 </tr>
497 </tr>
498 </table>
498 </table>
499 </div>
499 </div>
500 </div>
500 </div>
501 </div>
501 </div>
502
502
503 <script type="text/javascript">process_dates()</script>
503 <script type="text/javascript">process_dates()</script>
504
504
505
505
506 </body>
506 </body>
507 </html>
507 </html>
508
508
509
509
510 hgweb fileannotate, raw
510 hgweb fileannotate, raw
511
511
512 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \
512 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \
513 > | sed "s/test@//" > a
513 > | sed "s/test@//" > a
514 $ echo "200 Script output follows" > b
514 $ echo "200 Script output follows" > b
515 $ echo "" >> b
515 $ echo "" >> b
516 $ echo "" >> b
516 $ echo "" >> b
517 $ hg annotate "primes.py" >> b
517 $ hg annotate "primes.py" >> b
518 $ echo "" >> b
518 $ echo "" >> b
519 $ echo "" >> b
519 $ echo "" >> b
520 $ echo "" >> b
520 $ echo "" >> b
521 $ echo "" >> b
521 $ echo "" >> b
522 $ diff -u b a
522 $ diff -u b a
523
523
524 hgweb filerevision, raw
524 hgweb filerevision, raw
525
525
526 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \
526 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \
527 > > a
527 > > a
528 $ echo "200 Script output follows" > b
528 $ echo "200 Script output follows" > b
529 $ echo "" >> b
529 $ echo "" >> b
530 $ hg cat primes.py >> b
530 $ hg cat primes.py >> b
531 $ diff -u b a
531 $ diff -u b a
532
532
533 hgweb highlightcss friendly
533 hgweb highlightcss friendly
534
534
535 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
535 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
536 $ head -n 4 out
536 $ head -n 4 out
537 200 Script output follows
537 200 Script output follows
538
538
539 /* pygments_style = friendly */
539 /* pygments_style = friendly */
540
540
541 $ rm out
541 $ rm out
542
542
543 errors encountered
543 errors encountered
544
544
545 $ cat errors.log
545 $ cat errors.log
546 $ "$TESTDIR/killdaemons.py"
546 $ "$TESTDIR/killdaemons.py"
547
547
548 Change the pygments style
548 Change the pygments style
549
549
550 $ cat > .hg/hgrc <<EOF
550 $ cat > .hg/hgrc <<EOF
551 > [web]
551 > [web]
552 > pygments_style = fruity
552 > pygments_style = fruity
553 > EOF
553 > EOF
554
554
555 hg serve again
555 hg serve again
556
556
557 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
557 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
558 $ cat hg.pid >> $DAEMON_PIDS
558 $ cat hg.pid >> $DAEMON_PIDS
559
559
560 hgweb highlightcss fruity
560 hgweb highlightcss fruity
561
561
562 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
562 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
563 $ head -n 4 out
563 $ head -n 4 out
564 200 Script output follows
564 200 Script output follows
565
565
566 /* pygments_style = fruity */
566 /* pygments_style = fruity */
567
567
568 $ rm out
568 $ rm out
569
569
570 errors encountered
570 errors encountered
571
571
572 $ cat errors.log
572 $ cat errors.log
573 $ cd ..
573 $ cd ..
574 $ hg init eucjp
574 $ hg init eucjp
575 $ cd eucjp
575 $ cd eucjp
576 $ python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
576 $ python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
577 $ hg ci -Ama
577 $ hg ci -Ama
578 adding eucjp.txt
578 adding eucjp.txt
579 $ hgserveget () {
579 $ hgserveget () {
580 > "$TESTDIR/killdaemons.py"
580 > "$TESTDIR/killdaemons.py"
581 > echo % HGENCODING="$1" hg serve
581 > echo % HGENCODING="$1" hg serve
582 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
582 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
583 > cat hg.pid >> $DAEMON_PIDS
583 > cat hg.pid >> $DAEMON_PIDS
584 >
584 >
585 > echo % hgweb filerevision, html
585 > echo % hgweb filerevision, html
586 > "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \
586 > "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \
587 > | grep '<div class="parity0 source">'
587 > | grep '<div class="parity0 source">'
588 > echo % errors encountered
588 > echo % errors encountered
589 > cat errors.log
589 > cat errors.log
590 > }
590 > }
591 $ hgserveget euc-jp eucjp.txt
591 $ hgserveget euc-jp eucjp.txt
592 % HGENCODING=euc-jp hg serve
592 % HGENCODING=euc-jp hg serve
593 % hgweb filerevision, html
593 % hgweb filerevision, html
594 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div> (esc)
594 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div> (esc)
595 % errors encountered
595 % errors encountered
596 $ hgserveget utf-8 eucjp.txt
596 $ hgserveget utf-8 eucjp.txt
597 % HGENCODING=utf-8 hg serve
597 % HGENCODING=utf-8 hg serve
598 % hgweb filerevision, html
598 % hgweb filerevision, html
599 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div> (esc)
599 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div> (esc)
600 % errors encountered
600 % errors encountered
601 $ hgserveget us-ascii eucjp.txt
601 $ hgserveget us-ascii eucjp.txt
602 % HGENCODING=us-ascii hg serve
602 % HGENCODING=us-ascii hg serve
603 % hgweb filerevision, html
603 % hgweb filerevision, html
604 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
604 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
605 % errors encountered
605 % errors encountered
General Comments 0
You need to be logged in to leave comments. Login now