##// 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
1 1 default = 'shortlog'
2 2
3 3 mimetype = 'text/html; charset={encoding}'
4 4 header = header.tmpl
5 5 footer = ../paper/footer.tmpl
6 6 search = ../paper/search.tmpl
7 7
8 8 changelog = ../paper/shortlog.tmpl
9 9 shortlog = ../paper/shortlog.tmpl
10 10 shortlogentry = ../paper/shortlogentry.tmpl
11 11 graph = ../paper/graph.tmpl
12 12
13 13 help = ../paper/help.tmpl
14 14 helptopics = ../paper/helptopics.tmpl
15 15
16 16 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
17 17
18 18 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 19 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 20 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
21 21 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
22 22 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 23 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
24 24 filenolink = '{file|escape} '
25 25 fileellipses = '...'
26 26 diffstatlink = ../paper/diffstat.tmpl
27 27 diffstatnolink = ../paper/diffstat.tmpl
28 28 changelogentry = ../paper/shortlogentry.tmpl
29 29 searchentry = ../paper/shortlogentry.tmpl
30 30 changeset = ../paper/changeset.tmpl
31 31 manifest = ../paper/manifest.tmpl
32 32
33 33 nav = '{before%naventry} {after%naventry}'
34 34 navshort = '{before%navshortentry}{after%navshortentry}'
35 35 navgraph = '{before%navgraphentry}{after%navgraphentry}'
36 36 filenav = '{before%filenaventry}{after%filenaventry}'
37 37
38 38 direntry = '
39 39 <tr class="fileline parity{parity}">
40 40 <td class="name">
41 41 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
42 42 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
43 43 </a>
44 44 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
45 45 {emptydirs|escape}
46 46 </a>
47 47 </td>
48 48 <td class="size"></td>
49 49 <td class="permissions">drwxr-xr-x</td>
50 50 </tr>'
51 51
52 52 fileentry = '
53 53 <tr class="fileline parity{parity}">
54 54 <td class="filename">
55 55 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
56 56 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
57 57 </a>
58 58 </td>
59 59 <td class="size">{size}</td>
60 60 <td class="permissions">{permissions|permissions}</td>
61 61 </tr>'
62 62
63 63 filerevision = ../paper/filerevision.tmpl
64 64 fileannotate = ../paper/fileannotate.tmpl
65 65 filediff = ../paper/filediff.tmpl
66 66 filelog = ../paper/filelog.tmpl
67 67 fileline = '
68 68 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
69 69 filelogentry = ../paper/filelogentry.tmpl
70 70
71 71 annotateline = '
72 72 <tr class="parity{parity}">
73 73 <td class="annotate">
74 74 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
75 75 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
76 76 </td>
77 77 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
78 78 </tr>'
79 79
80 80 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
81 81 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
82 82 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
83 83 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
84 84 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
85 85
86 86 changelogparent = '
87 87 <tr>
88 88 <th class="parent">parent {rev}:</th>
89 89 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
90 90 </tr>'
91 91
92 92 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
93 93
94 94 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
95 95 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
96 96
97 97 filerename = '{file|escape}@'
98 98 filelogrename = '
99 99 <span class="base">
100 100 base
101 101 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
102 102 {file|escape}@{node|short}
103 103 </a>
104 104 </span>'
105 105 fileannotateparent = '
106 106 <tr>
107 107 <td class="metatag">parent:</td>
108 108 <td>
109 109 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
110 110 {rename%filerename}{node|short}
111 111 </a>
112 112 </td>
113 113 </tr>'
114 114 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
115 115 changelogchild = '
116 116 <tr>
117 117 <th class="child">child</th>
118 118 <td class="child">
119 119 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
120 120 {node|short}
121 121 </a>
122 122 </td>
123 123 </tr>'
124 124 fileannotatechild = '
125 125 <tr>
126 126 <td class="metatag">child:</td>
127 127 <td>
128 128 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
129 129 {node|short}
130 130 </a>
131 131 </td>
132 132 </tr>'
133 133 tags = ../paper/tags.tmpl
134 134 tagentry = '
135 135 <tr class="tagEntry parity{parity}">
136 136 <td>
137 137 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
138 138 {tag|escape}
139 139 </a>
140 140 </td>
141 141 <td class="node">
142 142 {node|short}
143 143 </td>
144 144 </tr>'
145 145 bookmarks = ../paper/bookmarks.tmpl
146 146 bookmarkentry = '
147 147 <tr class="tagEntry parity{parity}">
148 148 <td>
149 149 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
150 150 {bookmark|escape}
151 151 </a>
152 152 </td>
153 153 <td class="node">
154 154 {node|short}
155 155 </td>
156 156 </tr>'
157 157 branches = ../paper/branches.tmpl
158 158 branchentry = '
159 159 <tr class="tagEntry parity{parity}">
160 160 <td>
161 161 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
162 162 {branch|escape}
163 163 </a>
164 164 </td>
165 165 <td class="node">
166 166 {node|short}
167 167 </td>
168 168 </tr>'
169 169 changelogtag = '<span class="tag">{name|escape}</span> '
170 170 changesettag = '<span class="tag">{tag|escape}</span> '
171 171 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
172 172 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
173 173 changelogbranchname = '<span class="branchname">{name|escape}</span> '
174 174
175 175 filediffparent = '
176 176 <tr>
177 177 <th class="parent">parent {rev}:</th>
178 178 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
179 179 </tr>'
180 180 filelogparent = '
181 181 <tr>
182 182 <th>parent {rev}:</th>
183 183 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
184 184 </tr>'
185 185 filediffchild = '
186 186 <tr>
187 187 <th class="child">child {rev}:</th>
188 188 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
189 189 </td>
190 190 </tr>'
191 191 filelogchild = '
192 192 <tr>
193 193 <th>child {rev}:</th>
194 194 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
195 195 </tr>'
196 196
197 197 indexentry = '
198 198 <tr class="parity{parity}">
199 199 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
200 200 <td>{description}</td>
201 201 <td>{contact|obfuscate}</td>
202 <td class="age">{lastchange|date}</td>
202 <td class="age">{lastchange|rfc822date}</td>
203 203 <td class="indexlinks">{archives%indexarchiveentry}</td>
204 204 </tr>\n'
205 205 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
206 206 index = ../paper/index.tmpl
207 207 archiveentry = '
208 208 <li>
209 209 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
210 210 </li>'
211 211 notfound = ../paper/notfound.tmpl
212 212 error = ../paper/error.tmpl
213 213 urlparameter = '{separator}{name}={value|urlescape}'
214 214 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,14 +1,14
1 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 3 </div>
4 4 <div class="title_text">
5 5 <div class="log_link">
6 6 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
7 7 </div>
8 8 <i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
9 9 </div>
10 10 <div class="log_body">
11 11 {desc|strip|escape|addbreaks|nonempty}
12 12 <br/>
13 13 <br/>
14 14 </div>
@@ -1,53 +1,53
1 1 {header}
2 2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 3 <link rel="alternate" type="application/atom+xml"
4 4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 5 <link rel="alternate" type="application/rss+xml"
6 6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 7 </head>
8 8 <body>
9 9
10 10 <div class="page_header">
11 11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
12 12 </div>
13 13
14 14 <div class="page_nav">
15 15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 16 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
17 17 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
18 18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 22 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
23 23 changeset |
24 24 <a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry} |
25 25 <a href="{url}help{sessionvars%urlparameter}">help</a>
26 26 <br/>
27 27 </div>
28 28
29 29 <div>
30 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 31 </div>
32 32 <div class="title_text">
33 33 <table cellspacing="0">
34 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 36 {branch%changesetbranch}
37 37 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
38 38 {parent%changesetparent}
39 39 {child%changesetchild}
40 40 </table></div>
41 41
42 42 <div class="page_body">
43 43 {desc|strip|escape|addbreaks|nonempty}
44 44 </div>
45 45 <div class="list_head"></div>
46 46 <div class="title_text">
47 47 <table cellspacing="0">
48 48 {files}
49 49 </table></div>
50 50
51 51 <div class="page_body">{diff}</div>
52 52
53 53 {footer}
@@ -1,65 +1,65
1 1 {header}
2 2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 3 <link rel="alternate" type="application/atom+xml"
4 4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 5 <link rel="alternate" type="application/rss+xml"
6 6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 7 </head>
8 8 <body>
9 9
10 10 <div class="page_header">
11 11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
12 12 </div>
13 13
14 14 <div class="page_nav">
15 15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
23 23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
24 24 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
25 25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
26 26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
27 27 annotate |
28 28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 29 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a> |
30 30 <a href="{url}help{sessionvars%urlparameter}">help</a>
31 31 <br/>
32 32 </div>
33 33
34 34 <div class="title">{file|escape}</div>
35 35
36 36 <div class="title_text">
37 37 <table cellspacing="0">
38 38 <tr>
39 39 <td>author</td>
40 40 <td>{author|obfuscate}</td></tr>
41 41 <tr>
42 42 <td></td>
43 <td class="date age">{date|date}</td></tr>
43 <td class="date age">{date|rfc822date}</td></tr>
44 44 {branch%filerevbranch}
45 45 <tr>
46 46 <td>changeset {rev}</td>
47 47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
48 48 {parent%fileannotateparent}
49 49 {child%fileannotatechild}
50 50 <tr>
51 51 <td>permissions</td>
52 52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
53 53 </table>
54 54 </div>
55 55
56 56 <div class="page_path">
57 57 {desc|strip|escape|addbreaks|nonempty}
58 58 </div>
59 59 <div class="page_body">
60 60 <table>
61 61 {annotate%annotateline}
62 62 </table>
63 63 </div>
64 64
65 65 {footer}
@@ -1,64 +1,64
1 1 {header}
2 2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 3 <link rel="alternate" type="application/atom+xml"
4 4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 5 <link rel="alternate" type="application/rss+xml"
6 6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 7 </head>
8 8 <body>
9 9
10 10 <div class="page_header">
11 11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
12 12 </div>
13 13
14 14 <div class="page_nav">
15 15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
23 23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
24 24 file |
25 25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
26 26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
27 27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 29 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a> |
30 30 <a href="{url}help{sessionvars%urlparameter}">help</a>
31 31 <br/>
32 32 </div>
33 33
34 34 <div class="title">{file|escape}</div>
35 35
36 36 <div class="title_text">
37 37 <table cellspacing="0">
38 38 <tr>
39 39 <td>author</td>
40 40 <td>{author|obfuscate}</td></tr>
41 41 <tr>
42 42 <td></td>
43 <td class="date age">{date|date}</td></tr>
43 <td class="date age">{date|rfc822date}</td></tr>
44 44 {branch%filerevbranch}
45 45 <tr>
46 46 <td>changeset {rev}</td>
47 47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
48 48 {parent%filerevparent}
49 49 {child%filerevchild}
50 50 <tr>
51 51 <td>permissions</td>
52 52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
53 53 </table>
54 54 </div>
55 55
56 56 <div class="page_path">
57 57 {desc|strip|escape|addbreaks|nonempty}
58 58 </div>
59 59
60 60 <div class="page_body">
61 61 {text%fileline}
62 62 </div>
63 63
64 64 {footer}
@@ -1,272 +1,272
1 1 default = 'summary'
2 2 mimetype = 'text/html; charset={encoding}'
3 3 header = header.tmpl
4 4 footer = footer.tmpl
5 5 search = search.tmpl
6 6 changelog = changelog.tmpl
7 7 summary = summary.tmpl
8 8 error = error.tmpl
9 9 notfound = notfound.tmpl
10 10
11 11 help = help.tmpl
12 12 helptopics = helptopics.tmpl
13 13
14 14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15 15
16 16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
20 20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 21 filenodelink = '
22 22 <tr class="parity{parity}">
23 23 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
24 24 <td></td>
25 25 <td class="link">
26 26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
27 27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
30 30 </td>
31 31 </tr>'
32 32 filenolink = '
33 33 <tr class="parity{parity}">
34 34 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
35 35 <td></td>
36 36 <td class="link">
37 37 file |
38 38 annotate |
39 39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
40 40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
41 41 </td>
42 42 </tr>'
43 43
44 44 nav = '{before%naventry} {after%naventry}'
45 45 navshort = '{before%navshortentry}{after%navshortentry}'
46 46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
47 47 filenav = '{before%filenaventry}{after%filenaventry}'
48 48
49 49 fileellipses = '...'
50 50 changelogentry = changelogentry.tmpl
51 51 searchentry = changelogentry.tmpl
52 52 changeset = changeset.tmpl
53 53 manifest = manifest.tmpl
54 54 direntry = '
55 55 <tr class="parity{parity}">
56 56 <td style="font-family:monospace">drwxr-xr-x</td>
57 57 <td style="font-family:monospace"></td>
58 58 <td style="font-family:monospace"></td>
59 59 <td>
60 60 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
61 61 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
62 62 </td>
63 63 <td class="link">
64 64 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
65 65 </td>
66 66 </tr>'
67 67 fileentry = '
68 68 <tr class="parity{parity}">
69 69 <td style="font-family:monospace">{permissions|permissions}</td>
70 70 <td style="font-family:monospace" align=right>{date|isodate}</td>
71 71 <td style="font-family:monospace" align=right>{size}</td>
72 72 <td class="list">
73 73 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
74 74 </td>
75 75 <td class="link">
76 76 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
77 77 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
78 78 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
79 79 </td>
80 80 </tr>'
81 81 filerevision = filerevision.tmpl
82 82 fileannotate = fileannotate.tmpl
83 83 filediff = filediff.tmpl
84 84 filelog = filelog.tmpl
85 85 fileline = '
86 86 <div style="font-family:monospace" class="parity{parity}">
87 87 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
88 88 </div>'
89 89 annotateline = '
90 90 <tr style="font-family:monospace" class="parity{parity}">
91 91 <td class="linenr" style="text-align: right;">
92 92 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
93 93 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
94 94 </td>
95 95 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
96 96 <td><pre>{line|escape}</pre></td>
97 97 </tr>'
98 98 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
99 99 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
100 100 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
101 101 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
102 102 changelogparent = '
103 103 <tr>
104 104 <th class="parent">parent {rev}:</th>
105 105 <td class="parent">
106 106 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
107 107 </td>
108 108 </tr>'
109 109 changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
110 110 changesetparent = '
111 111 <tr>
112 112 <td>parent {rev}</td>
113 113 <td style="font-family:monospace">
114 114 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
115 115 </td>
116 116 </tr>'
117 117 filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
118 118 filerevparent = '
119 119 <tr>
120 120 <td>parent {rev}</td>
121 121 <td style="font-family:monospace">
122 122 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
123 123 {rename%filerename}{node|short}
124 124 </a>
125 125 </td>
126 126 </tr>'
127 127 filerename = '{file|escape}@'
128 128 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
129 129 fileannotateparent = '
130 130 <tr>
131 131 <td>parent {rev}</td>
132 132 <td style="font-family:monospace">
133 133 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
134 134 {rename%filerename}{node|short}
135 135 </a>
136 136 </td>
137 137 </tr>'
138 138 changelogchild = '
139 139 <tr>
140 140 <th class="child">child {rev}:</th>
141 141 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
142 142 </tr>'
143 143 changesetchild = '
144 144 <tr>
145 145 <td>child {rev}</td>
146 146 <td style="font-family:monospace">
147 147 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
148 148 </td>
149 149 </tr>'
150 150 filerevchild = '
151 151 <tr>
152 152 <td>child {rev}</td>
153 153 <td style="font-family:monospace">
154 154 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
155 155 </tr>'
156 156 fileannotatechild = '
157 157 <tr>
158 158 <td>child {rev}</td>
159 159 <td style="font-family:monospace">
160 160 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
161 161 </tr>'
162 162 tags = tags.tmpl
163 163 tagentry = '
164 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 166 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
167 167 <td class="link">
168 168 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
169 169 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
170 170 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
171 171 </td>
172 172 </tr>'
173 173 bookmarks = bookmarks.tmpl
174 174 bookmarkentry = '
175 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 177 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
178 178 <td class="link">
179 179 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
180 180 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
181 181 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
182 182 </td>
183 183 </tr>'
184 184 branches = branches.tmpl
185 185 branchentry = '
186 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 188 <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
189 189 <td class="{status}">{branch|escape}</td>
190 190 <td class="link">
191 191 <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
192 192 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
193 193 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
194 194 </td>
195 195 </tr>'
196 196 diffblock = '<pre>{lines}</pre>'
197 197 filediffparent = '
198 198 <tr>
199 199 <td>parent {rev}</td>
200 200 <td style="font-family:monospace">
201 201 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
202 202 {node|short}
203 203 </a>
204 204 </td>
205 205 </tr>'
206 206 filelogparent = '
207 207 <tr>
208 208 <td align="right">parent {rev}:&nbsp;</td>
209 209 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
210 210 </tr>'
211 211 filediffchild = '
212 212 <tr>
213 213 <td>child {rev}</td>
214 214 <td style="font-family:monospace">
215 215 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
216 216 </td>
217 217 </tr>'
218 218 filelogchild = '
219 219 <tr>
220 220 <td align="right">child {rev}:&nbsp;</td>
221 221 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
222 222 </tr>'
223 223 shortlog = shortlog.tmpl
224 224 graph = graph.tmpl
225 225 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
226 226 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
227 227 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
228 228 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
229 229 shortlogentry = '
230 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 232 <td><i>{author|person}</i></td>
233 233 <td>
234 234 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
235 235 <b>{desc|strip|firstline|escape|nonempty}</b>
236 236 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
237 237 </a>
238 238 </td>
239 239 <td class="link" nowrap>
240 240 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
241 241 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
242 242 </td>
243 243 </tr>'
244 244 filelogentry = '
245 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 247 <td>
248 248 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
249 249 <b>{desc|strip|firstline|escape|nonempty}</b>
250 250 </a>
251 251 </td>
252 252 <td class="link">
253 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 254 </tr>'
255 255 archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
256 256 indexentry = '
257 257 <tr class="parity{parity}">
258 258 <td>
259 259 <a class="list" href="{url}{sessionvars%urlparameter}">
260 260 <b>{name|escape}</b>
261 261 </a>
262 262 </td>
263 263 <td>{description}</td>
264 264 <td>{contact|obfuscate}</td>
265 <td class="age">{lastchange|date}</td>
265 <td class="age">{lastchange|rfc822date}</td>
266 266 <td class="indexlinks">{archives%indexarchiveentry}</td>
267 267 <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
268 268 </tr>\n'
269 269 indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
270 270 index = index.tmpl
271 271 urlparameter = '{separator}{name}={value|urlescape}'
272 272 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,6 +1,6
1 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 2 <ul class="changelog-entry">
3 <li class="age">{date|date}</li>
3 <li class="age">{date|rfc822date}</li>
4 4 <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
5 5 <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
6 6 </ul>
@@ -1,65 +1,65
1 1 {header}
2 2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 5 </head>
6 6
7 7 <body>
8 8 <div id="container">
9 9 <div class="page-header">
10 10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
11 11
12 12 <form action="{url}log">
13 13 {sessionvars%hiddenformentry}
14 14 <dl class="search">
15 15 <dt><label>Search: </label></dt>
16 16 <dd><input type="text" name="rev" /></dd>
17 17 </dl>
18 18 </form>
19 19
20 20 <ul class="page-nav">
21 21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 28 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
29 29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 30 </ul>
31 31 </div>
32 32
33 33 <ul class="submenu">
34 34 <li class="current">changeset</li>
35 35 <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
36 36 </ul>
37 37
38 38 <h2 class="no-link no-border">changeset</h2>
39 39
40 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 43 <dl class="overview">
44 44 <dt>author</dt>
45 45 <dd>{author|obfuscate}</dd>
46 46 <dt>date</dt>
47 <dd>{date|date}</dd>
47 <dd>{date|rfc822date}</dd>
48 48 {branch%changesetbranch}
49 49 <dt>changeset {rev}</dt>
50 50 <dd>{node|short}</dd>
51 51 {parent%changesetparent}
52 52 {child%changesetchild}
53 53 </dl>
54 54
55 55 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
56 56
57 57 <table>
58 58 {files}
59 59 </table>
60 60
61 61 <div class="diff">
62 62 {diff}
63 63 </div>
64 64
65 65 {footer}
@@ -1,65 +1,65
1 1 {header}
2 2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 5 </head>
6 6
7 7 <body>
8 8 <div id="container">
9 9 <div class="page-header">
10 10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
11 11
12 12 <form action="{url}log">
13 13 {sessionvars%hiddenformentry}
14 14 <dl class="search">
15 15 <dt><label>Search: </label></dt>
16 16 <dd><input type="text" name="rev" /></dd>
17 17 </dl>
18 18 </form>
19 19
20 20 <ul class="page-nav">
21 21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
29 29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 30 </ul>
31 31 </div>
32 32
33 33 <ul class="submenu">
34 34 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
35 35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
36 36 <li class="current">annotate</li>
37 37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
38 38 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
39 39 </ul>
40 40
41 41 <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
42 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 45 <dl class="overview">
46 46 <dt>author</dt>
47 47 <dd>{author|obfuscate}</dd>
48 48 <dt>date</dt>
49 <dd>{date|date}</dd>
49 <dd>{date|rfc822date}</dd>
50 50 {branch%filerevbranch}
51 51 <dt>changeset {rev}</dt>
52 52 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
53 53 {parent%fileannotateparent}
54 54 {child%fileannotatechild}
55 55 <dt>permissions</dt>
56 56 <dd>{permissions|permissions}</dd>
57 57 </dl>
58 58
59 59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
60 60
61 61 <table class="annotated">
62 62 {annotate%annotateline}
63 63 </table>
64 64
65 65 {footer}
@@ -1,65 +1,65
1 1 {header}
2 2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 5 </head>
6 6
7 7 <body>
8 8 <div id="container">
9 9 <div class="page-header">
10 10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
11 11
12 12 <form action="{url}log">
13 13 {sessionvars%hiddenformentry}
14 14 <dl class="search">
15 15 <dt><label>Search: </label></dt>
16 16 <dd><input type="text" name="rev" /></dd>
17 17 </dl>
18 18 </form>
19 19
20 20 <ul class="page-nav">
21 21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
29 29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 30 </ul>
31 31 </div>
32 32
33 33 <ul class="submenu">
34 34 <li class="current">file</li>
35 35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
36 36 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
37 37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
38 38 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
39 39 </ul>
40 40
41 41 <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
42 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 45 <dl class="overview">
46 46 <dt>author</dt>
47 47 <dd>{author|obfuscate}</dd>
48 48 <dt>date</dt>
49 <dd>{date|date}</dd>
49 <dd>{date|rfc822date}</dd>
50 50 {branch%filerevbranch}
51 51 <dt>changeset {rev}</dt>
52 52 <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
53 53 {parent%filerevparent}
54 54 {child%filerevchild}
55 55 <dt>permissions</dt>
56 56 <dd>{permissions|permissions}</dd>
57 57 </dl>
58 58
59 59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
60 60
61 61 <div class="source">
62 62 {text%fileline}
63 63 </div>
64 64
65 65 {footer}
@@ -1,240 +1,240
1 1 default = 'summary'
2 2 mimetype = 'text/html; charset={encoding}'
3 3 header = header.tmpl
4 4 footer = footer.tmpl
5 5 search = search.tmpl
6 6 changelog = changelog.tmpl
7 7 summary = summary.tmpl
8 8 error = error.tmpl
9 9 notfound = notfound.tmpl
10 10
11 11 help = help.tmpl
12 12 helptopics = helptopics.tmpl
13 13
14 14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15 15
16 16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
20 20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 21 filenodelink = '
22 22 <tr class="parity{parity}">
23 23 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
24 24 <td></td>
25 25 <td>
26 26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
27 27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
30 30 </td>
31 31 </tr>'
32 32 filenolink = '
33 33 <tr class="parity{parity}">
34 34 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
35 35 <td></td>
36 36 <td>
37 37 file |
38 38 annotate |
39 39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
40 40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
41 41 </td>
42 42 </tr>'
43 43
44 44 nav = '{before%naventry} {after%naventry}'
45 45 navshort = '{before%navshortentry}{after%navshortentry}'
46 46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
47 47 filenav = '{before%filenaventry}{after%filenaventry}'
48 48
49 49 fileellipses = '...'
50 50 changelogentry = changelogentry.tmpl
51 51 searchentry = changelogentry.tmpl
52 52 changeset = changeset.tmpl
53 53 manifest = manifest.tmpl
54 54 direntry = '
55 55 <tr class="parity{parity}">
56 56 <td>drwxr-xr-x</td>
57 57 <td></td>
58 58 <td></td>
59 59 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
60 60 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
61 61 </tr>'
62 62 fileentry = '
63 63 <tr class="parity{parity}">
64 64 <td>{permissions|permissions}</td>
65 65 <td>{date|isodate}</td>
66 66 <td>{size}</td>
67 67 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
68 68 <td>
69 69 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
70 70 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
71 71 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
72 72 </td>
73 73 </tr>'
74 74 filerevision = filerevision.tmpl
75 75 fileannotate = fileannotate.tmpl
76 76 filediff = filediff.tmpl
77 77 filelog = filelog.tmpl
78 78 fileline = '
79 79 <div style="font-family:monospace" class="parity{parity}">
80 80 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
81 81 </div>'
82 82 annotateline = '
83 83 <tr class="parity{parity}">
84 84 <td class="linenr">
85 85 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
86 86 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
87 87 </td>
88 88 <td class="lineno">
89 89 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
90 90 </td>
91 91 <td class="source">{line|escape}</td>
92 92 </tr>'
93 93 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
94 94 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
95 95 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
96 96 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
97 97 changelogparent = '
98 98 <tr>
99 99 <th class="parent">parent {rev}:</th>
100 100 <td class="parent">
101 101 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
102 102 </td>
103 103 </tr>'
104 104 changesetbranch = '<dt>branch</dt><dd>{name}</dd>'
105 105 changesetparent = '
106 106 <dt>parent {rev}</dt>
107 107 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
108 108 filerevbranch = '<dt>branch</dt><dd>{name}</dd>'
109 109 filerevparent = '
110 110 <dt>parent {rev}</dt>
111 111 <dd>
112 112 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
113 113 {rename%filerename}{node|short}
114 114 </a>
115 115 </dd>'
116 116 filerename = '{file|escape}@'
117 117 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
118 118 fileannotateparent = '
119 119 <dt>parent {rev}</dt>
120 120 <dd>
121 121 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
122 122 {rename%filerename}{node|short}
123 123 </a>
124 124 </dd>'
125 125 changelogchild = '
126 126 <dt>child {rev}:</dt>
127 127 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
128 128 changesetchild = '
129 129 <dt>child {rev}</dt>
130 130 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
131 131 filerevchild = '
132 132 <dt>child {rev}</dt>
133 133 <dd>
134 134 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
135 135 </dd>'
136 136 fileannotatechild = '
137 137 <dt>child {rev}</dt>
138 138 <dd>
139 139 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
140 140 </dd>'
141 141 tags = tags.tmpl
142 142 tagentry = '
143 143 <tr class="parity{parity}">
144 <td class="nowrap age">{date|date}</td>
144 <td class="nowrap age">{date|rfc822date}</td>
145 145 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
146 146 <td class="nowrap">
147 147 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
148 148 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
149 149 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
150 150 </td>
151 151 </tr>'
152 152 bookmarks = bookmarks.tmpl
153 153 bookmarkentry = '
154 154 <tr class="parity{parity}">
155 <td class="nowrap date">{date|date}</td>
155 <td class="nowrap date">{date|rfc822date}</td>
156 156 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
157 157 <td class="nowrap">
158 158 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
159 159 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
160 160 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
161 161 </td>
162 162 </tr>'
163 163 branches = branches.tmpl
164 164 branchentry = '
165 165 <tr class="parity{parity}">
166 <td class="nowrap age">{date|date}</td>
166 <td class="nowrap age">{date|rfc822date}</td>
167 167 <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
168 168 <td class="{status}">{branch|escape}</td>
169 169 <td class="nowrap">
170 170 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
171 171 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
172 172 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
173 173 </td>
174 174 </tr>'
175 175 diffblock = '<pre>{lines}</pre>'
176 176 filediffparent = '
177 177 <dt>parent {rev}</dt>
178 178 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
179 179 filelogparent = '
180 180 <tr>
181 181 <td align="right">parent {rev}:&nbsp;</td>
182 182 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
183 183 </tr>'
184 184 filediffchild = '
185 185 <dt>child {rev}</dt>
186 186 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
187 187 filelogchild = '
188 188 <tr>
189 189 <td align="right">child {rev}:&nbsp;</td>
190 190 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
191 191 </tr>'
192 192 shortlog = shortlog.tmpl
193 193 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
194 194 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
195 195 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
196 196 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
197 197 shortlogentry = '
198 198 <tr class="parity{parity}">
199 <td class="nowrap age">{date|date}</td>
199 <td class="nowrap age">{date|rfc822date}</td>
200 200 <td>{author|person}</td>
201 201 <td>
202 202 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
203 203 {desc|strip|firstline|escape|nonempty}
204 204 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
205 205 </a>
206 206 </td>
207 207 <td class="nowrap">
208 208 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
209 209 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
210 210 </td>
211 211 </tr>'
212 212 filelogentry = '
213 213 <tr class="parity{parity}">
214 <td class="nowrap age">{date|date}</td>
214 <td class="nowrap age">{date|rfc822date}</td>
215 215 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
216 216 <td class="nowrap">
217 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 218 {rename%filelogrename}
219 219 </td>
220 220 </tr>'
221 221 archiveentry = '<li><a href="{url}archive/{node|short}{extension}">{type|escape}</a></li>'
222 222 indexentry = '
223 223 <tr class="parity{parity}">
224 224 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
225 225 <td>{description}</td>
226 226 <td>{contact|obfuscate}</td>
227 <td class="age">{lastchange|date}</td>
227 <td class="age">{lastchange|rfc822date}</td>
228 228 <td class="indexlinks">{archives%indexarchiveentry}</td>
229 229 <td>
230 230 <div class="rss_logo">
231 231 <a href="{url}rss-log">RSS</a>
232 232 <a href="{url}atom-log">Atom</a>
233 233 </div>
234 234 </td>
235 235 </tr>\n'
236 236 indexarchiveentry = '<a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
237 237 index = index.tmpl
238 238 urlparameter = '{separator}{name}={value|urlescape}'
239 239 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
240 240 graph = graph.tmpl
@@ -1,87 +1,87
1 1 {header}
2 2 <title>{repo|escape}: {node|short}</title>
3 3 </head>
4 4 <body>
5 5 <div class="container">
6 6 <div class="menu">
7 7 <div class="logo">
8 8 <a href="{logourl}">
9 9 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
10 10 </div>
11 11 <ul>
12 12 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 13 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 14 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 15 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 17 </ul>
18 18 <ul>
19 19 <li class="active">changeset</li>
20 20 <li><a href="{url}raw-rev/{node|short}{sessionvars%urlparameter}">raw</a></li>
21 21 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">browse</a></li>
22 22 </ul>
23 23 <ul>
24 24 {archives%archiveentry}
25 25 </ul>
26 26 <ul>
27 27 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 28 </ul>
29 29 </div>
30 30
31 31 <div class="main">
32 32
33 33 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
34 34 <h3>changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag} {changesetbookmark}</h3>
35 35
36 36 <form class="search" action="{url}log">
37 37 {sessionvars%hiddenformentry}
38 38 <p><input name="rev" id="search1" type="text" size="30" /></p>
39 39 <div id="hint">find changesets by author, revision,
40 40 files, or words in the commit message</div>
41 41 </form>
42 42
43 43 <div class="description">{desc|strip|escape|nonempty}</div>
44 44
45 45 <table id="changesetEntry">
46 46 <tr>
47 47 <th class="author">author</th>
48 48 <td class="author">{author|obfuscate}</td>
49 49 </tr>
50 50 <tr>
51 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 53 <tr>
54 54 <th class="author">parents</th>
55 55 <td class="author">{parent%changesetparent}</td>
56 56 </tr>
57 57 <tr>
58 58 <th class="author">children</th>
59 59 <td class="author">{child%changesetchild}</td>
60 60 </tr>
61 61 <tr>
62 62 <th class="files">files</th>
63 63 <td class="files">{files}</td>
64 64 </tr>
65 65 <tr>
66 66 <th class="diffstat">diffstat</th>
67 67 <td class="diffstat">
68 68 {diffsummary}
69 69 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
70 70 <div id="diffstatdetails" style="display:none;">
71 71 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
72 72 <p>
73 73 <table>{diffstat}</table>
74 74 </div>
75 75 </td>
76 76 </tr>
77 77 </table>
78 78
79 79 <div class="overflow">
80 80 <div class="sourcefirst"> line diff</div>
81 81
82 82 {diff}
83 83 </div>
84 84
85 85 </div>
86 86 </div>
87 87 {footer}
@@ -1,82 +1,82
1 1 {header}
2 2 <title>{repo|escape}: {file|escape} annotate</title>
3 3 </head>
4 4 <body>
5 5
6 6 <div class="container">
7 7 <div class="menu">
8 8 <div class="logo">
9 9 <a href="{logourl}">
10 10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
11 11 </div>
12 12 <ul>
13 13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
17 17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
18 18 </ul>
19 19
20 20 <ul>
21 21 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
22 22 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
23 23 </ul>
24 24 <ul>
25 25 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
26 26 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
27 27 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
28 28 <li class="active">annotate</li>
29 29 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
30 30 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
31 31 </ul>
32 32 <ul>
33 33 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
34 34 </ul>
35 35 </div>
36 36
37 37 <div class="main">
38 38 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
39 39 <h3>annotate {file|escape} @ {rev}:{node|short}</h3>
40 40
41 41 <form class="search" action="{url}log">
42 42 {sessionvars%hiddenformentry}
43 43 <p><input name="rev" id="search1" type="text" size="30" /></p>
44 44 <div id="hint">find changesets by author, revision,
45 45 files, or words in the commit message</div>
46 46 </form>
47 47
48 48 <div class="description">{desc|strip|escape|nonempty}</div>
49 49
50 50 <table id="changesetEntry">
51 51 <tr>
52 52 <th class="author">author</th>
53 53 <td class="author">{author|obfuscate}</td>
54 54 </tr>
55 55 <tr>
56 56 <th class="date">date</th>
57 <td class="date age">{date|date}</td>
57 <td class="date age">{date|rfc822date}</td>
58 58 </tr>
59 59 <tr>
60 60 <th class="author">parents</th>
61 61 <td class="author">{parent%filerevparent}</td>
62 62 </tr>
63 63 <tr>
64 64 <th class="author">children</th>
65 65 <td class="author">{child%filerevchild}</td>
66 66 </tr>
67 67 {changesettag}
68 68 </table>
69 69
70 70 <div class="overflow">
71 71 <table class="bigtable">
72 72 <tr>
73 73 <th class="annotate">rev</th>
74 74 <th class="line">&nbsp;&nbsp;line source</th>
75 75 </tr>
76 76 {annotate%annotateline}
77 77 </table>
78 78 </div>
79 79 </div>
80 80 </div>
81 81
82 82 {footer}
@@ -1,77 +1,77
1 1 {header}
2 2 <title>{repo|escape}: {file|escape} diff</title>
3 3 </head>
4 4 <body>
5 5
6 6 <div class="container">
7 7 <div class="menu">
8 8 <div class="logo">
9 9 <a href="{logourl}">
10 10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
11 11 </div>
12 12 <ul>
13 13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
17 17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
18 18 </ul>
19 19 <ul>
20 20 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
21 21 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
22 22 </ul>
23 23 <ul>
24 24 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
25 25 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
26 26 <li class="active">diff</li>
27 27 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
28 28 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
29 29 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
30 30 </ul>
31 31 <ul>
32 32 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
33 33 </ul>
34 34 </div>
35 35
36 36 <div class="main">
37 37 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
38 38 <h3>diff {file|escape} @ {rev}:{node|short}</h3>
39 39
40 40 <form class="search" action="{url}log">
41 41 <p>{sessionvars%hiddenformentry}</p>
42 42 <p><input name="rev" id="search1" type="text" size="30" /></p>
43 43 <div id="hint">find changesets by author, revision,
44 44 files, or words in the commit message</div>
45 45 </form>
46 46
47 47 <div class="description">{desc|strip|escape|nonempty}</div>
48 48
49 49 <table id="changesetEntry">
50 50 <tr>
51 51 <th>author</th>
52 52 <td>{author|obfuscate}</td>
53 53 </tr>
54 54 <tr>
55 55 <th>date</th>
56 <td class="date age">{date|date}</td>
56 <td class="date age">{date|rfc822date}</td>
57 57 </tr>
58 58 <tr>
59 59 <th>parents</th>
60 60 <td>{parent%filerevparent}</td>
61 61 </tr>
62 62 <tr>
63 63 <th>children</th>
64 64 <td>{child%filerevchild}</td>
65 65 </tr>
66 66 {changesettag}
67 67 </table>
68 68
69 69 <div class="overflow">
70 70 <div class="sourcefirst"> line diff</div>
71 71
72 72 {diff}
73 73 </div>
74 74 </div>
75 75 </div>
76 76
77 77 {footer}
@@ -1,5 +1,5
1 1 <tr class="parity{parity}">
2 <td class="age">{date|date}</td>
2 <td class="age">{date|rfc822date}</td>
3 3 <td class="author">{author|person}</td>
4 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 5 </tr>
@@ -1,76 +1,76
1 1 {header}
2 2 <title>{repo|escape}: {node|short} {file|escape}</title>
3 3 </head>
4 4 <body>
5 5
6 6 <div class="container">
7 7 <div class="menu">
8 8 <div class="logo">
9 9 <a href="{logourl}">
10 10 <img src="{staticurl}{logoimg}" alt="mercurial" /></a>
11 11 </div>
12 12 <ul>
13 13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 17 </ul>
18 18 <ul>
19 19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 21 </ul>
22 22 <ul>
23 23 <li class="active">file</li>
24 24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 25 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
26 26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
27 27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
29 29 </ul>
30 30 <ul>
31 31 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
32 32 </ul>
33 33 </div>
34 34
35 35 <div class="main">
36 36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
37 37 <h3>view {file|escape} @ {rev}:{node|short}</h3>
38 38
39 39 <form class="search" action="{url}log">
40 40 {sessionvars%hiddenformentry}
41 41 <p><input name="rev" id="search1" type="text" size="30" /></p>
42 42 <div id="hint">find changesets by author, revision,
43 43 files, or words in the commit message</div>
44 44 </form>
45 45
46 46 <div class="description">{desc|strip|escape|nonempty}</div>
47 47
48 48 <table id="changesetEntry">
49 49 <tr>
50 50 <th class="author">author</th>
51 51 <td class="author">{author|obfuscate}</td>
52 52 </tr>
53 53 <tr>
54 54 <th class="date">date</th>
55 <td class="date age">{date|date}</td>
55 <td class="date age">{date|rfc822date}</td>
56 56 </tr>
57 57 <tr>
58 58 <th class="author">parents</th>
59 59 <td class="author">{parent%filerevparent}</td>
60 60 </tr>
61 61 <tr>
62 62 <th class="author">children</th>
63 63 <td class="author">{child%filerevchild}</td>
64 64 </tr>
65 65 {changesettag}
66 66 </table>
67 67
68 68 <div class="overflow">
69 69 <div class="sourcefirst"> line source</div>
70 70 {text%fileline}
71 71 <div class="sourcelast"></div>
72 72 </div>
73 73 </div>
74 74 </div>
75 75
76 76 {footer}
@@ -1,213 +1,213
1 1 default = 'shortlog'
2 2
3 3 mimetype = 'text/html; charset={encoding}'
4 4 header = header.tmpl
5 5 footer = footer.tmpl
6 6 search = search.tmpl
7 7
8 8 changelog = shortlog.tmpl
9 9 shortlog = shortlog.tmpl
10 10 shortlogentry = shortlogentry.tmpl
11 11 graph = graph.tmpl
12 12 help = help.tmpl
13 13 helptopics = helptopics.tmpl
14 14
15 15 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
16 16
17 17 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 18 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 19 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 20 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
21 21 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
22 22 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 23 filenolink = '{file|escape} '
24 24 fileellipses = '...'
25 25 diffstatlink = diffstat.tmpl
26 26 diffstatnolink = diffstat.tmpl
27 27 changelogentry = shortlogentry.tmpl
28 28 searchentry = shortlogentry.tmpl
29 29 changeset = changeset.tmpl
30 30 manifest = manifest.tmpl
31 31
32 32 nav = '{before%naventry} {after%naventry}'
33 33 navshort = '{before%navshortentry}{after%navshortentry}'
34 34 navgraph = '{before%navgraphentry}{after%navgraphentry}'
35 35 filenav = '{before%filenaventry}{after%filenaventry}'
36 36
37 37 direntry = '
38 38 <tr class="fileline parity{parity}">
39 39 <td class="name">
40 40 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
41 41 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
42 42 </a>
43 43 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
44 44 {emptydirs|escape}
45 45 </a>
46 46 </td>
47 47 <td class="size"></td>
48 48 <td class="permissions">drwxr-xr-x</td>
49 49 </tr>'
50 50
51 51 fileentry = '
52 52 <tr class="fileline parity{parity}">
53 53 <td class="filename">
54 54 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
55 55 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
56 56 </a>
57 57 </td>
58 58 <td class="size">{size}</td>
59 59 <td class="permissions">{permissions|permissions}</td>
60 60 </tr>'
61 61
62 62 filerevision = filerevision.tmpl
63 63 fileannotate = fileannotate.tmpl
64 64 filediff = filediff.tmpl
65 65 filelog = filelog.tmpl
66 66 fileline = '
67 67 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
68 68 filelogentry = filelogentry.tmpl
69 69
70 70 annotateline = '
71 71 <tr class="parity{parity}">
72 72 <td class="annotate">
73 73 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
74 74 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
75 75 </td>
76 76 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
77 77 </tr>'
78 78
79 79 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
80 80 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
81 81 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
82 82 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
83 83 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
84 84
85 85 changelogparent = '
86 86 <tr>
87 87 <th class="parent">parent {rev}:</th>
88 88 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
89 89 </tr>'
90 90
91 91 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
92 92
93 93 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
94 94 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
95 95
96 96 filerename = '{file|escape}@'
97 97 filelogrename = '
98 98 <span class="base">
99 99 base
100 100 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
101 101 {file|escape}@{node|short}
102 102 </a>
103 103 </span>'
104 104 fileannotateparent = '
105 105 <tr>
106 106 <td class="metatag">parent:</td>
107 107 <td>
108 108 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
109 109 {rename%filerename}{node|short}
110 110 </a>
111 111 </td>
112 112 </tr>'
113 113 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
114 114 changelogchild = '
115 115 <tr>
116 116 <th class="child">child</th>
117 117 <td class="child">
118 118 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
119 119 {node|short}
120 120 </a>
121 121 </td>
122 122 </tr>'
123 123 fileannotatechild = '
124 124 <tr>
125 125 <td class="metatag">child:</td>
126 126 <td>
127 127 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
128 128 {node|short}
129 129 </a>
130 130 </td>
131 131 </tr>'
132 132 tags = tags.tmpl
133 133 tagentry = '
134 134 <tr class="tagEntry parity{parity}">
135 135 <td>
136 136 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
137 137 {tag|escape}
138 138 </a>
139 139 </td>
140 140 <td class="node">
141 141 {node|short}
142 142 </td>
143 143 </tr>'
144 144 bookmarks = bookmarks.tmpl
145 145 bookmarkentry = '
146 146 <tr class="tagEntry parity{parity}">
147 147 <td>
148 148 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
149 149 {bookmark|escape}
150 150 </a>
151 151 </td>
152 152 <td class="node">
153 153 {node|short}
154 154 </td>
155 155 </tr>'
156 156 branches = branches.tmpl
157 157 branchentry = '
158 158 <tr class="tagEntry parity{parity}">
159 159 <td>
160 160 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
161 161 {branch|escape}
162 162 </a>
163 163 </td>
164 164 <td class="node">
165 165 {node|short}
166 166 </td>
167 167 </tr>'
168 168 changelogtag = '<span class="tag">{name|escape}</span> '
169 169 changesettag = '<span class="tag">{tag|escape}</span> '
170 170 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
171 171 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
172 172 changelogbranchname = '<span class="branchname">{name|escape}</span> '
173 173
174 174 filediffparent = '
175 175 <tr>
176 176 <th class="parent">parent {rev}:</th>
177 177 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
178 178 </tr>'
179 179 filelogparent = '
180 180 <tr>
181 181 <th>parent {rev}:</th>
182 182 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
183 183 </tr>'
184 184 filediffchild = '
185 185 <tr>
186 186 <th class="child">child {rev}:</th>
187 187 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
188 188 </td>
189 189 </tr>'
190 190 filelogchild = '
191 191 <tr>
192 192 <th>child {rev}:</th>
193 193 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
194 194 </tr>'
195 195
196 196 indexentry = '
197 197 <tr class="parity{parity}">
198 198 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
199 199 <td>{description}</td>
200 200 <td>{contact|obfuscate}</td>
201 <td class="age">{lastchange|date}</td>
201 <td class="age">{lastchange|rfc822date}</td>
202 202 <td class="indexlinks">{archives%indexarchiveentry}</td>
203 203 </tr>\n'
204 204 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
205 205 index = index.tmpl
206 206 archiveentry = '
207 207 <li>
208 208 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
209 209 </li>'
210 210 notfound = notfound.tmpl
211 211 error = error.tmpl
212 212 urlparameter = '{separator}{name}={value|urlescape}'
213 213 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,5 +1,5
1 1 <tr class="parity{parity}">
2 <td class="age">{date|date}</td>
2 <td class="age">{date|rfc822date}</td>
3 3 <td class="author">{author|person}</td>
4 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 5 </tr>
@@ -1,25 +1,25
1 1 <table class="logEntry parity{parity}">
2 2 <tr>
3 <th><span class="age">{date|date}</span>:</th>
3 <th><span class="age">{date|rfc822date}</span>:</th>
4 4 <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
5 5 </tr>
6 6 <tr>
7 7 <th class="revision">changeset {rev}:</th>
8 8 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
9 9 </tr>
10 10 {parent%changelogparent}
11 11 {child%changelogchild}
12 12 {changelogtag}
13 13 <tr>
14 14 <th class="author">author:</th>
15 15 <td class="author">{author|obfuscate}</td>
16 16 </tr>
17 17 <tr>
18 18 <th class="date">date:</th>
19 <td class="date">{date|date}</td>
19 <td class="date">{date|rfc822date}</td>
20 20 </tr>
21 21 <tr>
22 22 <th class="files"><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
23 23 <td class="files">{files}</td>
24 24 </tr>
25 25 </table>
@@ -1,52 +1,52
1 1 {header}
2 2 <title>{repo|escape}: changeset {node|short}</title>
3 3 </head>
4 4 <body>
5 5
6 6 <div class="buttons">
7 7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
13 13 <a href="{url}raw-rev/{node|short}">raw</a>
14 14 {archives%archiveentry}
15 15 <a href="{url}help{sessionvars%urlparameter}">help</a>
16 16 </div>
17 17
18 18 <h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
19 19
20 20 <table id="changesetEntry">
21 21 <tr>
22 22 <th class="changeset">changeset {rev}:</th>
23 23 <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
24 24 </tr>
25 25 {parent%changesetparent}
26 26 {child%changesetchild}
27 27 {changesettag}
28 28 <tr>
29 29 <th class="author">author:</th>
30 30 <td class="author">{author|obfuscate}</td>
31 31 </tr>
32 32 <tr>
33 33 <th class="date">date:</th>
34 <td class="date age">{date|date}</td>
34 <td class="date age">{date|rfc822date}</td>
35 35 </tr>
36 36 <tr>
37 37 <th class="files">files:</th>
38 38 <td class="files">{files}</td>
39 39 </tr>
40 40 <tr>
41 41 <th class="description">description:</th>
42 42 <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
43 43 </tr>
44 44 </table>
45 45
46 46 <div id="changesetDiff">
47 47 {diff}
48 48 </div>
49 49
50 50 {footer}
51 51
52 52
@@ -1,49 +1,49
1 1 {header}
2 2 <title>{repo|escape}: {file|escape} annotate</title>
3 3 </head>
4 4 <body>
5 5
6 6 <div class="buttons">
7 7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 14 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
15 15 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
16 16 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
17 17 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 18 </div>
19 19
20 20 <h2>Annotate {file|escape}</h2>
21 21
22 22 <table>
23 23 <tr>
24 24 <td class="metatag">changeset {rev}:</td>
25 25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
26 26 {parent%fileannotateparent}
27 27 {child%fileannotatechild}
28 28 <tr>
29 29 <td class="metatag">author:</td>
30 30 <td>{author|obfuscate}</td></tr>
31 31 <tr>
32 32 <td class="metatag">date:</td>
33 <td class="date age">{date|date}</td>
33 <td class="date age">{date|rfc822date}</td>
34 34 </tr>
35 35 <tr>
36 36 <td class="metatag">permissions:</td>
37 37 <td>{permissions|permissions}</td>
38 38 </tr>
39 39 <tr>
40 40 <td class="metatag">description:</td>
41 41 <td>{desc|strip|escape|addbreaks|nonempty}</td>
42 42 </tr>
43 43 </table>
44 44
45 45 <table cellspacing="0" cellpadding="0">
46 46 {annotate%annotateline}
47 47 </table>
48 48
49 49 {footer}
@@ -1,25 +1,25
1 1 <table class="logEntry parity{parity}">
2 2 <tr>
3 <th><span class="age">{date|date}</span>:</th>
3 <th><span class="age">{date|rfc822date}</span>:</th>
4 4 <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
5 5 </tr>
6 6 <tr>
7 7 <th class="revision">revision {filerev}:</td>
8 8 <td class="node">
9 9 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
10 10 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(diff)</a>
11 11 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(annotate)</a>
12 12 </td>
13 13 </tr>
14 14 {rename%filelogrename}
15 15 <tr>
16 16 <th class="author">author:</th>
17 17 <td class="author">{author|obfuscate}</td>
18 18 </tr>
19 19 <tr>
20 20 <th class="date">date:</th>
21 <td class="date">{date|date}</td>
21 <td class="date">{date|rfc822date}</td>
22 22 </tr>
23 23 </table>
24 24
25 25
@@ -1,47 +1,47
1 1 {header}
2 2 <title>{repo|escape}:{file|escape}</title>
3 3 </head>
4 4 <body>
5 5
6 6 <div class="buttons">
7 7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
16 16 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
17 17 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 18 </div>
19 19
20 20 <h2>{file|escape}</h2>
21 21
22 22 <table>
23 23 <tr>
24 24 <td class="metatag">changeset {rev}:</td>
25 25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
26 26 {parent%filerevparent}
27 27 {child%filerevchild}
28 28 <tr>
29 29 <td class="metatag">author:</td>
30 30 <td>{author|obfuscate}</td></tr>
31 31 <tr>
32 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 34 <tr>
35 35 <td class="metatag">permissions:</td>
36 36 <td>{permissions|permissions}</td></tr>
37 37 <tr>
38 38 <td class="metatag">description:</td>
39 39 <td>{desc|strip|escape|addbreaks|nonempty}</td>
40 40 </tr>
41 41 </table>
42 42
43 43 <pre>
44 44 {text%fileline}
45 45 </pre>
46 46
47 47 {footer}
@@ -1,183 +1,183
1 1 default = 'shortlog'
2 2 mimetype = 'text/html; charset={encoding}'
3 3 header = header.tmpl
4 4 footer = footer.tmpl
5 5 search = search.tmpl
6 6 changelog = changelog.tmpl
7 7 shortlog = shortlog.tmpl
8 8 shortlogentry = shortlogentry.tmpl
9 9 graph = graph.tmpl
10 10 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 11 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 12 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
13 13 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
14 14 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 15 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
16 16 filenolink = '{file|escape} '
17 17 fileellipses = '...'
18 18 changelogentry = changelogentry.tmpl
19 19 searchentry = changelogentry.tmpl
20 20 changeset = changeset.tmpl
21 21 manifest = manifest.tmpl
22 22
23 23 nav = '{before%naventry} {after%naventry}'
24 24 navshort = '{before%navshortentry}{after%navshortentry}'
25 25 navgraph = '{before%navgraphentry}{after%navgraphentry}'
26 26 filenav = '{before%filenaventry}{after%filenaventry}'
27 27
28 28 direntry = '
29 29 <tr class="parity{parity}">
30 30 <td><tt>drwxr-xr-x</tt>&nbsp;
31 31 <td>&nbsp;
32 32 <td>&nbsp;
33 33 <td>
34 34 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
35 35 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
36 36 {emptydirs|urlescape}
37 37 </a>'
38 38
39 39 fileentry = '
40 40 <tr class="parity{parity}">
41 41 <td><tt>{permissions|permissions}</tt>&nbsp;
42 42 <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
43 43 <td align=right><tt>{size}</tt>&nbsp;
44 44 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
45 45
46 46 filerevision = filerevision.tmpl
47 47 fileannotate = fileannotate.tmpl
48 48 filediff = filediff.tmpl
49 49 filelog = filelog.tmpl
50 50 fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
51 51 filelogentry = filelogentry.tmpl
52 52
53 53 # The &nbsp; ensures that all table cells have content (even if there
54 54 # is an empty line in the annotated file), which in turn ensures that
55 55 # all table rows have equal height.
56 56 annotateline = '
57 57 <tr class="parity{parity}">
58 58 <td class="annotate">
59 59 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
60 60 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
61 61 </td>
62 62 <td>
63 63 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
64 64 </td>
65 65 <td><pre>&nbsp;{line|escape}</pre></td>
66 66 </tr>'
67 67 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
68 68 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
69 69 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
70 70 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
71 71 changelogparent = '
72 72 <tr>
73 73 <th class="parent">parent {rev}:</th>
74 74 <td class="parent">
75 75 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
76 76 </td>
77 77 </tr>'
78 78 changesetparent = '
79 79 <tr>
80 80 <th class="parent">parent {rev}:</th>
81 81 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
82 82 </tr>'
83 83 filerevparent = '
84 84 <tr>
85 85 <td class="metatag">parent:</td>
86 86 <td>
87 87 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
88 88 {rename%filerename}{node|short}
89 89 </a>
90 90 </td>
91 91 </tr>'
92 92 filerename = '{file|escape}@'
93 93 filelogrename = '
94 94 <tr>
95 95 <th>base:</th>
96 96 <td>
97 97 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
98 98 {file|escape}@{node|short}
99 99 </a>
100 100 </td>
101 101 </tr>'
102 102 fileannotateparent = '
103 103 <tr>
104 104 <td class="metatag">parent:</td>
105 105 <td>
106 106 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
107 107 {rename%filerename}{node|short}
108 108 </a>
109 109 </td>
110 110 </tr>'
111 111 changesetchild = '
112 112 <tr>
113 113 <th class="child">child {rev}:</th>
114 114 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
115 115 </tr>'
116 116 changelogchild = '
117 117 <tr>
118 118 <th class="child">child {rev}:</th>
119 119 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
120 120 </tr>'
121 121 filerevchild = '
122 122 <tr>
123 123 <td class="metatag">child:</td>
124 124 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
125 125 </tr>'
126 126 fileannotatechild = '
127 127 <tr>
128 128 <td class="metatag">child:</td>
129 129 <td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
130 130 </tr>'
131 131 tags = tags.tmpl
132 132 tagentry = '
133 133 <li class="tagEntry parity{parity}">
134 134 <tt class="node">{node}</tt>
135 135 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
136 136 </li>'
137 137 branches = branches.tmpl
138 138 branchentry = '
139 139 <li class="tagEntry parity{parity}">
140 140 <tt class="node">{node}</tt>
141 141 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
142 142 </li>'
143 143 diffblock = '<pre class="parity{parity}">{lines}</pre>'
144 144 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
145 145 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
146 146 filediffparent = '
147 147 <tr>
148 148 <th class="parent">parent {rev}:</th>
149 149 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
150 150 </tr>'
151 151 filelogparent = '
152 152 <tr>
153 153 <th>parent {rev}:</th>
154 154 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
155 155 </tr>'
156 156 filediffchild = '
157 157 <tr>
158 158 <th class="child">child {rev}:</th>
159 159 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
160 160 </tr>'
161 161 filelogchild = '
162 162 <tr>
163 163 <th>child {rev}:</th>
164 164 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
165 165 </tr>'
166 166 indexentry = '
167 167 <tr class="parity{parity}">
168 168 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
169 169 <td>{description}</td>
170 170 <td>{contact|obfuscate}</td>
171 <td class="age">{lastchange|date}</td>
171 <td class="age">{lastchange|rfc822date}</td>
172 172 <td class="indexlinks">
173 173 <a href="{url}rss-log">RSS</a>
174 174 <a href="{url}atom-log">Atom</a>
175 175 {archives%archiveentry}
176 176 </td>
177 177 </tr>'
178 178 index = index.tmpl
179 179 archiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
180 180 notfound = notfound.tmpl
181 181 error = error.tmpl
182 182 urlparameter = '{separator}{name}={value|urlescape}'
183 183 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,7 +1,7
1 1 <table class="slogEntry parity{parity}">
2 2 <tr>
3 <td class="age">{date|date}</td>
3 <td class="age">{date|rfc822date}</td>
4 4 <td class="author">{author|person}</td>
5 5 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
6 6 </tr>
7 7 </table>
@@ -1,1157 +1,1157
1 1 An attempt at more fully testing the hgweb web interface.
2 2 The following things are tested elsewhere and are therefore omitted:
3 3 - archive, tested in test-archive
4 4 - unbundle, tested in test-push-http
5 5 - changegroupsubset, tested in test-pull
6 6
7 7 Set up the repo
8 8
9 9 $ hg init test
10 10 $ cd test
11 11 $ mkdir da
12 12 $ echo foo > da/foo
13 13 $ echo foo > foo
14 14 $ hg ci -Ambase
15 15 adding da/foo
16 16 adding foo
17 17 $ hg tag 1.0
18 18 $ hg bookmark something
19 19 $ hg bookmark -r0 anotherthing
20 20 $ echo another > foo
21 21 $ hg branch stable
22 22 marked working directory as branch stable
23 23 $ hg ci -Ambranch
24 24 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
25 25 $ cat hg.pid >> $DAEMON_PIDS
26 26
27 27 Logs and changes
28 28
29 29 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
30 30 200 Script output follows
31 31
32 32 <?xml version="1.0" encoding="ascii"?>
33 33 <feed xmlns="http://www.w3.org/2005/Atom">
34 34 <!-- Changelog -->
35 35 <id>http://*:$HGPORT/</id> (glob)
36 36 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
37 37 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
38 38 <title>test Changelog</title>
39 39 <updated>1970-01-01T00:00:00+00:00</updated>
40 40
41 41 <entry>
42 42 <title>branch</title>
43 43 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
44 44 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
45 45 <author>
46 46 <name>test</name>
47 47 <email>&#116;&#101;&#115;&#116;</email>
48 48 </author>
49 49 <updated>1970-01-01T00:00:00+00:00</updated>
50 50 <published>1970-01-01T00:00:00+00:00</published>
51 51 <content type="xhtml">
52 52 <div xmlns="http://www.w3.org/1999/xhtml">
53 53 <pre xml:space="preserve">branch</pre>
54 54 </div>
55 55 </content>
56 56 </entry>
57 57 <entry>
58 58 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
59 59 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
60 60 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
61 61 <author>
62 62 <name>test</name>
63 63 <email>&#116;&#101;&#115;&#116;</email>
64 64 </author>
65 65 <updated>1970-01-01T00:00:00+00:00</updated>
66 66 <published>1970-01-01T00:00:00+00:00</published>
67 67 <content type="xhtml">
68 68 <div xmlns="http://www.w3.org/1999/xhtml">
69 69 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
70 70 </div>
71 71 </content>
72 72 </entry>
73 73 <entry>
74 74 <title>base</title>
75 75 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
76 76 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
77 77 <author>
78 78 <name>test</name>
79 79 <email>&#116;&#101;&#115;&#116;</email>
80 80 </author>
81 81 <updated>1970-01-01T00:00:00+00:00</updated>
82 82 <published>1970-01-01T00:00:00+00:00</published>
83 83 <content type="xhtml">
84 84 <div xmlns="http://www.w3.org/1999/xhtml">
85 85 <pre xml:space="preserve">base</pre>
86 86 </div>
87 87 </content>
88 88 </entry>
89 89
90 90 </feed>
91 91 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
92 92 200 Script output follows
93 93
94 94 <?xml version="1.0" encoding="ascii"?>
95 95 <feed xmlns="http://www.w3.org/2005/Atom">
96 96 <!-- Changelog -->
97 97 <id>http://*:$HGPORT/</id> (glob)
98 98 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
99 99 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
100 100 <title>test Changelog</title>
101 101 <updated>1970-01-01T00:00:00+00:00</updated>
102 102
103 103 <entry>
104 104 <title>branch</title>
105 105 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
106 106 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
107 107 <author>
108 108 <name>test</name>
109 109 <email>&#116;&#101;&#115;&#116;</email>
110 110 </author>
111 111 <updated>1970-01-01T00:00:00+00:00</updated>
112 112 <published>1970-01-01T00:00:00+00:00</published>
113 113 <content type="xhtml">
114 114 <div xmlns="http://www.w3.org/1999/xhtml">
115 115 <pre xml:space="preserve">branch</pre>
116 116 </div>
117 117 </content>
118 118 </entry>
119 119 <entry>
120 120 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
121 121 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
122 122 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
123 123 <author>
124 124 <name>test</name>
125 125 <email>&#116;&#101;&#115;&#116;</email>
126 126 </author>
127 127 <updated>1970-01-01T00:00:00+00:00</updated>
128 128 <published>1970-01-01T00:00:00+00:00</published>
129 129 <content type="xhtml">
130 130 <div xmlns="http://www.w3.org/1999/xhtml">
131 131 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
132 132 </div>
133 133 </content>
134 134 </entry>
135 135 <entry>
136 136 <title>base</title>
137 137 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
138 138 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
139 139 <author>
140 140 <name>test</name>
141 141 <email>&#116;&#101;&#115;&#116;</email>
142 142 </author>
143 143 <updated>1970-01-01T00:00:00+00:00</updated>
144 144 <published>1970-01-01T00:00:00+00:00</published>
145 145 <content type="xhtml">
146 146 <div xmlns="http://www.w3.org/1999/xhtml">
147 147 <pre xml:space="preserve">base</pre>
148 148 </div>
149 149 </content>
150 150 </entry>
151 151
152 152 </feed>
153 153 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
154 154 200 Script output follows
155 155
156 156 <?xml version="1.0" encoding="ascii"?>
157 157 <feed xmlns="http://www.w3.org/2005/Atom">
158 158 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
159 159 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
160 160 <title>test: foo history</title>
161 161 <updated>1970-01-01T00:00:00+00:00</updated>
162 162
163 163 <entry>
164 164 <title>base</title>
165 165 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
166 166 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
167 167 <author>
168 168 <name>test</name>
169 169 <email>&#116;&#101;&#115;&#116;</email>
170 170 </author>
171 171 <updated>1970-01-01T00:00:00+00:00</updated>
172 172 <published>1970-01-01T00:00:00+00:00</published>
173 173 <content type="xhtml">
174 174 <div xmlns="http://www.w3.org/1999/xhtml">
175 175 <pre xml:space="preserve">base</pre>
176 176 </div>
177 177 </content>
178 178 </entry>
179 179
180 180 </feed>
181 181 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
182 182 200 Script output follows
183 183
184 184 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
185 185 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
186 186 <head>
187 187 <link rel="icon" href="/static/hgicon.png" type="image/png" />
188 188 <meta name="robots" content="index, nofollow" />
189 189 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
190 190 <script type="text/javascript" src="/static/mercurial.js"></script>
191 191
192 192 <title>test: log</title>
193 193 <link rel="alternate" type="application/atom+xml"
194 194 href="/atom-log" title="Atom feed for test" />
195 195 <link rel="alternate" type="application/rss+xml"
196 196 href="/rss-log" title="RSS feed for test" />
197 197 </head>
198 198 <body>
199 199
200 200 <div class="container">
201 201 <div class="menu">
202 202 <div class="logo">
203 203 <a href="http://mercurial.selenic.com/">
204 204 <img src="/static/hglogo.png" alt="mercurial" /></a>
205 205 </div>
206 206 <ul>
207 207 <li class="active">log</li>
208 208 <li><a href="/graph/1d22e65f027e">graph</a></li>
209 209 <li><a href="/tags">tags</a></li>
210 210 <li><a href="/bookmarks">bookmarks</a></li>
211 211 <li><a href="/branches">branches</a></li>
212 212 </ul>
213 213 <ul>
214 214 <li><a href="/rev/1d22e65f027e">changeset</a></li>
215 215 <li><a href="/file/1d22e65f027e">browse</a></li>
216 216 </ul>
217 217 <ul>
218 218
219 219 </ul>
220 220 <ul>
221 221 <li><a href="/help">help</a></li>
222 222 </ul>
223 223 </div>
224 224
225 225 <div class="main">
226 226 <h2><a href="/">test</a></h2>
227 227 <h3>log</h3>
228 228
229 229 <form class="search" action="/log">
230 230
231 231 <p><input name="rev" id="search1" type="text" size="30" /></p>
232 232 <div id="hint">find changesets by author, revision,
233 233 files, or words in the commit message</div>
234 234 </form>
235 235
236 236 <div class="navigate">
237 237 <a href="/shortlog/2?revcount=30">less</a>
238 238 <a href="/shortlog/2?revcount=120">more</a>
239 239 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
240 240 </div>
241 241
242 242 <table class="bigtable">
243 243 <tr>
244 244 <th class="age">age</th>
245 245 <th class="author">author</th>
246 246 <th class="description">description</th>
247 247 </tr>
248 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 250 <td class="author">test</td>
251 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 252 </tr>
253 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 255 <td class="author">test</td>
256 256 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
257 257 </tr>
258 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 260 <td class="author">test</td>
261 261 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
262 262 </tr>
263 263
264 264 </table>
265 265
266 266 <div class="navigate">
267 267 <a href="/shortlog/2?revcount=30">less</a>
268 268 <a href="/shortlog/2?revcount=120">more</a>
269 269 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
270 270 </div>
271 271
272 272 </div>
273 273 </div>
274 274
275 275 <script type="text/javascript">process_dates()</script>
276 276
277 277
278 278 </body>
279 279 </html>
280 280
281 281 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
282 282 200 Script output follows
283 283
284 284 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
285 285 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
286 286 <head>
287 287 <link rel="icon" href="/static/hgicon.png" type="image/png" />
288 288 <meta name="robots" content="index, nofollow" />
289 289 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
290 290 <script type="text/javascript" src="/static/mercurial.js"></script>
291 291
292 292 <title>test: 2ef0ac749a14</title>
293 293 </head>
294 294 <body>
295 295 <div class="container">
296 296 <div class="menu">
297 297 <div class="logo">
298 298 <a href="http://mercurial.selenic.com/">
299 299 <img src="/static/hglogo.png" alt="mercurial" /></a>
300 300 </div>
301 301 <ul>
302 302 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
303 303 <li><a href="/graph/2ef0ac749a14">graph</a></li>
304 304 <li><a href="/tags">tags</a></li>
305 305 <li><a href="/bookmarks">bookmarks</a></li>
306 306 <li><a href="/branches">branches</a></li>
307 307 </ul>
308 308 <ul>
309 309 <li class="active">changeset</li>
310 310 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
311 311 <li><a href="/file/2ef0ac749a14">browse</a></li>
312 312 </ul>
313 313 <ul>
314 314
315 315 </ul>
316 316 <ul>
317 317 <li><a href="/help">help</a></li>
318 318 </ul>
319 319 </div>
320 320
321 321 <div class="main">
322 322
323 323 <h2><a href="/">test</a></h2>
324 324 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> <span class="tag">anotherthing</span> </h3>
325 325
326 326 <form class="search" action="/log">
327 327
328 328 <p><input name="rev" id="search1" type="text" size="30" /></p>
329 329 <div id="hint">find changesets by author, revision,
330 330 files, or words in the commit message</div>
331 331 </form>
332 332
333 333 <div class="description">base</div>
334 334
335 335 <table id="changesetEntry">
336 336 <tr>
337 337 <th class="author">author</th>
338 338 <td class="author">&#116;&#101;&#115;&#116;</td>
339 339 </tr>
340 340 <tr>
341 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 343 <tr>
344 344 <th class="author">parents</th>
345 345 <td class="author"></td>
346 346 </tr>
347 347 <tr>
348 348 <th class="author">children</th>
349 349 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
350 350 </tr>
351 351 <tr>
352 352 <th class="files">files</th>
353 353 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
354 354 </tr>
355 355 <tr>
356 356 <th class="diffstat">diffstat</th>
357 357 <td class="diffstat">
358 358 2 files changed, 2 insertions(+), 0 deletions(-)
359 359
360 360 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
361 361 <div id="diffstatdetails" style="display:none;">
362 362 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
363 363 <p>
364 364 <table> <tr class="parity0">
365 365 <td class="diffstat-file"><a href="#l1.1">da/foo</a></td>
366 366 <td class="diffstat-total" align="right">1</td>
367 367 <td class="diffstat-graph">
368 368 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
369 369 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
370 370 </td>
371 371 </tr>
372 372 <tr class="parity1">
373 373 <td class="diffstat-file"><a href="#l2.1">foo</a></td>
374 374 <td class="diffstat-total" align="right">1</td>
375 375 <td class="diffstat-graph">
376 376 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
377 377 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
378 378 </td>
379 379 </tr>
380 380 </table>
381 381 </div>
382 382 </td>
383 383 </tr>
384 384 </table>
385 385
386 386 <div class="overflow">
387 387 <div class="sourcefirst"> line diff</div>
388 388
389 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 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 391 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
392 392 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
393 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 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 395 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
396 396 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
397 397 </span></pre></div>
398 398 </div>
399 399
400 400 </div>
401 401 </div>
402 402 <script type="text/javascript">process_dates()</script>
403 403
404 404
405 405 </body>
406 406 </html>
407 407
408 408 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
409 409 200 Script output follows
410 410
411 411
412 412 # HG changeset patch
413 413 # User test
414 414 # Date 0 0
415 415 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
416 416 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
417 417 Added tag 1.0 for changeset 2ef0ac749a14
418 418
419 419 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
420 420 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
421 421 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
422 422 @@ -0,0 +1,1 @@
423 423 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
424 424
425 425 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
426 426 200 Script output follows
427 427
428 428 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
429 429 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
430 430 <head>
431 431 <link rel="icon" href="/static/hgicon.png" type="image/png" />
432 432 <meta name="robots" content="index, nofollow" />
433 433 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
434 434 <script type="text/javascript" src="/static/mercurial.js"></script>
435 435
436 436 <title>test: searching for base</title>
437 437 </head>
438 438 <body>
439 439
440 440 <div class="container">
441 441 <div class="menu">
442 442 <div class="logo">
443 443 <a href="http://mercurial.selenic.com/">
444 444 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
445 445 </div>
446 446 <ul>
447 447 <li><a href="/shortlog">log</a></li>
448 448 <li><a href="/graph">graph</a></li>
449 449 <li><a href="/tags">tags</a></li>
450 450 <li><a href="/bookmarks">bookmarks</a></li>
451 451 <li><a href="/branches">branches</a></li>
452 452 <li><a href="/help">help</a></li>
453 453 </ul>
454 454 </div>
455 455
456 456 <div class="main">
457 457 <h2><a href="/">test</a></h2>
458 458 <h3>searching for 'base'</h3>
459 459
460 460 <form class="search" action="/log">
461 461
462 462 <p><input name="rev" id="search1" type="text" size="30"></p>
463 463 <div id="hint">find changesets by author, revision,
464 464 files, or words in the commit message</div>
465 465 </form>
466 466
467 467 <div class="navigate">
468 468 <a href="/search/?rev=base&revcount=5">less</a>
469 469 <a href="/search/?rev=base&revcount=20">more</a>
470 470 </div>
471 471
472 472 <table class="bigtable">
473 473 <tr>
474 474 <th class="age">age</th>
475 475 <th class="author">author</th>
476 476 <th class="description">description</th>
477 477 </tr>
478 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 480 <td class="author">test</td>
481 481 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
482 482 </tr>
483 483
484 484 </table>
485 485
486 486 <div class="navigate">
487 487 <a href="/search/?rev=base&revcount=5">less</a>
488 488 <a href="/search/?rev=base&revcount=20">more</a>
489 489 </div>
490 490
491 491 </div>
492 492 </div>
493 493
494 494 <script type="text/javascript">process_dates()</script>
495 495
496 496
497 497 </body>
498 498 </html>
499 499
500 500
501 501 File-related
502 502
503 503 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
504 504 200 Script output follows
505 505
506 506 foo
507 507 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
508 508 200 Script output follows
509 509
510 510
511 511 test@0: foo
512 512
513 513
514 514
515 515
516 516 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
517 517 200 Script output follows
518 518
519 519
520 520 drwxr-xr-x da
521 521 -rw-r--r-- 45 .hgtags
522 522 -rw-r--r-- 4 foo
523 523
524 524
525 525 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
526 526 200 Script output follows
527 527
528 528 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
529 529 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
530 530 <head>
531 531 <link rel="icon" href="/static/hgicon.png" type="image/png" />
532 532 <meta name="robots" content="index, nofollow" />
533 533 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
534 534 <script type="text/javascript" src="/static/mercurial.js"></script>
535 535
536 536 <title>test: a4f92ed23982 foo</title>
537 537 </head>
538 538 <body>
539 539
540 540 <div class="container">
541 541 <div class="menu">
542 542 <div class="logo">
543 543 <a href="http://mercurial.selenic.com/">
544 544 <img src="/static/hglogo.png" alt="mercurial" /></a>
545 545 </div>
546 546 <ul>
547 547 <li><a href="/shortlog/a4f92ed23982">log</a></li>
548 548 <li><a href="/graph/a4f92ed23982">graph</a></li>
549 549 <li><a href="/tags">tags</a></li>
550 550 <li><a href="/branches">branches</a></li>
551 551 </ul>
552 552 <ul>
553 553 <li><a href="/rev/a4f92ed23982">changeset</a></li>
554 554 <li><a href="/file/a4f92ed23982/">browse</a></li>
555 555 </ul>
556 556 <ul>
557 557 <li class="active">file</li>
558 558 <li><a href="/file/tip/foo">latest</a></li>
559 559 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
560 560 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
561 561 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
562 562 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
563 563 </ul>
564 564 <ul>
565 565 <li><a href="/help">help</a></li>
566 566 </ul>
567 567 </div>
568 568
569 569 <div class="main">
570 570 <h2><a href="/">test</a></h2>
571 571 <h3>view foo @ 1:a4f92ed23982</h3>
572 572
573 573 <form class="search" action="/log">
574 574
575 575 <p><input name="rev" id="search1" type="text" size="30" /></p>
576 576 <div id="hint">find changesets by author, revision,
577 577 files, or words in the commit message</div>
578 578 </form>
579 579
580 580 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
581 581
582 582 <table id="changesetEntry">
583 583 <tr>
584 584 <th class="author">author</th>
585 585 <td class="author">&#116;&#101;&#115;&#116;</td>
586 586 </tr>
587 587 <tr>
588 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 590 </tr>
591 591 <tr>
592 592 <th class="author">parents</th>
593 593 <td class="author"></td>
594 594 </tr>
595 595 <tr>
596 596 <th class="author">children</th>
597 597 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
598 598 </tr>
599 599
600 600 </table>
601 601
602 602 <div class="overflow">
603 603 <div class="sourcefirst"> line source</div>
604 604
605 605 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
606 606 </div>
607 607 <div class="sourcelast"></div>
608 608 </div>
609 609 </div>
610 610 </div>
611 611
612 612 <script type="text/javascript">process_dates()</script>
613 613
614 614
615 615 </body>
616 616 </html>
617 617
618 618 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
619 619 200 Script output follows
620 620
621 621
622 622 diff -r 000000000000 -r a4f92ed23982 foo
623 623 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
624 624 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
625 625 @@ -0,0 +1,1 @@
626 626 +foo
627 627
628 628
629 629
630 630
631 631
632 632 Overviews
633 633
634 634 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
635 635 200 Script output follows
636 636
637 637 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
638 638 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
639 639 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
640 640 200 Script output follows
641 641
642 642 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
643 643 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
644 644 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-bookmarks'
645 645 200 Script output follows
646 646
647 647 anotherthing 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
648 648 something 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
649 649 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
650 650 200 Script output follows
651 651
652 652 <?xml version="1.0" encoding="ascii"?>
653 653 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
654 654 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
655 655 <head>
656 656 <link rel="icon" href="/static/hgicon.png" type="image/png" />
657 657 <meta name="robots" content="index, nofollow"/>
658 658 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
659 659 <script type="text/javascript" src="/static/mercurial.js"></script>
660 660
661 661 <title>test: Summary</title>
662 662 <link rel="alternate" type="application/atom+xml"
663 663 href="/atom-log" title="Atom feed for test"/>
664 664 <link rel="alternate" type="application/rss+xml"
665 665 href="/rss-log" title="RSS feed for test"/>
666 666 </head>
667 667 <body>
668 668
669 669 <div class="page_header">
670 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 672 <form action="/log">
673 673 <input type="hidden" name="style" value="gitweb" />
674 674 <div class="search">
675 675 <input type="text" name="rev" />
676 676 </div>
677 677 </form>
678 678 </div>
679 679
680 680 <div class="page_nav">
681 681 summary |
682 682 <a href="/shortlog?style=gitweb">shortlog</a> |
683 683 <a href="/log?style=gitweb">changelog</a> |
684 684 <a href="/graph?style=gitweb">graph</a> |
685 685 <a href="/tags?style=gitweb">tags</a> |
686 686 <a href="/bookmarks?style=gitweb">bookmarks</a> |
687 687 <a href="/branches?style=gitweb">branches</a> |
688 688 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
689 689 <a href="/help?style=gitweb">help</a>
690 690 <br/>
691 691 </div>
692 692
693 693 <div class="title">&nbsp;</div>
694 694 <table cellspacing="0">
695 695 <tr><td>description</td><td>unknown</td></tr>
696 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 697 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
698 698 </table>
699 699
700 700 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
701 701 <table cellspacing="0">
702 702
703 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 705 <td><i>test</i></td>
706 706 <td>
707 707 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
708 708 <b>branch</b>
709 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 710 </a>
711 711 </td>
712 712 <td class="link" nowrap>
713 713 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
714 714 <a href="/file/1d22e65f027e?style=gitweb">files</a>
715 715 </td>
716 716 </tr>
717 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 719 <td><i>test</i></td>
720 720 <td>
721 721 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
722 722 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
723 723 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
724 724 </a>
725 725 </td>
726 726 <td class="link" nowrap>
727 727 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
728 728 <a href="/file/a4f92ed23982?style=gitweb">files</a>
729 729 </td>
730 730 </tr>
731 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 733 <td><i>test</i></td>
734 734 <td>
735 735 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
736 736 <b>base</b>
737 737 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> <span class="bookmarktag" title="anotherthing">anotherthing</span> </span>
738 738 </a>
739 739 </td>
740 740 <td class="link" nowrap>
741 741 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
742 742 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
743 743 </td>
744 744 </tr>
745 745 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
746 746 </table>
747 747
748 748 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
749 749 <table cellspacing="0">
750 750
751 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 753 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
754 754 <td class="link">
755 755 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
756 756 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
757 757 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
758 758 </td>
759 759 </tr>
760 760 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
761 761 </table>
762 762
763 763 <div><a class="title" href="/bookmarks?style=gitweb">bookmarks</a></div>
764 764 <table cellspacing="0">
765 765
766 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 768 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>anotherthing</b></a></td>
769 769 <td class="link">
770 770 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
771 771 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
772 772 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
773 773 </td>
774 774 </tr>
775 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 777 <td><a class="list" href="/rev/1d22e65f027e?style=gitweb"><b>something</b></a></td>
778 778 <td class="link">
779 779 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
780 780 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
781 781 <a href="/file/1d22e65f027e?style=gitweb">files</a>
782 782 </td>
783 783 </tr>
784 784 <tr class="light"><td colspan="3"><a class="list" href="/bookmarks?style=gitweb">...</a></td></tr>
785 785 </table>
786 786
787 787 <div><a class="title" href="#">branches</a></div>
788 788 <table cellspacing="0">
789 789
790 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 792 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
793 793 <td class="">stable</td>
794 794 <td class="link">
795 795 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
796 796 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
797 797 <a href="/file/1d22e65f027e?style=gitweb">files</a>
798 798 </td>
799 799 </tr>
800 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 802 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
803 803 <td class="">default</td>
804 804 <td class="link">
805 805 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
806 806 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
807 807 <a href="/file/a4f92ed23982?style=gitweb">files</a>
808 808 </td>
809 809 </tr>
810 810 <tr class="light">
811 811 <td colspan="4"><a class="list" href="#">...</a></td>
812 812 </tr>
813 813 </table>
814 814 <script type="text/javascript">process_dates()</script>
815 815 <div class="page_footer">
816 816 <div class="page_footer_text">test</div>
817 817 <div class="rss_logo">
818 818 <a href="/rss-log">RSS</a>
819 819 <a href="/atom-log">Atom</a>
820 820 </div>
821 821 <br />
822 822
823 823 </div>
824 824 </body>
825 825 </html>
826 826
827 827 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
828 828 200 Script output follows
829 829
830 830 <?xml version="1.0" encoding="ascii"?>
831 831 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
832 832 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
833 833 <head>
834 834 <link rel="icon" href="/static/hgicon.png" type="image/png" />
835 835 <meta name="robots" content="index, nofollow"/>
836 836 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
837 837 <script type="text/javascript" src="/static/mercurial.js"></script>
838 838
839 839 <title>test: Graph</title>
840 840 <link rel="alternate" type="application/atom+xml"
841 841 href="/atom-log" title="Atom feed for test"/>
842 842 <link rel="alternate" type="application/rss+xml"
843 843 href="/rss-log" title="RSS feed for test"/>
844 844 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
845 845 </head>
846 846 <body>
847 847
848 848 <div class="page_header">
849 849 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
850 850 </div>
851 851
852 852 <form action="/log">
853 853 <input type="hidden" name="style" value="gitweb" />
854 854 <div class="search">
855 855 <input type="text" name="rev" />
856 856 </div>
857 857 </form>
858 858 <div class="page_nav">
859 859 <a href="/summary?style=gitweb">summary</a> |
860 860 <a href="/shortlog?style=gitweb">shortlog</a> |
861 861 <a href="/log/2?style=gitweb">changelog</a> |
862 862 graph |
863 863 <a href="/tags?style=gitweb">tags</a> |
864 864 <a href="/bookmarks?style=gitweb">bookmarks</a> |
865 865 <a href="/branches?style=gitweb">branches</a> |
866 866 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
867 867 <a href="/help?style=gitweb">help</a>
868 868 <br/>
869 869 <a href="/graph/2?style=gitweb&revcount=30">less</a>
870 870 <a href="/graph/2?style=gitweb&revcount=120">more</a>
871 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 872 </div>
873 873
874 874 <div class="title">&nbsp;</div>
875 875
876 876 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
877 877
878 878 <div id="wrapper">
879 879 <ul id="nodebgs"></ul>
880 880 <canvas id="graph" width="480" height="129"></canvas>
881 881 <ul id="graphnodes"></ul>
882 882 </div>
883 883
884 884 <script>
885 885 <!-- hide script content
886 886
887 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 888 var graph = new Graph();
889 889 graph.scale(39);
890 890
891 891 graph.edge = function(x0, y0, x1, y1, color) {
892 892
893 893 this.setColor(color, 0.0, 0.65);
894 894 this.ctx.beginPath();
895 895 this.ctx.moveTo(x0, y0);
896 896 this.ctx.lineTo(x1, y1);
897 897 this.ctx.stroke();
898 898
899 899 }
900 900
901 901 var revlink = '<li style="_STYLE"><span class="desc">';
902 902 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
903 903 revlink += '</span> _TAGS';
904 904 revlink += '<span class="info">_DATE, by _USER</span></li>';
905 905
906 906 graph.vertex = function(x, y, color, parity, cur) {
907 907
908 908 this.ctx.beginPath();
909 909 color = this.setColor(color, 0.25, 0.75);
910 910 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
911 911 this.ctx.fill();
912 912
913 913 var bg = '<li class="bg parity' + parity + '"></li>';
914 914 var left = (this.columns + 1) * this.bg_height;
915 915 var nstyle = 'padding-left: ' + left + 'px;';
916 916 var item = revlink.replace(/_STYLE/, nstyle);
917 917 item = item.replace(/_PARITY/, 'parity' + parity);
918 918 item = item.replace(/_NODEID/, cur[0]);
919 919 item = item.replace(/_NODEID/, cur[0]);
920 920 item = item.replace(/_DESC/, cur[3]);
921 921 item = item.replace(/_USER/, cur[4]);
922 922 item = item.replace(/_DATE/, cur[5]);
923 923
924 924 var tagspan = '';
925 925 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
926 926 tagspan = '<span class="logtags">';
927 927 if (cur[6][1]) {
928 928 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
929 929 tagspan += cur[6][0] + '</span> ';
930 930 } else if (!cur[6][1] && cur[6][0] != 'default') {
931 931 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
932 932 tagspan += cur[6][0] + '</span> ';
933 933 }
934 934 if (cur[7].length) {
935 935 for (var t in cur[7]) {
936 936 var tag = cur[7][t];
937 937 tagspan += '<span class="tagtag">' + tag + '</span> ';
938 938 }
939 939 }
940 940 if (cur[8].length) {
941 941 for (var t in cur[8]) {
942 942 var bookmark = cur[8][t];
943 943 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
944 944 }
945 945 }
946 946 tagspan += '</span>';
947 947 }
948 948
949 949 item = item.replace(/_TAGS/, tagspan);
950 950 return [bg, item];
951 951
952 952 }
953 953
954 954 graph.render(data);
955 955
956 956 // stop hiding script -->
957 957 </script>
958 958
959 959 <div class="page_nav">
960 960 <a href="/graph/2?style=gitweb&revcount=30">less</a>
961 961 <a href="/graph/2?style=gitweb&revcount=120">more</a>
962 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 963 </div>
964 964
965 965 <script type="text/javascript">process_dates()</script>
966 966 <div class="page_footer">
967 967 <div class="page_footer_text">test</div>
968 968 <div class="rss_logo">
969 969 <a href="/rss-log">RSS</a>
970 970 <a href="/atom-log">Atom</a>
971 971 </div>
972 972 <br />
973 973
974 974 </div>
975 975 </body>
976 976 </html>
977 977
978 978
979 979 capabilities
980 980
981 981 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
982 982 200 Script output follows
983 983
984 984 lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
985 985
986 986 heads
987 987
988 988 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
989 989 200 Script output follows
990 990
991 991 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
992 992
993 993 branches
994 994
995 995 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
996 996 200 Script output follows
997 997
998 998 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
999 999
1000 1000 changegroup
1001 1001
1002 1002 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
1003 1003 200 Script output follows
1004 1004
1005 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 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 1007 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3'\x859 (esc)
1008 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 1010 stream_out
1011 1011
1012 1012 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
1013 1013 200 Script output follows
1014 1014
1015 1015 1
1016 1016
1017 1017 failing unbundle, requires POST request
1018 1018
1019 1019 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
1020 1020 405 push requires POST request
1021 1021
1022 1022 0
1023 1023 push requires POST request
1024 1024 [1]
1025 1025
1026 1026 Static files
1027 1027
1028 1028 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
1029 1029 200 Script output follows
1030 1030
1031 1031 a { text-decoration:none; }
1032 1032 .age { white-space:nowrap; }
1033 1033 .date { white-space:nowrap; }
1034 1034 .indexlinks { white-space:nowrap; }
1035 1035 .parity0 { background-color: #ddd; }
1036 1036 .parity1 { background-color: #eee; }
1037 1037 .lineno { width: 60px; color: #aaa; font-size: smaller;
1038 1038 text-align: right; }
1039 1039 .plusline { color: green; }
1040 1040 .minusline { color: red; }
1041 1041 .atline { color: purple; }
1042 1042 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
1043 1043 .buttons a {
1044 1044 background-color: #666;
1045 1045 padding: 2pt;
1046 1046 color: white;
1047 1047 font-family: sans;
1048 1048 font-weight: bold;
1049 1049 }
1050 1050 .navigate a {
1051 1051 background-color: #ccc;
1052 1052 padding: 2pt;
1053 1053 font-family: sans;
1054 1054 color: black;
1055 1055 }
1056 1056
1057 1057 .metatag {
1058 1058 background-color: #888;
1059 1059 color: white;
1060 1060 text-align: right;
1061 1061 }
1062 1062
1063 1063 /* Common */
1064 1064 pre { margin: 0; }
1065 1065
1066 1066 .logo {
1067 1067 float: right;
1068 1068 clear: right;
1069 1069 }
1070 1070
1071 1071 /* Changelog/Filelog entries */
1072 1072 .logEntry { width: 100%; }
1073 1073 .logEntry .age { width: 15%; }
1074 1074 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
1075 1075 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
1076 1076 .logEntry th.firstline { text-align: left; width: inherit; }
1077 1077
1078 1078 /* Shortlog entries */
1079 1079 .slogEntry { width: 100%; }
1080 1080 .slogEntry .age { width: 8em; }
1081 1081 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1082 1082 .slogEntry td.author { width: 15em; }
1083 1083
1084 1084 /* Tag entries */
1085 1085 #tagEntries { list-style: none; margin: 0; padding: 0; }
1086 1086 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1087 1087
1088 1088 /* Changeset entry */
1089 1089 #changesetEntry { }
1090 1090 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1091 1091 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1092 1092
1093 1093 /* File diff view */
1094 1094 #filediffEntry { }
1095 1095 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1096 1096
1097 1097 /* Graph */
1098 1098 div#wrapper {
1099 1099 position: relative;
1100 1100 margin: 0;
1101 1101 padding: 0;
1102 1102 }
1103 1103
1104 1104 canvas {
1105 1105 position: absolute;
1106 1106 z-index: 5;
1107 1107 top: -0.6em;
1108 1108 margin: 0;
1109 1109 }
1110 1110
1111 1111 ul#nodebgs {
1112 1112 list-style: none inside none;
1113 1113 padding: 0;
1114 1114 margin: 0;
1115 1115 top: -0.7em;
1116 1116 }
1117 1117
1118 1118 ul#graphnodes li, ul#nodebgs li {
1119 1119 height: 39px;
1120 1120 }
1121 1121
1122 1122 ul#graphnodes {
1123 1123 position: absolute;
1124 1124 z-index: 10;
1125 1125 top: -0.85em;
1126 1126 list-style: none inside none;
1127 1127 padding: 0;
1128 1128 }
1129 1129
1130 1130 ul#graphnodes li .info {
1131 1131 display: block;
1132 1132 font-size: 70%;
1133 1133 position: relative;
1134 1134 top: -1px;
1135 1135 }
1136 1136
1137 1137 Stop and restart with HGENCODING=cp932
1138 1138
1139 1139 $ "$TESTDIR/killdaemons.py"
1140 1140 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1141 1141 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1142 1142 $ cat hg.pid >> $DAEMON_PIDS
1143 1143
1144 1144 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1145 1145
1146 1146 $ echo foo >> foo
1147 1147 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1148 1148
1149 1149 Graph json escape of multibyte character
1150 1150
1151 1151 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1152 1152 > | grep '^var data ='
1153 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 1155 ERRORS ENCOUNTERED
1156 1156
1157 1157 $ cat errors.log
@@ -1,555 +1,555
1 1 setting up repo
2 2
3 3 $ hg init test
4 4 $ cd test
5 5 $ echo a > a
6 6 $ echo b > b
7 7 $ hg ci -Ama
8 8 adding a
9 9 adding b
10 10
11 11 change permissions for git diffs
12 12
13 13 $ chmod 755 a
14 14 $ hg ci -Amb
15 15
16 16 set up hgweb
17 17
18 18 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
19 19 $ cat hg.pid >> $DAEMON_PIDS
20 20
21 21 revision
22 22
23 23 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
24 24 200 Script output follows
25 25
26 26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
27 27 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
28 28 <head>
29 29 <link rel="icon" href="/static/hgicon.png" type="image/png" />
30 30 <meta name="robots" content="index, nofollow" />
31 31 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
32 32 <script type="text/javascript" src="/static/mercurial.js"></script>
33 33
34 34 <title>test: 0cd96de13884</title>
35 35 </head>
36 36 <body>
37 37 <div class="container">
38 38 <div class="menu">
39 39 <div class="logo">
40 40 <a href="http://mercurial.selenic.com/">
41 41 <img src="/static/hglogo.png" alt="mercurial" /></a>
42 42 </div>
43 43 <ul>
44 44 <li><a href="/shortlog/0cd96de13884">log</a></li>
45 45 <li><a href="/graph/0cd96de13884">graph</a></li>
46 46 <li><a href="/tags">tags</a></li>
47 47 <li><a href="/bookmarks">bookmarks</a></li>
48 48 <li><a href="/branches">branches</a></li>
49 49 </ul>
50 50 <ul>
51 51 <li class="active">changeset</li>
52 52 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
53 53 <li><a href="/file/0cd96de13884">browse</a></li>
54 54 </ul>
55 55 <ul>
56 56
57 57 </ul>
58 58 <ul>
59 59 <li><a href="/help">help</a></li>
60 60 </ul>
61 61 </div>
62 62
63 63 <div class="main">
64 64
65 65 <h2><a href="/">test</a></h2>
66 66 <h3>changeset 0:0cd96de13884 </h3>
67 67
68 68 <form class="search" action="/log">
69 69
70 70 <p><input name="rev" id="search1" type="text" size="30" /></p>
71 71 <div id="hint">find changesets by author, revision,
72 72 files, or words in the commit message</div>
73 73 </form>
74 74
75 75 <div class="description">a</div>
76 76
77 77 <table id="changesetEntry">
78 78 <tr>
79 79 <th class="author">author</th>
80 80 <td class="author">&#116;&#101;&#115;&#116;</td>
81 81 </tr>
82 82 <tr>
83 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 85 <tr>
86 86 <th class="author">parents</th>
87 87 <td class="author"></td>
88 88 </tr>
89 89 <tr>
90 90 <th class="author">children</th>
91 91 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
92 92 </tr>
93 93 <tr>
94 94 <th class="files">files</th>
95 95 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
96 96 </tr>
97 97 <tr>
98 98 <th class="diffstat">diffstat</th>
99 99 <td class="diffstat">
100 100 2 files changed, 2 insertions(+), 0 deletions(-)
101 101
102 102 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
103 103 <div id="diffstatdetails" style="display:none;">
104 104 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
105 105 <p>
106 106 <table> <tr class="parity0">
107 107 <td class="diffstat-file"><a href="#l1.1">a</a></td>
108 108 <td class="diffstat-total" align="right">1</td>
109 109 <td class="diffstat-graph">
110 110 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
111 111 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
112 112 </td>
113 113 </tr>
114 114 <tr class="parity1">
115 115 <td class="diffstat-file"><a href="#l2.1">b</a></td>
116 116 <td class="diffstat-total" align="right">1</td>
117 117 <td class="diffstat-graph">
118 118 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
119 119 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
120 120 </td>
121 121 </tr>
122 122 </table>
123 123 </div>
124 124 </td>
125 125 </tr>
126 126 </table>
127 127
128 128 <div class="overflow">
129 129 <div class="sourcefirst"> line diff</div>
130 130
131 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 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 133 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
134 134 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
135 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 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 137 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
138 138 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
139 139 </span></pre></div>
140 140 </div>
141 141
142 142 </div>
143 143 </div>
144 144 <script type="text/javascript">process_dates()</script>
145 145
146 146
147 147 </body>
148 148 </html>
149 149
150 150
151 151 raw revision
152 152
153 153 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
154 154 200 Script output follows
155 155
156 156
157 157 # HG changeset patch
158 158 # User test
159 159 # Date 0 0
160 160 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
161 161
162 162 a
163 163
164 164 diff -r 000000000000 -r 0cd96de13884 a
165 165 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
166 166 +++ b/a Thu Jan 01 00:00:00 1970 +0000
167 167 @@ -0,0 +1,1 @@
168 168 +a
169 169 diff -r 000000000000 -r 0cd96de13884 b
170 170 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
171 171 +++ b/b Thu Jan 01 00:00:00 1970 +0000
172 172 @@ -0,0 +1,1 @@
173 173 +b
174 174
175 175
176 176 diff removed file
177 177
178 178 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
179 179 200 Script output follows
180 180
181 181 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
182 182 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
183 183 <head>
184 184 <link rel="icon" href="/static/hgicon.png" type="image/png" />
185 185 <meta name="robots" content="index, nofollow" />
186 186 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
187 187 <script type="text/javascript" src="/static/mercurial.js"></script>
188 188
189 189 <title>test: a diff</title>
190 190 </head>
191 191 <body>
192 192
193 193 <div class="container">
194 194 <div class="menu">
195 195 <div class="logo">
196 196 <a href="http://mercurial.selenic.com/">
197 197 <img src="/static/hglogo.png" alt="mercurial" /></a>
198 198 </div>
199 199 <ul>
200 200 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
201 201 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
202 202 <li><a href="/tags">tags</a></li>
203 203 <li><a href="/bookmarks">bookmarks</a></li>
204 204 <li><a href="/branches">branches</a></li>
205 205 </ul>
206 206 <ul>
207 207 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
208 208 <li><a href="/file/78e4ebad7cdf">browse</a></li>
209 209 </ul>
210 210 <ul>
211 211 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
212 212 <li><a href="/file/tip/a">latest</a></li>
213 213 <li class="active">diff</li>
214 214 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
215 215 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
216 216 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
217 217 </ul>
218 218 <ul>
219 219 <li><a href="/help">help</a></li>
220 220 </ul>
221 221 </div>
222 222
223 223 <div class="main">
224 224 <h2><a href="/">test</a></h2>
225 225 <h3>diff a @ 1:78e4ebad7cdf</h3>
226 226
227 227 <form class="search" action="/log">
228 228 <p></p>
229 229 <p><input name="rev" id="search1" type="text" size="30" /></p>
230 230 <div id="hint">find changesets by author, revision,
231 231 files, or words in the commit message</div>
232 232 </form>
233 233
234 234 <div class="description">b</div>
235 235
236 236 <table id="changesetEntry">
237 237 <tr>
238 238 <th>author</th>
239 239 <td>&#116;&#101;&#115;&#116;</td>
240 240 </tr>
241 241 <tr>
242 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 244 </tr>
245 245 <tr>
246 246 <th>parents</th>
247 247 <td></td>
248 248 </tr>
249 249 <tr>
250 250 <th>children</th>
251 251 <td></td>
252 252 </tr>
253 253
254 254 </table>
255 255
256 256 <div class="overflow">
257 257 <div class="sourcefirst"> line diff</div>
258 258
259 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 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 261 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
262 262 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
263 263 </span></pre></div>
264 264 </div>
265 265 </div>
266 266 </div>
267 267
268 268 <script type="text/javascript">process_dates()</script>
269 269
270 270
271 271 </body>
272 272 </html>
273 273
274 274
275 275 set up hgweb with git diffs
276 276
277 277 $ "$TESTDIR/killdaemons.py"
278 278 $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
279 279 $ cat hg.pid >> $DAEMON_PIDS
280 280
281 281 revision
282 282
283 283 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
284 284 200 Script output follows
285 285
286 286 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
287 287 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
288 288 <head>
289 289 <link rel="icon" href="/static/hgicon.png" type="image/png" />
290 290 <meta name="robots" content="index, nofollow" />
291 291 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
292 292 <script type="text/javascript" src="/static/mercurial.js"></script>
293 293
294 294 <title>test: 0cd96de13884</title>
295 295 </head>
296 296 <body>
297 297 <div class="container">
298 298 <div class="menu">
299 299 <div class="logo">
300 300 <a href="http://mercurial.selenic.com/">
301 301 <img src="/static/hglogo.png" alt="mercurial" /></a>
302 302 </div>
303 303 <ul>
304 304 <li><a href="/shortlog/0cd96de13884">log</a></li>
305 305 <li><a href="/graph/0cd96de13884">graph</a></li>
306 306 <li><a href="/tags">tags</a></li>
307 307 <li><a href="/bookmarks">bookmarks</a></li>
308 308 <li><a href="/branches">branches</a></li>
309 309 </ul>
310 310 <ul>
311 311 <li class="active">changeset</li>
312 312 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
313 313 <li><a href="/file/0cd96de13884">browse</a></li>
314 314 </ul>
315 315 <ul>
316 316
317 317 </ul>
318 318 <ul>
319 319 <li><a href="/help">help</a></li>
320 320 </ul>
321 321 </div>
322 322
323 323 <div class="main">
324 324
325 325 <h2><a href="/">test</a></h2>
326 326 <h3>changeset 0:0cd96de13884 </h3>
327 327
328 328 <form class="search" action="/log">
329 329
330 330 <p><input name="rev" id="search1" type="text" size="30" /></p>
331 331 <div id="hint">find changesets by author, revision,
332 332 files, or words in the commit message</div>
333 333 </form>
334 334
335 335 <div class="description">a</div>
336 336
337 337 <table id="changesetEntry">
338 338 <tr>
339 339 <th class="author">author</th>
340 340 <td class="author">&#116;&#101;&#115;&#116;</td>
341 341 </tr>
342 342 <tr>
343 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 345 <tr>
346 346 <th class="author">parents</th>
347 347 <td class="author"></td>
348 348 </tr>
349 349 <tr>
350 350 <th class="author">children</th>
351 351 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
352 352 </tr>
353 353 <tr>
354 354 <th class="files">files</th>
355 355 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
356 356 </tr>
357 357 <tr>
358 358 <th class="diffstat">diffstat</th>
359 359 <td class="diffstat">
360 360 2 files changed, 2 insertions(+), 0 deletions(-)
361 361
362 362 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
363 363 <div id="diffstatdetails" style="display:none;">
364 364 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
365 365 <p>
366 366 <table> <tr class="parity0">
367 367 <td class="diffstat-file"><a href="#l1.1">a</a></td>
368 368 <td class="diffstat-total" align="right">1</td>
369 369 <td class="diffstat-graph">
370 370 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
371 371 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
372 372 </td>
373 373 </tr>
374 374 <tr class="parity1">
375 375 <td class="diffstat-file"><a href="#l2.1">b</a></td>
376 376 <td class="diffstat-total" align="right">1</td>
377 377 <td class="diffstat-graph">
378 378 <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
379 379 <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
380 380 </td>
381 381 </tr>
382 382 </table>
383 383 </div>
384 384 </td>
385 385 </tr>
386 386 </table>
387 387
388 388 <div class="overflow">
389 389 <div class="sourcefirst"> line diff</div>
390 390
391 391 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
392 392 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
393 393 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
394 394 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
395 395 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
396 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 397 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
398 398 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
399 399 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
400 400 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
401 401 </span></pre></div>
402 402 </div>
403 403
404 404 </div>
405 405 </div>
406 406 <script type="text/javascript">process_dates()</script>
407 407
408 408
409 409 </body>
410 410 </html>
411 411
412 412
413 413 revision
414 414
415 415 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
416 416 200 Script output follows
417 417
418 418
419 419 # HG changeset patch
420 420 # User test
421 421 # Date 0 0
422 422 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
423 423
424 424 a
425 425
426 426 diff --git a/a b/a
427 427 new file mode 100644
428 428 --- /dev/null
429 429 +++ b/a
430 430 @@ -0,0 +1,1 @@
431 431 +a
432 432 diff --git a/b b/b
433 433 new file mode 100644
434 434 --- /dev/null
435 435 +++ b/b
436 436 @@ -0,0 +1,1 @@
437 437 +b
438 438
439 439
440 440 diff removed file
441 441
442 442 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
443 443 200 Script output follows
444 444
445 445 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
446 446 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
447 447 <head>
448 448 <link rel="icon" href="/static/hgicon.png" type="image/png" />
449 449 <meta name="robots" content="index, nofollow" />
450 450 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
451 451 <script type="text/javascript" src="/static/mercurial.js"></script>
452 452
453 453 <title>test: a diff</title>
454 454 </head>
455 455 <body>
456 456
457 457 <div class="container">
458 458 <div class="menu">
459 459 <div class="logo">
460 460 <a href="http://mercurial.selenic.com/">
461 461 <img src="/static/hglogo.png" alt="mercurial" /></a>
462 462 </div>
463 463 <ul>
464 464 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
465 465 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
466 466 <li><a href="/tags">tags</a></li>
467 467 <li><a href="/bookmarks">bookmarks</a></li>
468 468 <li><a href="/branches">branches</a></li>
469 469 </ul>
470 470 <ul>
471 471 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
472 472 <li><a href="/file/78e4ebad7cdf">browse</a></li>
473 473 </ul>
474 474 <ul>
475 475 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
476 476 <li><a href="/file/tip/a">latest</a></li>
477 477 <li class="active">diff</li>
478 478 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
479 479 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
480 480 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
481 481 </ul>
482 482 <ul>
483 483 <li><a href="/help">help</a></li>
484 484 </ul>
485 485 </div>
486 486
487 487 <div class="main">
488 488 <h2><a href="/">test</a></h2>
489 489 <h3>diff a @ 1:78e4ebad7cdf</h3>
490 490
491 491 <form class="search" action="/log">
492 492 <p></p>
493 493 <p><input name="rev" id="search1" type="text" size="30" /></p>
494 494 <div id="hint">find changesets by author, revision,
495 495 files, or words in the commit message</div>
496 496 </form>
497 497
498 498 <div class="description">b</div>
499 499
500 500 <table id="changesetEntry">
501 501 <tr>
502 502 <th>author</th>
503 503 <td>&#116;&#101;&#115;&#116;</td>
504 504 </tr>
505 505 <tr>
506 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 508 </tr>
509 509 <tr>
510 510 <th>parents</th>
511 511 <td></td>
512 512 </tr>
513 513 <tr>
514 514 <th>children</th>
515 515 <td></td>
516 516 </tr>
517 517
518 518 </table>
519 519
520 520 <div class="overflow">
521 521 <div class="sourcefirst"> line diff</div>
522 522
523 523 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
524 524 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
525 525 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
526 526 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
527 527 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
528 528 </span></pre></div>
529 529 </div>
530 530 </div>
531 531 </div>
532 532
533 533 <script type="text/javascript">process_dates()</script>
534 534
535 535
536 536 </body>
537 537 </html>
538 538
539 539 $ cd ..
540 540
541 541 test import rev as raw-rev
542 542
543 543 $ hg clone -r0 test test1
544 544 adding changesets
545 545 adding manifests
546 546 adding file changes
547 547 added 1 changesets with 2 changes to 2 files
548 548 updating to branch default
549 549 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
550 550 $ cd test1
551 551 $ hg import -q --exact http://localhost:$HGPORT/rev/1
552 552
553 553 errors
554 554
555 555 $ cat ../test/errors.log
@@ -1,756 +1,756
1 1
2 2 $ hg init test
3 3 $ cd test
4 4 $ echo b > b
5 5 $ hg ci -Am "b"
6 6 adding b
7 7 $ echo a > a
8 8 $ hg ci -Am "first a"
9 9 adding a
10 10 $ hg rm a
11 11 $ hg ci -m "del a"
12 12 $ echo b > a
13 13 $ hg ci -Am "second a"
14 14 adding a
15 15 $ hg rm a
16 16 $ hg ci -m "del2 a"
17 17 $ hg mv b c
18 18 $ hg ci -m "mv b"
19 19 $ echo c >> c
20 20 $ hg ci -m "change c"
21 21 $ hg log -p
22 22 changeset: 6:b7682196df1c
23 23 tag: tip
24 24 user: test
25 25 date: Thu Jan 01 00:00:00 1970 +0000
26 26 summary: change c
27 27
28 28 diff -r 1a6696706df2 -r b7682196df1c c
29 29 --- a/c Thu Jan 01 00:00:00 1970 +0000
30 30 +++ b/c Thu Jan 01 00:00:00 1970 +0000
31 31 @@ -1,1 +1,2 @@
32 32 b
33 33 +c
34 34
35 35 changeset: 5:1a6696706df2
36 36 user: test
37 37 date: Thu Jan 01 00:00:00 1970 +0000
38 38 summary: mv b
39 39
40 40 diff -r 52e848cdcd88 -r 1a6696706df2 b
41 41 --- a/b Thu Jan 01 00:00:00 1970 +0000
42 42 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
43 43 @@ -1,1 +0,0 @@
44 44 -b
45 45 diff -r 52e848cdcd88 -r 1a6696706df2 c
46 46 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
47 47 +++ b/c Thu Jan 01 00:00:00 1970 +0000
48 48 @@ -0,0 +1,1 @@
49 49 +b
50 50
51 51 changeset: 4:52e848cdcd88
52 52 user: test
53 53 date: Thu Jan 01 00:00:00 1970 +0000
54 54 summary: del2 a
55 55
56 56 diff -r 01de2d66a28d -r 52e848cdcd88 a
57 57 --- a/a Thu Jan 01 00:00:00 1970 +0000
58 58 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
59 59 @@ -1,1 +0,0 @@
60 60 -b
61 61
62 62 changeset: 3:01de2d66a28d
63 63 user: test
64 64 date: Thu Jan 01 00:00:00 1970 +0000
65 65 summary: second a
66 66
67 67 diff -r be3ebcc91739 -r 01de2d66a28d a
68 68 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
69 69 +++ b/a Thu Jan 01 00:00:00 1970 +0000
70 70 @@ -0,0 +1,1 @@
71 71 +b
72 72
73 73 changeset: 2:be3ebcc91739
74 74 user: test
75 75 date: Thu Jan 01 00:00:00 1970 +0000
76 76 summary: del a
77 77
78 78 diff -r 5ed941583260 -r be3ebcc91739 a
79 79 --- a/a Thu Jan 01 00:00:00 1970 +0000
80 80 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
81 81 @@ -1,1 +0,0 @@
82 82 -a
83 83
84 84 changeset: 1:5ed941583260
85 85 user: test
86 86 date: Thu Jan 01 00:00:00 1970 +0000
87 87 summary: first a
88 88
89 89 diff -r 6563da9dcf87 -r 5ed941583260 a
90 90 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
91 91 +++ b/a Thu Jan 01 00:00:00 1970 +0000
92 92 @@ -0,0 +1,1 @@
93 93 +a
94 94
95 95 changeset: 0:6563da9dcf87
96 96 user: test
97 97 date: Thu Jan 01 00:00:00 1970 +0000
98 98 summary: b
99 99
100 100 diff -r 000000000000 -r 6563da9dcf87 b
101 101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 102 +++ b/b Thu Jan 01 00:00:00 1970 +0000
103 103 @@ -0,0 +1,1 @@
104 104 +b
105 105
106 106 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
107 107 $ cat hg.pid >> $DAEMON_PIDS
108 108
109 109 tip - two revisions
110 110
111 111 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/a')
112 112 200 Script output follows
113 113
114 114 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
115 115 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
116 116 <head>
117 117 <link rel="icon" href="/static/hgicon.png" type="image/png" />
118 118 <meta name="robots" content="index, nofollow" />
119 119 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
120 120 <script type="text/javascript" src="/static/mercurial.js"></script>
121 121
122 122 <title>test: a history</title>
123 123 <link rel="alternate" type="application/atom+xml"
124 124 href="/atom-log/tip/a" title="Atom feed for test:a" />
125 125 <link rel="alternate" type="application/rss+xml"
126 126 href="/rss-log/tip/a" title="RSS feed for test:a" />
127 127 </head>
128 128 <body>
129 129
130 130 <div class="container">
131 131 <div class="menu">
132 132 <div class="logo">
133 133 <a href="http://mercurial.selenic.com/">
134 134 <img src="/static/hglogo.png" alt="mercurial" /></a>
135 135 </div>
136 136 <ul>
137 137 <li><a href="/shortlog/01de2d66a28d">log</a></li>
138 138 <li><a href="/graph/01de2d66a28d">graph</a></li>
139 139 <li><a href="/tags">tags</a></li>
140 140 <li><a href="/bookmarks">bookmarks</a></li>
141 141 <li><a href="/branches">branches</a></li>
142 142 </ul>
143 143 <ul>
144 144 <li><a href="/rev/01de2d66a28d">changeset</a></li>
145 145 <li><a href="/file/01de2d66a28d">browse</a></li>
146 146 </ul>
147 147 <ul>
148 148 <li><a href="/file/01de2d66a28d/a">file</a></li>
149 149 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
150 150 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
151 151 <li class="active">file log</li>
152 152 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
153 153 </ul>
154 154 <ul>
155 155 <li><a href="/help">help</a></li>
156 156 </ul>
157 157 </div>
158 158
159 159 <div class="main">
160 160 <h2><a href="/">test</a></h2>
161 161 <h3>log a</h3>
162 162
163 163 <form class="search" action="/log">
164 164
165 165 <p><input name="rev" id="search1" type="text" size="30" /></p>
166 166 <div id="hint">find changesets by author, revision,
167 167 files, or words in the commit message</div>
168 168 </form>
169 169
170 170 <div class="navigate">
171 171 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
172 172 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
173 173 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
174 174
175 175 <table class="bigtable">
176 176 <tr>
177 177 <th class="age">age</th>
178 178 <th class="author">author</th>
179 179 <th class="description">description</th>
180 180 </tr>
181 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 183 <td class="author">test</td>
184 184 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
185 185 </tr>
186 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 188 <td class="author">test</td>
189 189 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
190 190 </tr>
191 191
192 192 </table>
193 193
194 194 <div class="navigate">
195 195 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
196 196 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
197 197 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
198 198 </div>
199 199
200 200 </div>
201 201 </div>
202 202
203 203 <script type="text/javascript">process_dates()</script>
204 204
205 205
206 206 </body>
207 207 </html>
208 208
209 209
210 210 second version - two revisions
211 211
212 212 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/3/a')
213 213 200 Script output follows
214 214
215 215 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
216 216 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
217 217 <head>
218 218 <link rel="icon" href="/static/hgicon.png" type="image/png" />
219 219 <meta name="robots" content="index, nofollow" />
220 220 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
221 221 <script type="text/javascript" src="/static/mercurial.js"></script>
222 222
223 223 <title>test: a history</title>
224 224 <link rel="alternate" type="application/atom+xml"
225 225 href="/atom-log/tip/a" title="Atom feed for test:a" />
226 226 <link rel="alternate" type="application/rss+xml"
227 227 href="/rss-log/tip/a" title="RSS feed for test:a" />
228 228 </head>
229 229 <body>
230 230
231 231 <div class="container">
232 232 <div class="menu">
233 233 <div class="logo">
234 234 <a href="http://mercurial.selenic.com/">
235 235 <img src="/static/hglogo.png" alt="mercurial" /></a>
236 236 </div>
237 237 <ul>
238 238 <li><a href="/shortlog/01de2d66a28d">log</a></li>
239 239 <li><a href="/graph/01de2d66a28d">graph</a></li>
240 240 <li><a href="/tags">tags</a></li>
241 241 <li><a href="/bookmarks">bookmarks</a></li>
242 242 <li><a href="/branches">branches</a></li>
243 243 </ul>
244 244 <ul>
245 245 <li><a href="/rev/01de2d66a28d">changeset</a></li>
246 246 <li><a href="/file/01de2d66a28d">browse</a></li>
247 247 </ul>
248 248 <ul>
249 249 <li><a href="/file/01de2d66a28d/a">file</a></li>
250 250 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
251 251 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
252 252 <li class="active">file log</li>
253 253 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
254 254 </ul>
255 255 <ul>
256 256 <li><a href="/help">help</a></li>
257 257 </ul>
258 258 </div>
259 259
260 260 <div class="main">
261 261 <h2><a href="/">test</a></h2>
262 262 <h3>log a</h3>
263 263
264 264 <form class="search" action="/log">
265 265
266 266 <p><input name="rev" id="search1" type="text" size="30" /></p>
267 267 <div id="hint">find changesets by author, revision,
268 268 files, or words in the commit message</div>
269 269 </form>
270 270
271 271 <div class="navigate">
272 272 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
273 273 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
274 274 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
275 275
276 276 <table class="bigtable">
277 277 <tr>
278 278 <th class="age">age</th>
279 279 <th class="author">author</th>
280 280 <th class="description">description</th>
281 281 </tr>
282 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 284 <td class="author">test</td>
285 285 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
286 286 </tr>
287 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 289 <td class="author">test</td>
290 290 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
291 291 </tr>
292 292
293 293 </table>
294 294
295 295 <div class="navigate">
296 296 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
297 297 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
298 298 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
299 299 </div>
300 300
301 301 </div>
302 302 </div>
303 303
304 304 <script type="text/javascript">process_dates()</script>
305 305
306 306
307 307 </body>
308 308 </html>
309 309
310 310
311 311 first deleted - one revision
312 312
313 313 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/2/a')
314 314 200 Script output follows
315 315
316 316 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
317 317 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
318 318 <head>
319 319 <link rel="icon" href="/static/hgicon.png" type="image/png" />
320 320 <meta name="robots" content="index, nofollow" />
321 321 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
322 322 <script type="text/javascript" src="/static/mercurial.js"></script>
323 323
324 324 <title>test: a history</title>
325 325 <link rel="alternate" type="application/atom+xml"
326 326 href="/atom-log/tip/a" title="Atom feed for test:a" />
327 327 <link rel="alternate" type="application/rss+xml"
328 328 href="/rss-log/tip/a" title="RSS feed for test:a" />
329 329 </head>
330 330 <body>
331 331
332 332 <div class="container">
333 333 <div class="menu">
334 334 <div class="logo">
335 335 <a href="http://mercurial.selenic.com/">
336 336 <img src="/static/hglogo.png" alt="mercurial" /></a>
337 337 </div>
338 338 <ul>
339 339 <li><a href="/shortlog/5ed941583260">log</a></li>
340 340 <li><a href="/graph/5ed941583260">graph</a></li>
341 341 <li><a href="/tags">tags</a></li>
342 342 <li><a href="/bookmarks">bookmarks</a></li>
343 343 <li><a href="/branches">branches</a></li>
344 344 </ul>
345 345 <ul>
346 346 <li><a href="/rev/5ed941583260">changeset</a></li>
347 347 <li><a href="/file/5ed941583260">browse</a></li>
348 348 </ul>
349 349 <ul>
350 350 <li><a href="/file/5ed941583260/a">file</a></li>
351 351 <li><a href="/diff/5ed941583260/a">diff</a></li>
352 352 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
353 353 <li class="active">file log</li>
354 354 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
355 355 </ul>
356 356 <ul>
357 357 <li><a href="/help">help</a></li>
358 358 </ul>
359 359 </div>
360 360
361 361 <div class="main">
362 362 <h2><a href="/">test</a></h2>
363 363 <h3>log a</h3>
364 364
365 365 <form class="search" action="/log">
366 366
367 367 <p><input name="rev" id="search1" type="text" size="30" /></p>
368 368 <div id="hint">find changesets by author, revision,
369 369 files, or words in the commit message</div>
370 370 </form>
371 371
372 372 <div class="navigate">
373 373 <a href="/log/5ed941583260/a?revcount=30">less</a>
374 374 <a href="/log/5ed941583260/a?revcount=120">more</a>
375 375 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
376 376
377 377 <table class="bigtable">
378 378 <tr>
379 379 <th class="age">age</th>
380 380 <th class="author">author</th>
381 381 <th class="description">description</th>
382 382 </tr>
383 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 385 <td class="author">test</td>
386 386 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
387 387 </tr>
388 388
389 389 </table>
390 390
391 391 <div class="navigate">
392 392 <a href="/log/5ed941583260/a?revcount=30">less</a>
393 393 <a href="/log/5ed941583260/a?revcount=120">more</a>
394 394 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
395 395 </div>
396 396
397 397 </div>
398 398 </div>
399 399
400 400 <script type="text/javascript">process_dates()</script>
401 401
402 402
403 403 </body>
404 404 </html>
405 405
406 406
407 407 first version - one revision
408 408
409 409 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/1/a')
410 410 200 Script output follows
411 411
412 412 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
413 413 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
414 414 <head>
415 415 <link rel="icon" href="/static/hgicon.png" type="image/png" />
416 416 <meta name="robots" content="index, nofollow" />
417 417 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
418 418 <script type="text/javascript" src="/static/mercurial.js"></script>
419 419
420 420 <title>test: a history</title>
421 421 <link rel="alternate" type="application/atom+xml"
422 422 href="/atom-log/tip/a" title="Atom feed for test:a" />
423 423 <link rel="alternate" type="application/rss+xml"
424 424 href="/rss-log/tip/a" title="RSS feed for test:a" />
425 425 </head>
426 426 <body>
427 427
428 428 <div class="container">
429 429 <div class="menu">
430 430 <div class="logo">
431 431 <a href="http://mercurial.selenic.com/">
432 432 <img src="/static/hglogo.png" alt="mercurial" /></a>
433 433 </div>
434 434 <ul>
435 435 <li><a href="/shortlog/5ed941583260">log</a></li>
436 436 <li><a href="/graph/5ed941583260">graph</a></li>
437 437 <li><a href="/tags">tags</a></li>
438 438 <li><a href="/bookmarks">bookmarks</a></li>
439 439 <li><a href="/branches">branches</a></li>
440 440 </ul>
441 441 <ul>
442 442 <li><a href="/rev/5ed941583260">changeset</a></li>
443 443 <li><a href="/file/5ed941583260">browse</a></li>
444 444 </ul>
445 445 <ul>
446 446 <li><a href="/file/5ed941583260/a">file</a></li>
447 447 <li><a href="/diff/5ed941583260/a">diff</a></li>
448 448 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
449 449 <li class="active">file log</li>
450 450 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
451 451 </ul>
452 452 <ul>
453 453 <li><a href="/help">help</a></li>
454 454 </ul>
455 455 </div>
456 456
457 457 <div class="main">
458 458 <h2><a href="/">test</a></h2>
459 459 <h3>log a</h3>
460 460
461 461 <form class="search" action="/log">
462 462
463 463 <p><input name="rev" id="search1" type="text" size="30" /></p>
464 464 <div id="hint">find changesets by author, revision,
465 465 files, or words in the commit message</div>
466 466 </form>
467 467
468 468 <div class="navigate">
469 469 <a href="/log/5ed941583260/a?revcount=30">less</a>
470 470 <a href="/log/5ed941583260/a?revcount=120">more</a>
471 471 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
472 472
473 473 <table class="bigtable">
474 474 <tr>
475 475 <th class="age">age</th>
476 476 <th class="author">author</th>
477 477 <th class="description">description</th>
478 478 </tr>
479 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 481 <td class="author">test</td>
482 482 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
483 483 </tr>
484 484
485 485 </table>
486 486
487 487 <div class="navigate">
488 488 <a href="/log/5ed941583260/a?revcount=30">less</a>
489 489 <a href="/log/5ed941583260/a?revcount=120">more</a>
490 490 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
491 491 </div>
492 492
493 493 </div>
494 494 </div>
495 495
496 496 <script type="text/javascript">process_dates()</script>
497 497
498 498
499 499 </body>
500 500 </html>
501 501
502 502
503 503 before addition - error
504 504
505 505 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/0/a')
506 506 404 Not Found
507 507
508 508 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
509 509 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
510 510 <head>
511 511 <link rel="icon" href="/static/hgicon.png" type="image/png" />
512 512 <meta name="robots" content="index, nofollow" />
513 513 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
514 514 <script type="text/javascript" src="/static/mercurial.js"></script>
515 515
516 516 <title>test: error</title>
517 517 </head>
518 518 <body>
519 519
520 520 <div class="container">
521 521 <div class="menu">
522 522 <div class="logo">
523 523 <a href="http://mercurial.selenic.com/">
524 524 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
525 525 </div>
526 526 <ul>
527 527 <li><a href="/shortlog">log</a></li>
528 528 <li><a href="/graph">graph</a></li>
529 529 <li><a href="/tags">tags</a></li>
530 530 <li><a href="/bookmarks">bookmarks</a></li>
531 531 <li><a href="/branches">branches</a></li>
532 532 <li><a href="/help">help</a></li>
533 533 </ul>
534 534 </div>
535 535
536 536 <div class="main">
537 537
538 538 <h2><a href="/">test</a></h2>
539 539 <h3>error</h3>
540 540
541 541 <form class="search" action="/log">
542 542
543 543 <p><input name="rev" id="search1" type="text" size="30"></p>
544 544 <div id="hint">find changesets by author, revision,
545 545 files, or words in the commit message</div>
546 546 </form>
547 547
548 548 <div class="description">
549 549 <p>
550 550 An error occurred while processing your request:
551 551 </p>
552 552 <p>
553 553 a@6563da9dcf87: not found in manifest
554 554 </p>
555 555 </div>
556 556 </div>
557 557 </div>
558 558
559 559 <script type="text/javascript">process_dates()</script>
560 560
561 561
562 562 </body>
563 563 </html>
564 564
565 565 [1]
566 566
567 567 should show base link, use spartan because it shows it
568 568
569 569 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/c?style=spartan')
570 570 200 Script output follows
571 571
572 572 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
573 573 <html>
574 574 <head>
575 575 <link rel="icon" href="/static/hgicon.png" type="image/png">
576 576 <meta name="robots" content="index, nofollow" />
577 577 <link rel="stylesheet" href="/static/style.css" type="text/css" />
578 578 <script type="text/javascript" src="/static/mercurial.js"></script>
579 579
580 580 <title>test: c history</title>
581 581 <link rel="alternate" type="application/atom+xml"
582 582 href="/atom-log/tip/c" title="Atom feed for test:c">
583 583 <link rel="alternate" type="application/rss+xml"
584 584 href="/rss-log/tip/c" title="RSS feed for test:c">
585 585 </head>
586 586 <body>
587 587
588 588 <div class="buttons">
589 589 <a href="/log?style=spartan">changelog</a>
590 590 <a href="/shortlog?style=spartan">shortlog</a>
591 591 <a href="/graph?style=spartan">graph</a>
592 592 <a href="/tags?style=spartan">tags</a>
593 593 <a href="/branches?style=spartan">branches</a>
594 594 <a href="/file/b7682196df1c/c?style=spartan">file</a>
595 595 <a href="/annotate/b7682196df1c/c?style=spartan">annotate</a>
596 596 <a href="/help?style=spartan">help</a>
597 597 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
598 598 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
599 599 </div>
600 600
601 601 <h2>c revision history</h2>
602 602
603 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 605 <table class="logEntry parity0">
606 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 608 <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
609 609 </tr>
610 610 <tr>
611 611 <th class="revision">revision 1:</td>
612 612 <td class="node">
613 613 <a href="/file/b7682196df1c/c?style=spartan">b7682196df1c</a>
614 614 <a href="/diff/b7682196df1c/c?style=spartan">(diff)</a>
615 615 <a href="/annotate/b7682196df1c/c?style=spartan">(annotate)</a>
616 616 </td>
617 617 </tr>
618 618
619 619 <tr>
620 620 <th class="author">author:</th>
621 621 <td class="author">&#116;&#101;&#115;&#116;</td>
622 622 </tr>
623 623 <tr>
624 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 626 </tr>
627 627 </table>
628 628
629 629
630 630 <table class="logEntry parity1">
631 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 633 <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
634 634 </tr>
635 635 <tr>
636 636 <th class="revision">revision 0:</td>
637 637 <td class="node">
638 638 <a href="/file/1a6696706df2/c?style=spartan">1a6696706df2</a>
639 639 <a href="/diff/1a6696706df2/c?style=spartan">(diff)</a>
640 640 <a href="/annotate/1a6696706df2/c?style=spartan">(annotate)</a>
641 641 </td>
642 642 </tr>
643 643
644 644 <tr>
645 645 <th>base:</th>
646 646 <td>
647 647 <a href="/file/1e88685f5dde/b?style=spartan">
648 648 b@1e88685f5dde
649 649 </a>
650 650 </td>
651 651 </tr>
652 652 <tr>
653 653 <th class="author">author:</th>
654 654 <td class="author">&#116;&#101;&#115;&#116;</td>
655 655 </tr>
656 656 <tr>
657 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 659 </tr>
660 660 </table>
661 661
662 662
663 663
664 664
665 665 <script type="text/javascript">process_dates()</script>
666 666
667 667 <div class="logo">
668 668 <a href="http://mercurial.selenic.com/">
669 669 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
670 670 </div>
671 671
672 672 </body>
673 673 </html>
674 674
675 675
676 676 rss log
677 677
678 678 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rss-log/tip/a')
679 679 200 Script output follows
680 680
681 681 <?xml version="1.0" encoding="ascii"?>
682 682 <rss version="2.0">
683 683 <channel>
684 684 <link>http://*:$HGPORT/</link> (glob)
685 685 <language>en-us</language>
686 686
687 687 <title>test: a history</title>
688 688 <description>a revision history</description>
689 689 <item>
690 690 <title>second a</title>
691 691 <link>http://*:$HGPORT/log01de2d66a28d/a</link> (glob)
692 692 <description><![CDATA[second a]]></description>
693 693 <author>&#116;&#101;&#115;&#116;</author>
694 694 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
695 695 </item>
696 696 <item>
697 697 <title>first a</title>
698 698 <link>http://*:$HGPORT/log5ed941583260/a</link> (glob)
699 699 <description><![CDATA[first a]]></description>
700 700 <author>&#116;&#101;&#115;&#116;</author>
701 701 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
702 702 </item>
703 703
704 704 </channel>
705 705 </rss>
706 706
707 707 atom log
708 708
709 709 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/atom-log/tip/a')
710 710 200 Script output follows
711 711
712 712 <?xml version="1.0" encoding="ascii"?>
713 713 <feed xmlns="http://www.w3.org/2005/Atom">
714 714 <id>http://*:$HGPORT/atom-log/tip/a</id> (glob)
715 715 <link rel="self" href="http://*:$HGPORT/atom-log/tip/a"/> (glob)
716 716 <title>test: a history</title>
717 717 <updated>1970-01-01T00:00:00+00:00</updated>
718 718
719 719 <entry>
720 720 <title>second a</title>
721 721 <id>http://*:$HGPORT/#changeset-01de2d66a28df5549090991dccda788726948517</id> (glob)
722 722 <link href="http://*:$HGPORT/rev/01de2d66a28d"/> (glob)
723 723 <author>
724 724 <name>test</name>
725 725 <email>&#116;&#101;&#115;&#116;</email>
726 726 </author>
727 727 <updated>1970-01-01T00:00:00+00:00</updated>
728 728 <published>1970-01-01T00:00:00+00:00</published>
729 729 <content type="xhtml">
730 730 <div xmlns="http://www.w3.org/1999/xhtml">
731 731 <pre xml:space="preserve">second a</pre>
732 732 </div>
733 733 </content>
734 734 </entry>
735 735 <entry>
736 736 <title>first a</title>
737 737 <id>http://*:$HGPORT/#changeset-5ed941583260248620985524192fdc382ef57c36</id> (glob)
738 738 <link href="http://*:$HGPORT/rev/5ed941583260"/> (glob)
739 739 <author>
740 740 <name>test</name>
741 741 <email>&#116;&#101;&#115;&#116;</email>
742 742 </author>
743 743 <updated>1970-01-01T00:00:00+00:00</updated>
744 744 <published>1970-01-01T00:00:00+00:00</published>
745 745 <content type="xhtml">
746 746 <div xmlns="http://www.w3.org/1999/xhtml">
747 747 <pre xml:space="preserve">first a</pre>
748 748 </div>
749 749 </content>
750 750 </entry>
751 751
752 752 </feed>
753 753
754 754 errors
755 755
756 756 $ cat errors.log
@@ -1,231 +1,231
1 1 setting up repo
2 2
3 3 $ hg init test
4 4 $ cd test
5 5 $ echo a > a
6 6 $ hg ci -Ama
7 7 adding a
8 8 $ hg rm a
9 9 $ hg ci -mdel
10 10
11 11 set up hgweb
12 12
13 13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
14 14 $ cat hg.pid >> $DAEMON_PIDS
15 15
16 16 revision
17 17
18 18 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/tip'
19 19 200 Script output follows
20 20
21 21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
22 22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
23 23 <head>
24 24 <link rel="icon" href="/static/hgicon.png" type="image/png" />
25 25 <meta name="robots" content="index, nofollow" />
26 26 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
27 27 <script type="text/javascript" src="/static/mercurial.js"></script>
28 28
29 29 <title>test: c78f6c5cbea9</title>
30 30 </head>
31 31 <body>
32 32 <div class="container">
33 33 <div class="menu">
34 34 <div class="logo">
35 35 <a href="http://mercurial.selenic.com/">
36 36 <img src="/static/hglogo.png" alt="mercurial" /></a>
37 37 </div>
38 38 <ul>
39 39 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
40 40 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
41 41 <li><a href="/tags">tags</a></li>
42 42 <li><a href="/bookmarks">bookmarks</a></li>
43 43 <li><a href="/branches">branches</a></li>
44 44 </ul>
45 45 <ul>
46 46 <li class="active">changeset</li>
47 47 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
48 48 <li><a href="/file/c78f6c5cbea9">browse</a></li>
49 49 </ul>
50 50 <ul>
51 51
52 52 </ul>
53 53 <ul>
54 54 <li><a href="/help">help</a></li>
55 55 </ul>
56 56 </div>
57 57
58 58 <div class="main">
59 59
60 60 <h2><a href="/">test</a></h2>
61 61 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
62 62
63 63 <form class="search" action="/log">
64 64
65 65 <p><input name="rev" id="search1" type="text" size="30" /></p>
66 66 <div id="hint">find changesets by author, revision,
67 67 files, or words in the commit message</div>
68 68 </form>
69 69
70 70 <div class="description">del</div>
71 71
72 72 <table id="changesetEntry">
73 73 <tr>
74 74 <th class="author">author</th>
75 75 <td class="author">&#116;&#101;&#115;&#116;</td>
76 76 </tr>
77 77 <tr>
78 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 80 <tr>
81 81 <th class="author">parents</th>
82 82 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
83 83 </tr>
84 84 <tr>
85 85 <th class="author">children</th>
86 86 <td class="author"></td>
87 87 </tr>
88 88 <tr>
89 89 <th class="files">files</th>
90 90 <td class="files">a </td>
91 91 </tr>
92 92 <tr>
93 93 <th class="diffstat">diffstat</th>
94 94 <td class="diffstat">
95 95 1 files changed, 0 insertions(+), 1 deletions(-)
96 96
97 97 <a id="diffstatexpand" href="javascript:showDiffstat()"/>[<tt>+</tt>]</a>
98 98 <div id="diffstatdetails" style="display:none;">
99 99 <a href="javascript:hideDiffstat()"/>[<tt>-</tt>]</a>
100 100 <p>
101 101 <table> <tr class="parity0">
102 102 <td class="diffstat-file"><a href="#l1.1">a</a></td>
103 103 <td class="diffstat-total" align="right">1</td>
104 104 <td class="diffstat-graph">
105 105 <span class="diffstat-add" style="width:0.0%;">&nbsp;</span>
106 106 <span class="diffstat-remove" style="width:100.0%;">&nbsp;</span>
107 107 </td>
108 108 </tr>
109 109 </table>
110 110 </div>
111 111 </td>
112 112 </tr>
113 113 </table>
114 114
115 115 <div class="overflow">
116 116 <div class="sourcefirst"> line diff</div>
117 117
118 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 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 120 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
121 121 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
122 122 </span></pre></div>
123 123 </div>
124 124
125 125 </div>
126 126 </div>
127 127 <script type="text/javascript">process_dates()</script>
128 128
129 129
130 130 </body>
131 131 </html>
132 132
133 133
134 134 diff removed file
135 135
136 136 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
137 137 200 Script output follows
138 138
139 139 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
140 140 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
141 141 <head>
142 142 <link rel="icon" href="/static/hgicon.png" type="image/png" />
143 143 <meta name="robots" content="index, nofollow" />
144 144 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
145 145 <script type="text/javascript" src="/static/mercurial.js"></script>
146 146
147 147 <title>test: a diff</title>
148 148 </head>
149 149 <body>
150 150
151 151 <div class="container">
152 152 <div class="menu">
153 153 <div class="logo">
154 154 <a href="http://mercurial.selenic.com/">
155 155 <img src="/static/hglogo.png" alt="mercurial" /></a>
156 156 </div>
157 157 <ul>
158 158 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
159 159 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
160 160 <li><a href="/tags">tags</a></li>
161 161 <li><a href="/bookmarks">bookmarks</a></li>
162 162 <li><a href="/branches">branches</a></li>
163 163 </ul>
164 164 <ul>
165 165 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
166 166 <li><a href="/file/c78f6c5cbea9">browse</a></li>
167 167 </ul>
168 168 <ul>
169 169 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
170 170 <li><a href="/file/tip/a">latest</a></li>
171 171 <li class="active">diff</li>
172 172 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
173 173 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
174 174 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
175 175 </ul>
176 176 <ul>
177 177 <li><a href="/help">help</a></li>
178 178 </ul>
179 179 </div>
180 180
181 181 <div class="main">
182 182 <h2><a href="/">test</a></h2>
183 183 <h3>diff a @ 1:c78f6c5cbea9</h3>
184 184
185 185 <form class="search" action="/log">
186 186 <p></p>
187 187 <p><input name="rev" id="search1" type="text" size="30" /></p>
188 188 <div id="hint">find changesets by author, revision,
189 189 files, or words in the commit message</div>
190 190 </form>
191 191
192 192 <div class="description">del</div>
193 193
194 194 <table id="changesetEntry">
195 195 <tr>
196 196 <th>author</th>
197 197 <td>&#116;&#101;&#115;&#116;</td>
198 198 </tr>
199 199 <tr>
200 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 202 </tr>
203 203 <tr>
204 204 <th>parents</th>
205 205 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
206 206 </tr>
207 207 <tr>
208 208 <th>children</th>
209 209 <td></td>
210 210 </tr>
211 211
212 212 </table>
213 213
214 214 <div class="overflow">
215 215 <div class="sourcefirst"> line diff</div>
216 216
217 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 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 219 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
220 220 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
221 221 </span></pre></div>
222 222 </div>
223 223 </div>
224 224 </div>
225 225
226 226 <script type="text/javascript">process_dates()</script>
227 227
228 228
229 229 </body>
230 230 </html>
231 231
@@ -1,605 +1,605
1 1
2 2 $ "$TESTDIR/hghave" pygments || exit 80
3 3 $ cat <<EOF >> $HGRCPATH
4 4 > [extensions]
5 5 > highlight =
6 6 > [web]
7 7 > pygments_style = friendly
8 8 > EOF
9 9 $ hg init test
10 10 $ cd test
11 11
12 12 create random Python file to exercise Pygments
13 13
14 14 $ cat <<EOF > primes.py
15 15 > #!/usr/bin/env python
16 16 >
17 17 > """Fun with generators. Corresponding Haskell implementation:
18 18 >
19 19 > primes = 2 : sieve [3, 5..]
20 20 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
21 21 > """
22 22 >
23 23 > from itertools import dropwhile, ifilter, islice, count, chain
24 24 >
25 25 > def primes():
26 26 > """Generate all primes."""
27 27 > def sieve(ns):
28 28 > p = ns.next()
29 29 > # It is important to yield *here* in order to stop the
30 30 > # infinite recursion.
31 31 > yield p
32 32 > ns = ifilter(lambda n: n % p != 0, ns)
33 33 > for n in sieve(ns):
34 34 > yield n
35 35 >
36 36 > odds = ifilter(lambda i: i % 2 == 1, count())
37 37 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
38 38 >
39 39 > if __name__ == "__main__":
40 40 > import sys
41 41 > try:
42 42 > n = int(sys.argv[1])
43 43 > except (ValueError, IndexError):
44 44 > n = 10
45 45 > p = primes()
46 46 > print "The first %d primes: %s" % (n, list(islice(p, n)))
47 47 > EOF
48 48 $ hg ci -Ama
49 49 adding primes.py
50 50
51 51 hg serve
52 52
53 53 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
54 54 $ cat hg.pid >> $DAEMON_PIDS
55 55
56 56 hgweb filerevision, html
57 57
58 58 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \
59 59 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
60 60 200 Script output follows
61 61
62 62 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
63 63 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
64 64 <head>
65 65 <link rel="icon" href="/static/hgicon.png" type="image/png" />
66 66 <meta name="robots" content="index, nofollow" />
67 67 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
68 68 <script type="text/javascript" src="/static/mercurial.js"></script>
69 69
70 70 <link rel="stylesheet" href="/highlightcss" type="text/css" />
71 71 <title>test: 853dcd4de2a6 primes.py</title>
72 72 </head>
73 73 <body>
74 74
75 75 <div class="container">
76 76 <div class="menu">
77 77 <div class="logo">
78 78 <a href="http://mercurial.selenic.com/">
79 79 <img src="/static/hglogo.png" alt="mercurial" /></a>
80 80 </div>
81 81 <ul>
82 82 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
83 83 <li><a href="/graph/853dcd4de2a6">graph</a></li>
84 84 <li><a href="/tags">tags</a></li>
85 85 <li><a href="/branches">branches</a></li>
86 86 </ul>
87 87 <ul>
88 88 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
89 89 <li><a href="/file/853dcd4de2a6/">browse</a></li>
90 90 </ul>
91 91 <ul>
92 92 <li class="active">file</li>
93 93 <li><a href="/file/tip/primes.py">latest</a></li>
94 94 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
95 95 <li><a href="/annotate/853dcd4de2a6/primes.py">annotate</a></li>
96 96 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
97 97 <li><a href="/raw-file/853dcd4de2a6/primes.py">raw</a></li>
98 98 </ul>
99 99 <ul>
100 100 <li><a href="/help">help</a></li>
101 101 </ul>
102 102 </div>
103 103
104 104 <div class="main">
105 105 <h2><a href="/">test</a></h2>
106 106 <h3>view primes.py @ 0:853dcd4de2a6</h3>
107 107
108 108 <form class="search" action="/log">
109 109
110 110 <p><input name="rev" id="search1" type="text" size="30" /></p>
111 111 <div id="hint">find changesets by author, revision,
112 112 files, or words in the commit message</div>
113 113 </form>
114 114
115 115 <div class="description">a</div>
116 116
117 117 <table id="changesetEntry">
118 118 <tr>
119 119 <th class="author">author</th>
120 120 <td class="author">&#116;&#101;&#115;&#116;</td>
121 121 </tr>
122 122 <tr>
123 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 125 </tr>
126 126 <tr>
127 127 <th class="author">parents</th>
128 128 <td class="author"></td>
129 129 </tr>
130 130 <tr>
131 131 <th class="author">children</th>
132 132 <td class="author"></td>
133 133 </tr>
134 134
135 135 </table>
136 136
137 137 <div class="overflow">
138 138 <div class="sourcefirst"> line source</div>
139 139
140 140 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
141 141 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
142 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 143 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
144 144 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
145 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 146 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
147 147 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
148 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 149 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
150 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 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 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 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 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 155 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
156 156 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
157 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 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 159 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
160 160 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
161 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 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 163 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
164 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 165 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
166 166 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
167 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 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 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 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 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 172 <div class="sourcelast"></div>
173 173 </div>
174 174 </div>
175 175 </div>
176 176
177 177 <script type="text/javascript">process_dates()</script>
178 178
179 179
180 180 </body>
181 181 </html>
182 182
183 183
184 184 hgweb fileannotate, html
185 185
186 186 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \
187 187 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
188 188 200 Script output follows
189 189
190 190 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
191 191 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
192 192 <head>
193 193 <link rel="icon" href="/static/hgicon.png" type="image/png" />
194 194 <meta name="robots" content="index, nofollow" />
195 195 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
196 196 <script type="text/javascript" src="/static/mercurial.js"></script>
197 197
198 198 <link rel="stylesheet" href="/highlightcss" type="text/css" />
199 199 <title>test: primes.py annotate</title>
200 200 </head>
201 201 <body>
202 202
203 203 <div class="container">
204 204 <div class="menu">
205 205 <div class="logo">
206 206 <a href="http://mercurial.selenic.com/">
207 207 <img src="/static/hglogo.png" alt="mercurial" /></a>
208 208 </div>
209 209 <ul>
210 210 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
211 211 <li><a href="/graph/853dcd4de2a6">graph</a></li>
212 212 <li><a href="/tags">tags</a></li>
213 213 <li><a href="/bookmarks">bookmarks</a></li>
214 214 <li><a href="/branches">branches</a></li>
215 215 </ul>
216 216
217 217 <ul>
218 218 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
219 219 <li><a href="/file/853dcd4de2a6/">browse</a></li>
220 220 </ul>
221 221 <ul>
222 222 <li><a href="/file/853dcd4de2a6/primes.py">file</a></li>
223 223 <li><a href="/file/tip/primes.py">latest</a></li>
224 224 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
225 225 <li class="active">annotate</li>
226 226 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
227 227 <li><a href="/raw-annotate/853dcd4de2a6/primes.py">raw</a></li>
228 228 </ul>
229 229 <ul>
230 230 <li><a href="/help">help</a></li>
231 231 </ul>
232 232 </div>
233 233
234 234 <div class="main">
235 235 <h2><a href="/">test</a></h2>
236 236 <h3>annotate primes.py @ 0:853dcd4de2a6</h3>
237 237
238 238 <form class="search" action="/log">
239 239
240 240 <p><input name="rev" id="search1" type="text" size="30" /></p>
241 241 <div id="hint">find changesets by author, revision,
242 242 files, or words in the commit message</div>
243 243 </form>
244 244
245 245 <div class="description">a</div>
246 246
247 247 <table id="changesetEntry">
248 248 <tr>
249 249 <th class="author">author</th>
250 250 <td class="author">&#116;&#101;&#115;&#116;</td>
251 251 </tr>
252 252 <tr>
253 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 255 </tr>
256 256 <tr>
257 257 <th class="author">parents</th>
258 258 <td class="author"></td>
259 259 </tr>
260 260 <tr>
261 261 <th class="author">children</th>
262 262 <td class="author"></td>
263 263 </tr>
264 264
265 265 </table>
266 266
267 267 <div class="overflow">
268 268 <table class="bigtable">
269 269 <tr>
270 270 <th class="annotate">rev</th>
271 271 <th class="line">&nbsp;&nbsp;line source</th>
272 272 </tr>
273 273
274 274 <tr class="parity0">
275 275 <td class="annotate">
276 276 <a href="/annotate/853dcd4de2a6/primes.py#1"
277 277 title="853dcd4de2a6: a">test@0</a>
278 278 </td>
279 279 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
280 280 </tr>
281 281 <tr class="parity1">
282 282 <td class="annotate">
283 283 <a href="/annotate/853dcd4de2a6/primes.py#2"
284 284 title="853dcd4de2a6: a">test@0</a>
285 285 </td>
286 286 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
287 287 </tr>
288 288 <tr class="parity0">
289 289 <td class="annotate">
290 290 <a href="/annotate/853dcd4de2a6/primes.py#3"
291 291 title="853dcd4de2a6: a">test@0</a>
292 292 </td>
293 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 294 </tr>
295 295 <tr class="parity1">
296 296 <td class="annotate">
297 297 <a href="/annotate/853dcd4de2a6/primes.py#4"
298 298 title="853dcd4de2a6: a">test@0</a>
299 299 </td>
300 300 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
301 301 </tr>
302 302 <tr class="parity0">
303 303 <td class="annotate">
304 304 <a href="/annotate/853dcd4de2a6/primes.py#5"
305 305 title="853dcd4de2a6: a">test@0</a>
306 306 </td>
307 307 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
308 308 </tr>
309 309 <tr class="parity1">
310 310 <td class="annotate">
311 311 <a href="/annotate/853dcd4de2a6/primes.py#6"
312 312 title="853dcd4de2a6: a">test@0</a>
313 313 </td>
314 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 315 </tr>
316 316 <tr class="parity0">
317 317 <td class="annotate">
318 318 <a href="/annotate/853dcd4de2a6/primes.py#7"
319 319 title="853dcd4de2a6: a">test@0</a>
320 320 </td>
321 321 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
322 322 </tr>
323 323 <tr class="parity1">
324 324 <td class="annotate">
325 325 <a href="/annotate/853dcd4de2a6/primes.py#8"
326 326 title="853dcd4de2a6: a">test@0</a>
327 327 </td>
328 328 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
329 329 </tr>
330 330 <tr class="parity0">
331 331 <td class="annotate">
332 332 <a href="/annotate/853dcd4de2a6/primes.py#9"
333 333 title="853dcd4de2a6: a">test@0</a>
334 334 </td>
335 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 336 </tr>
337 337 <tr class="parity1">
338 338 <td class="annotate">
339 339 <a href="/annotate/853dcd4de2a6/primes.py#10"
340 340 title="853dcd4de2a6: a">test@0</a>
341 341 </td>
342 342 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
343 343 </tr>
344 344 <tr class="parity0">
345 345 <td class="annotate">
346 346 <a href="/annotate/853dcd4de2a6/primes.py#11"
347 347 title="853dcd4de2a6: a">test@0</a>
348 348 </td>
349 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 350 </tr>
351 351 <tr class="parity1">
352 352 <td class="annotate">
353 353 <a href="/annotate/853dcd4de2a6/primes.py#12"
354 354 title="853dcd4de2a6: a">test@0</a>
355 355 </td>
356 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 357 </tr>
358 358 <tr class="parity0">
359 359 <td class="annotate">
360 360 <a href="/annotate/853dcd4de2a6/primes.py#13"
361 361 title="853dcd4de2a6: a">test@0</a>
362 362 </td>
363 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 364 </tr>
365 365 <tr class="parity1">
366 366 <td class="annotate">
367 367 <a href="/annotate/853dcd4de2a6/primes.py#14"
368 368 title="853dcd4de2a6: a">test@0</a>
369 369 </td>
370 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 371 </tr>
372 372 <tr class="parity0">
373 373 <td class="annotate">
374 374 <a href="/annotate/853dcd4de2a6/primes.py#15"
375 375 title="853dcd4de2a6: a">test@0</a>
376 376 </td>
377 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 378 </tr>
379 379 <tr class="parity1">
380 380 <td class="annotate">
381 381 <a href="/annotate/853dcd4de2a6/primes.py#16"
382 382 title="853dcd4de2a6: a">test@0</a>
383 383 </td>
384 384 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
385 385 </tr>
386 386 <tr class="parity0">
387 387 <td class="annotate">
388 388 <a href="/annotate/853dcd4de2a6/primes.py#17"
389 389 title="853dcd4de2a6: a">test@0</a>
390 390 </td>
391 391 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
392 392 </tr>
393 393 <tr class="parity1">
394 394 <td class="annotate">
395 395 <a href="/annotate/853dcd4de2a6/primes.py#18"
396 396 title="853dcd4de2a6: a">test@0</a>
397 397 </td>
398 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 399 </tr>
400 400 <tr class="parity0">
401 401 <td class="annotate">
402 402 <a href="/annotate/853dcd4de2a6/primes.py#19"
403 403 title="853dcd4de2a6: a">test@0</a>
404 404 </td>
405 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 406 </tr>
407 407 <tr class="parity1">
408 408 <td class="annotate">
409 409 <a href="/annotate/853dcd4de2a6/primes.py#20"
410 410 title="853dcd4de2a6: a">test@0</a>
411 411 </td>
412 412 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
413 413 </tr>
414 414 <tr class="parity0">
415 415 <td class="annotate">
416 416 <a href="/annotate/853dcd4de2a6/primes.py#21"
417 417 title="853dcd4de2a6: a">test@0</a>
418 418 </td>
419 419 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
420 420 </tr>
421 421 <tr class="parity1">
422 422 <td class="annotate">
423 423 <a href="/annotate/853dcd4de2a6/primes.py#22"
424 424 title="853dcd4de2a6: a">test@0</a>
425 425 </td>
426 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 427 </tr>
428 428 <tr class="parity0">
429 429 <td class="annotate">
430 430 <a href="/annotate/853dcd4de2a6/primes.py#23"
431 431 title="853dcd4de2a6: a">test@0</a>
432 432 </td>
433 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 434 </tr>
435 435 <tr class="parity1">
436 436 <td class="annotate">
437 437 <a href="/annotate/853dcd4de2a6/primes.py#24"
438 438 title="853dcd4de2a6: a">test@0</a>
439 439 </td>
440 440 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
441 441 </tr>
442 442 <tr class="parity0">
443 443 <td class="annotate">
444 444 <a href="/annotate/853dcd4de2a6/primes.py#25"
445 445 title="853dcd4de2a6: a">test@0</a>
446 446 </td>
447 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 448 </tr>
449 449 <tr class="parity1">
450 450 <td class="annotate">
451 451 <a href="/annotate/853dcd4de2a6/primes.py#26"
452 452 title="853dcd4de2a6: a">test@0</a>
453 453 </td>
454 454 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
455 455 </tr>
456 456 <tr class="parity0">
457 457 <td class="annotate">
458 458 <a href="/annotate/853dcd4de2a6/primes.py#27"
459 459 title="853dcd4de2a6: a">test@0</a>
460 460 </td>
461 461 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
462 462 </tr>
463 463 <tr class="parity1">
464 464 <td class="annotate">
465 465 <a href="/annotate/853dcd4de2a6/primes.py#28"
466 466 title="853dcd4de2a6: a">test@0</a>
467 467 </td>
468 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 469 </tr>
470 470 <tr class="parity0">
471 471 <td class="annotate">
472 472 <a href="/annotate/853dcd4de2a6/primes.py#29"
473 473 title="853dcd4de2a6: a">test@0</a>
474 474 </td>
475 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 476 </tr>
477 477 <tr class="parity1">
478 478 <td class="annotate">
479 479 <a href="/annotate/853dcd4de2a6/primes.py#30"
480 480 title="853dcd4de2a6: a">test@0</a>
481 481 </td>
482 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 483 </tr>
484 484 <tr class="parity0">
485 485 <td class="annotate">
486 486 <a href="/annotate/853dcd4de2a6/primes.py#31"
487 487 title="853dcd4de2a6: a">test@0</a>
488 488 </td>
489 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 490 </tr>
491 491 <tr class="parity1">
492 492 <td class="annotate">
493 493 <a href="/annotate/853dcd4de2a6/primes.py#32"
494 494 title="853dcd4de2a6: a">test@0</a>
495 495 </td>
496 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 497 </tr>
498 498 </table>
499 499 </div>
500 500 </div>
501 501 </div>
502 502
503 503 <script type="text/javascript">process_dates()</script>
504 504
505 505
506 506 </body>
507 507 </html>
508 508
509 509
510 510 hgweb fileannotate, raw
511 511
512 512 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \
513 513 > | sed "s/test@//" > a
514 514 $ echo "200 Script output follows" > b
515 515 $ echo "" >> b
516 516 $ echo "" >> b
517 517 $ hg annotate "primes.py" >> b
518 518 $ echo "" >> b
519 519 $ echo "" >> b
520 520 $ echo "" >> b
521 521 $ echo "" >> b
522 522 $ diff -u b a
523 523
524 524 hgweb filerevision, raw
525 525
526 526 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \
527 527 > > a
528 528 $ echo "200 Script output follows" > b
529 529 $ echo "" >> b
530 530 $ hg cat primes.py >> b
531 531 $ diff -u b a
532 532
533 533 hgweb highlightcss friendly
534 534
535 535 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
536 536 $ head -n 4 out
537 537 200 Script output follows
538 538
539 539 /* pygments_style = friendly */
540 540
541 541 $ rm out
542 542
543 543 errors encountered
544 544
545 545 $ cat errors.log
546 546 $ "$TESTDIR/killdaemons.py"
547 547
548 548 Change the pygments style
549 549
550 550 $ cat > .hg/hgrc <<EOF
551 551 > [web]
552 552 > pygments_style = fruity
553 553 > EOF
554 554
555 555 hg serve again
556 556
557 557 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
558 558 $ cat hg.pid >> $DAEMON_PIDS
559 559
560 560 hgweb highlightcss fruity
561 561
562 562 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
563 563 $ head -n 4 out
564 564 200 Script output follows
565 565
566 566 /* pygments_style = fruity */
567 567
568 568 $ rm out
569 569
570 570 errors encountered
571 571
572 572 $ cat errors.log
573 573 $ cd ..
574 574 $ hg init eucjp
575 575 $ cd eucjp
576 576 $ python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
577 577 $ hg ci -Ama
578 578 adding eucjp.txt
579 579 $ hgserveget () {
580 580 > "$TESTDIR/killdaemons.py"
581 581 > echo % HGENCODING="$1" hg serve
582 582 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
583 583 > cat hg.pid >> $DAEMON_PIDS
584 584 >
585 585 > echo % hgweb filerevision, html
586 586 > "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \
587 587 > | grep '<div class="parity0 source">'
588 588 > echo % errors encountered
589 589 > cat errors.log
590 590 > }
591 591 $ hgserveget euc-jp eucjp.txt
592 592 % HGENCODING=euc-jp hg serve
593 593 % hgweb filerevision, html
594 594 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div> (esc)
595 595 % errors encountered
596 596 $ hgserveget utf-8 eucjp.txt
597 597 % HGENCODING=utf-8 hg serve
598 598 % hgweb filerevision, html
599 599 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div> (esc)
600 600 % errors encountered
601 601 $ hgserveget us-ascii eucjp.txt
602 602 % HGENCODING=us-ascii hg serve
603 603 % hgweb filerevision, html
604 604 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
605 605 % errors encountered
General Comments 0
You need to be logged in to leave comments. Login now