##// END OF EJS Templates
hgweb: add help link to templates missed in ead4e21f49f1
Augie Fackler -
r12680:d664547e default
parent child Browse files
Show More
@@ -1,62 +1,64 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
21 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
22 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
23 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
23 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
24 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
24 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
25 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
25 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
26 annotate |
26 annotate |
27 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
27 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a><br/>
28 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a> |
29 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <br/>
29 </div>
31 </div>
30
32
31 <div class="title">{file|escape}</div>
33 <div class="title">{file|escape}</div>
32
34
33 <div class="title_text">
35 <div class="title_text">
34 <table cellspacing="0">
36 <table cellspacing="0">
35 <tr>
37 <tr>
36 <td>author</td>
38 <td>author</td>
37 <td>{author|obfuscate}</td></tr>
39 <td>{author|obfuscate}</td></tr>
38 <tr>
40 <tr>
39 <td></td>
41 <td></td>
40 <td>{date|date} ({date|age})</td></tr>
42 <td>{date|date} ({date|age})</td></tr>
41 {branch%filerevbranch}
43 {branch%filerevbranch}
42 <tr>
44 <tr>
43 <td>changeset {rev}</td>
45 <td>changeset {rev}</td>
44 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
46 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
45 {parent%fileannotateparent}
47 {parent%fileannotateparent}
46 {child%fileannotatechild}
48 {child%fileannotatechild}
47 <tr>
49 <tr>
48 <td>permissions</td>
50 <td>permissions</td>
49 <td style="font-family:monospace">{permissions|permissions}</td></tr>
51 <td style="font-family:monospace">{permissions|permissions}</td></tr>
50 </table>
52 </table>
51 </div>
53 </div>
52
54
53 <div class="page_path">
55 <div class="page_path">
54 {desc|strip|escape|addbreaks|nonempty}
56 {desc|strip|escape|addbreaks|nonempty}
55 </div>
57 </div>
56 <div class="page_body">
58 <div class="page_body">
57 <table>
59 <table>
58 {annotate%annotateline}
60 {annotate%annotateline}
59 </table>
61 </table>
60 </div>
62 </div>
61
63
62 {footer}
64 {footer}
@@ -1,40 +1,41 b''
1 {header}
1 {header}
2 <title>{repo|escape}: File revisions</title>
2 <title>{repo|escape}: File revisions</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
21 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
22 revisions |
22 revisions |
23 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
23 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
24 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
24 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
25 <a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a>
25 <a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a> |
26 <a href="{url}help{sessionvars%urlparameter}">help</a>
26 <br/>
27 <br/>
27 {nav%filenav}
28 {nav%filenav}
28 </div>
29 </div>
29
30
30 <div class="title" >{file|urlescape}</div>
31 <div class="title" >{file|urlescape}</div>
31
32
32 <table>
33 <table>
33 {entries%filelogentry}
34 {entries%filelogentry}
34 </table>
35 </table>
35
36
36 <div class="page_nav">
37 <div class="page_nav">
37 {nav%filenav}
38 {nav%filenav}
38 </div>
39 </div>
39
40
40 {footer}
41 {footer}
@@ -1,61 +1,63 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
21 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
22 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
23 file |
23 file |
24 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
24 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
25 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
25 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
26 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
26 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
27 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a><br/>
28 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a> |
29 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <br/>
29 </div>
31 </div>
30
32
31 <div class="title">{file|escape}</div>
33 <div class="title">{file|escape}</div>
32
34
33 <div class="title_text">
35 <div class="title_text">
34 <table cellspacing="0">
36 <table cellspacing="0">
35 <tr>
37 <tr>
36 <td>author</td>
38 <td>author</td>
37 <td>{author|obfuscate}</td></tr>
39 <td>{author|obfuscate}</td></tr>
38 <tr>
40 <tr>
39 <td></td>
41 <td></td>
40 <td>{date|date} ({date|age})</td></tr>
42 <td>{date|date} ({date|age})</td></tr>
41 {branch%filerevbranch}
43 {branch%filerevbranch}
42 <tr>
44 <tr>
43 <td>changeset {rev}</td>
45 <td>changeset {rev}</td>
44 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
46 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
45 {parent%filerevparent}
47 {parent%filerevparent}
46 {child%filerevchild}
48 {child%filerevchild}
47 <tr>
49 <tr>
48 <td>permissions</td>
50 <td>permissions</td>
49 <td style="font-family:monospace">{permissions|permissions}</td></tr>
51 <td style="font-family:monospace">{permissions|permissions}</td></tr>
50 </table>
52 </table>
51 </div>
53 </div>
52
54
53 <div class="page_path">
55 <div class="page_path">
54 {desc|strip|escape|addbreaks|nonempty}
56 {desc|strip|escape|addbreaks|nonempty}
55 </div>
57 </div>
56
58
57 <div class="page_body">
59 <div class="page_body">
58 {text%fileline}
60 {text%fileline}
59 </div>
61 </div>
60
62
61 {footer}
63 {footer}
@@ -1,36 +1,38 b''
1 {header}
1 {header}
2 <title>{repo|escape}: Search</title>
2 <title>{repo|escape}: Search</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search
12
12
13 <form action="{url}log">
13 <form action="{url}log">
14 {sessionvars%hiddenformentry}
14 {sessionvars%hiddenformentry}
15 <div class="search">
15 <div class="search">
16 <input type="text" name="rev" value="{query|escape}" />
16 <input type="text" name="rev" value="{query|escape}" />
17 </div>
17 </div>
18 </form>
18 </form>
19 </div>
19 </div>
20
20
21 <div class="page_nav">
21 <div class="page_nav">
22 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
22 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
23 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
23 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
24 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
24 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
25 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
25 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
26 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
26 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
27 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
27 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
28 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
28 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
29 |
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
29 <br/>
31 <br/>
30 </div>
32 </div>
31
33
32 <div class="title">searching for {query|escape}</div>
34 <div class="title">searching for {query|escape}</div>
33
35
34 {entries}
36 {entries}
35
37
36 {footer}
38 {footer}
@@ -1,63 +1,64 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <ul class="submenu">
32 <ul class="submenu">
32 <li class="current">changeset</li>
33 <li class="current">changeset</li>
33 <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
34 <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
34 </ul>
35 </ul>
35
36
36 <h2 class="no-link no-border">changeset</h2>
37 <h2 class="no-link no-border">changeset</h2>
37
38
38 <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a></h3>
39 <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a></h3>
39 <p class="changeset-age"><span>{date|age}</span></p>
40 <p class="changeset-age"><span>{date|age}</span></p>
40
41
41 <dl class="overview">
42 <dl class="overview">
42 <dt>author</dt>
43 <dt>author</dt>
43 <dd>{author|obfuscate}</dd>
44 <dd>{author|obfuscate}</dd>
44 <dt>date</dt>
45 <dt>date</dt>
45 <dd>{date|date}</dd>
46 <dd>{date|date}</dd>
46 {branch%changesetbranch}
47 {branch%changesetbranch}
47 <dt>changeset {rev}</dt>
48 <dt>changeset {rev}</dt>
48 <dd>{node|short}</dd>
49 <dd>{node|short}</dd>
49 {parent%changesetparent}
50 {parent%changesetparent}
50 {child%changesetchild}
51 {child%changesetchild}
51 </dl>
52 </dl>
52
53
53 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
54 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
54
55
55 <table>
56 <table>
56 {files}
57 {files}
57 </table>
58 </table>
58
59
59 <div class="diff">
60 <div class="diff">
60 {diff}
61 {diff}
61 </div>
62 </div>
62
63
63 {footer}
64 {footer}
@@ -1,34 +1,35 b''
1 {header}
1 {header}
2 <title>{repo|escape}: Error</title>
2 <title>{repo|escape}: Error</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li class="current">summary</li>
21 <li class="current">summary</li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <h2 class="no-link no-border">An error occurred while processing your request</h2>
32 <h2 class="no-link no-border">An error occurred while processing your request</h2>
32 <p class="normal">{error|escape}</p>
33 <p class="normal">{error|escape}</p>
33
34
34 {footer}
35 {footer}
@@ -1,63 +1,64 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <ul class="submenu">
32 <ul class="submenu">
32 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
33 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
33 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
34 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
34 <li class="current">annotate</li>
35 <li class="current">annotate</li>
35 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
36 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
36 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
37 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
37 </ul>
38 </ul>
38
39
39 <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
40 <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
40 <h3 class="changeset">{file|escape}</h3>
41 <h3 class="changeset">{file|escape}</h3>
41 <p class="changeset-age"><span>{date|age}</span></p>
42 <p class="changeset-age"><span>{date|age}</span></p>
42
43
43 <dl class="overview">
44 <dl class="overview">
44 <dt>author</dt>
45 <dt>author</dt>
45 <dd>{author|obfuscate}</dd>
46 <dd>{author|obfuscate}</dd>
46 <dt>date</dt>
47 <dt>date</dt>
47 <dd>{date|date}</dd>
48 <dd>{date|date}</dd>
48 {branch%filerevbranch}
49 {branch%filerevbranch}
49 <dt>changeset {rev}</dt>
50 <dt>changeset {rev}</dt>
50 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
51 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
51 {parent%fileannotateparent}
52 {parent%fileannotateparent}
52 {child%fileannotatechild}
53 {child%fileannotatechild}
53 <dt>permissions</dt>
54 <dt>permissions</dt>
54 <dd>{permissions|permissions}</dd>
55 <dd>{permissions|permissions}</dd>
55 </dl>
56 </dl>
56
57
57 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
58 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
58
59
59 <table class="annotated">
60 <table class="annotated">
60 {annotate%annotateline}
61 {annotate%annotateline}
61 </table>
62 </table>
62
63
63 {footer}
64 {footer}
@@ -1,54 +1,55 b''
1 {header}
1 {header}
2 <title>{repo|escape}: diff {file|escape}</title>
2 <title>{repo|escape}: diff {file|escape}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file diff</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file diff</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <ul class="submenu">
32 <ul class="submenu">
32 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
33 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
33 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
34 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
34 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
35 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
35 <li class="current">diff</li>
36 <li class="current">diff</li>
36 <li><a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a></li>
37 <li><a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a></li>
37 </ul>
38 </ul>
38
39
39 <h2 class="no-link no-border">diff: {file|escape}</h2>
40 <h2 class="no-link no-border">diff: {file|escape}</h2>
40 <h3 class="changeset">{file|escape}</h3>
41 <h3 class="changeset">{file|escape}</h3>
41
42
42 <dl class="overview">
43 <dl class="overview">
43 {branch%filerevbranch}
44 {branch%filerevbranch}
44 <dt>changeset {rev}</dt>
45 <dt>changeset {rev}</dt>
45 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
46 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
46 {parent%filediffparent}
47 {parent%filediffparent}
47 {child%filediffchild}
48 {child%filediffchild}
48 </dl>
49 </dl>
49
50
50 <div class="diff">
51 <div class="diff">
51 {diff}
52 {diff}
52 </div>
53 </div>
53
54
54 {footer}
55 {footer}
@@ -1,49 +1,50 b''
1 {header}
1 {header}
2 <title>{repo|escape}: File revisions</title>
2 <title>{repo|escape}: File revisions</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <ul class="submenu">
32 <ul class="submenu">
32 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
33 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
33 <li class="current">revisions</li>
34 <li class="current">revisions</li>
34 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
35 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
35 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
36 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
36 <li><a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a></li>
37 <li><a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a></li>
37 </ul>
38 </ul>
38
39
39 <h2 class="no-link no-border">{file|urlescape}</h2>
40 <h2 class="no-link no-border">{file|urlescape}</h2>
40
41
41 <table>
42 <table>
42 {entries%filelogentry}
43 {entries%filelogentry}
43 </table>
44 </table>
44
45
45 <div class="page-path">
46 <div class="page-path">
46 {nav%filenav}
47 {nav%filenav}
47 </div>
48 </div>
48
49
49 {footer}
50 {footer}
@@ -1,63 +1,64 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
27 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <ul class="submenu">
32 <ul class="submenu">
32 <li class="current">file</li>
33 <li class="current">file</li>
33 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
34 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
34 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
35 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
35 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
36 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
36 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
37 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
37 </ul>
38 </ul>
38
39
39 <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
40 <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
40 <h3 class="changeset">{file|escape}</h3>
41 <h3 class="changeset">{file|escape}</h3>
41 <p class="changeset-age"><span>{date|age}</span></p>
42 <p class="changeset-age"><span>{date|age}</span></p>
42
43
43 <dl class="overview">
44 <dl class="overview">
44 <dt>author</dt>
45 <dt>author</dt>
45 <dd>{author|obfuscate}</dd>
46 <dd>{author|obfuscate}</dd>
46 <dt>date</dt>
47 <dt>date</dt>
47 <dd>{date|date}</dd>
48 <dd>{date|date}</dd>
48 {branch%filerevbranch}
49 {branch%filerevbranch}
49 <dt>changeset {rev}</dt>
50 <dt>changeset {rev}</dt>
50 <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
51 <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
51 {parent%filerevparent}
52 {parent%filerevparent}
52 {child%filerevchild}
53 {child%filerevchild}
53 <dt>permissions</dt>
54 <dt>permissions</dt>
54 <dd>{permissions|permissions}</dd>
55 <dd>{permissions|permissions}</dd>
55 </dl>
56 </dl>
56
57
57 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
58 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
58
59
59 <div class="source">
60 <div class="source">
60 {text%fileline}
61 {text%fileline}
61 </div>
62 </div>
62
63
63 {footer}
64 {footer}
@@ -1,35 +1,36 b''
1 {header}
1 {header}
2 <title>{repo|escape}: Mercurial repository not found</title>
2 <title>{repo|escape}: Mercurial repository not found</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li class="current">summary</li>
21 <li class="current">summary</li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <h2 class="no-link no-border">Not Found</h2>
32 <h2 class="no-link no-border">Not Found</h2>
32 <p class="normal">The specified repository "{repo|escape}" is unknown, sorry.</p>
33 <p class="normal">The specified repository "{repo|escape}" is unknown, sorry.</p>
33 <p class="normal">Please go back to the <a href="{url}">main repository list page</a>.</p>
34 <p class="normal">Please go back to the <a href="{url}">main repository list page</a>.</p>
34
35
35 {footer}
36 {footer}
@@ -1,34 +1,35 b''
1 {header}
1 {header}
2 <title>{repo|escape}: Search</title>
2 <title>{repo|escape}: Search</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" value="{query|escape}" /></dd>
16 <dd><input type="text" name="rev" value="{query|escape}" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
26 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
27 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
28 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
29 </ul>
29 </div>
30 </div>
30
31
31 <h2 class="no-link no-border">searching for {query|escape}</h2>
32 <h2 class="no-link no-border">searching for {query|escape}</h2>
32 {entries}
33 {entries}
33
34
34 {footer}
35 {footer}
@@ -1,43 +1,44 b''
1 {header}
1 {header}
2 <title>{repo|escape}: error</title>
2 <title>{repo|escape}: error</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="http://mercurial.selenic.com/">
9 <a href="http://mercurial.selenic.com/">
10 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
17 </ul>
18 </ul>
18 </div>
19 </div>
19
20
20 <div class="main">
21 <div class="main">
21
22
22 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
23 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
23 <h3>error</h3>
24 <h3>error</h3>
24
25
25 <form class="search" action="{url}log">
26 <form class="search" action="{url}log">
26 {sessionvars%hiddenformentry}
27 {sessionvars%hiddenformentry}
27 <p><input name="rev" id="search1" type="text" size="30"></p>
28 <p><input name="rev" id="search1" type="text" size="30"></p>
28 <div id="hint">find changesets by author, revision,
29 <div id="hint">find changesets by author, revision,
29 files, or words in the commit message</div>
30 files, or words in the commit message</div>
30 </form>
31 </form>
31
32
32 <div class="description">
33 <div class="description">
33 <p>
34 <p>
34 An error occurred while processing your request:
35 An error occurred while processing your request:
35 </p>
36 </p>
36 <p>
37 <p>
37 {error|escape}
38 {error|escape}
38 </p>
39 </p>
39 </div>
40 </div>
40 </div>
41 </div>
41 </div>
42 </div>
42
43
43 {footer}
44 {footer}
@@ -1,78 +1,81 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} annotate</title>
2 <title>{repo|escape}: {file|escape} annotate</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="http://mercurial.selenic.com/">
9 <a href="http://mercurial.selenic.com/">
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18
18
19 <ul>
19 <ul>
20 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
21 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
22 </ul>
22 </ul>
23 <ul>
23 <ul>
24 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
24 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
25 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
26 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
26 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
27 <li class="active">annotate</li>
27 <li class="active">annotate</li>
28 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
29 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
29 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
30 </ul>
30 </ul>
31 <ul>
32 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
33 </ul>
31 </div>
34 </div>
32
35
33 <div class="main">
36 <div class="main">
34 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
37 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
35 <h3>annotate {file|escape} @ {rev}:{node|short}</h3>
38 <h3>annotate {file|escape} @ {rev}:{node|short}</h3>
36
39
37 <form class="search" action="{url}log">
40 <form class="search" action="{url}log">
38 {sessionvars%hiddenformentry}
41 {sessionvars%hiddenformentry}
39 <p><input name="rev" id="search1" type="text" size="30" /></p>
42 <p><input name="rev" id="search1" type="text" size="30" /></p>
40 <div id="hint">find changesets by author, revision,
43 <div id="hint">find changesets by author, revision,
41 files, or words in the commit message</div>
44 files, or words in the commit message</div>
42 </form>
45 </form>
43
46
44 <div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
47 <div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
45
48
46 <table id="changesetEntry">
49 <table id="changesetEntry">
47 <tr>
50 <tr>
48 <th class="author">author</th>
51 <th class="author">author</th>
49 <td class="author">{author|obfuscate}</td>
52 <td class="author">{author|obfuscate}</td>
50 </tr>
53 </tr>
51 <tr>
54 <tr>
52 <th class="date">date</th>
55 <th class="date">date</th>
53 <td class="date">{date|date} ({date|age})</td>
56 <td class="date">{date|date} ({date|age})</td>
54 </tr>
57 </tr>
55 <tr>
58 <tr>
56 <th class="author">parents</th>
59 <th class="author">parents</th>
57 <td class="author">{parent%filerevparent}</td>
60 <td class="author">{parent%filerevparent}</td>
58 </tr>
61 </tr>
59 <tr>
62 <tr>
60 <th class="author">children</th>
63 <th class="author">children</th>
61 <td class="author">{child%filerevchild}</td>
64 <td class="author">{child%filerevchild}</td>
62 </tr>
65 </tr>
63 {changesettag}
66 {changesettag}
64 </table>
67 </table>
65
68
66 <div class="overflow">
69 <div class="overflow">
67 <table class="bigtable">
70 <table class="bigtable">
68 <tr>
71 <tr>
69 <th class="annotate">rev</th>
72 <th class="annotate">rev</th>
70 <th class="line">&nbsp;&nbsp;line source</th>
73 <th class="line">&nbsp;&nbsp;line source</th>
71 </tr>
74 </tr>
72 {annotate%annotateline}
75 {annotate%annotateline}
73 </table>
76 </table>
74 </div>
77 </div>
75 </div>
78 </div>
76 </div>
79 </div>
77
80
78 {footer}
81 {footer}
@@ -1,73 +1,76 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} diff</title>
2 <title>{repo|escape}: {file|escape} diff</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="http://mercurial.selenic.com/">
9 <a href="http://mercurial.selenic.com/">
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 </ul>
21 </ul>
22 <ul>
22 <ul>
23 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
23 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 <li class="active">diff</li>
25 <li class="active">diff</li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
29 </ul>
29 </ul>
30 <ul>
31 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
32 </ul>
30 </div>
33 </div>
31
34
32 <div class="main">
35 <div class="main">
33 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
34 <h3>diff {file|escape} @ {rev}:{node|short}</h3>
37 <h3>diff {file|escape} @ {rev}:{node|short}</h3>
35
38
36 <form class="search" action="{url}log">
39 <form class="search" action="{url}log">
37 <p>{sessionvars%hiddenformentry}</p>
40 <p>{sessionvars%hiddenformentry}</p>
38 <p><input name="rev" id="search1" type="text" size="30" /></p>
41 <p><input name="rev" id="search1" type="text" size="30" /></p>
39 <div id="hint">find changesets by author, revision,
42 <div id="hint">find changesets by author, revision,
40 files, or words in the commit message</div>
43 files, or words in the commit message</div>
41 </form>
44 </form>
42
45
43 <div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
46 <div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
44
47
45 <table id="changesetEntry">
48 <table id="changesetEntry">
46 <tr>
49 <tr>
47 <th>author</th>
50 <th>author</th>
48 <td>{author|obfuscate}</td>
51 <td>{author|obfuscate}</td>
49 </tr>
52 </tr>
50 <tr>
53 <tr>
51 <th>date</th>
54 <th>date</th>
52 <td>{date|date} ({date|age})</td>
55 <td>{date|date} ({date|age})</td>
53 </tr>
56 </tr>
54 <tr>
57 <tr>
55 <th>parents</th>
58 <th>parents</th>
56 <td>{parent%filerevparent}</td>
59 <td>{parent%filerevparent}</td>
57 </tr>
60 </tr>
58 <tr>
61 <tr>
59 <th>children</th>
62 <th>children</th>
60 <td>{child%filerevchild}</td>
63 <td>{child%filerevchild}</td>
61 </tr>
64 </tr>
62 {changesettag}
65 {changesettag}
63 </table>
66 </table>
64
67
65 <div class="overflow">
68 <div class="overflow">
66 <div class="sourcefirst"> line diff</div>
69 <div class="sourcefirst"> line diff</div>
67
70
68 {diff}
71 {diff}
69 </div>
72 </div>
70 </div>
73 </div>
71 </div>
74 </div>
72
75
73 {footer}
76 {footer}
@@ -1,69 +1,72 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} history</title>
2 <title>{repo|escape}: {file|escape} history</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}" />
4 href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}" />
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}" />
6 href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}" />
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="container">
10 <div class="container">
11 <div class="menu">
11 <div class="menu">
12 <div class="logo">
12 <div class="logo">
13 <a href="http://mercurial.selenic.com/">
13 <a href="http://mercurial.selenic.com/">
14 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
14 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
15 </div>
15 </div>
16 <ul>
16 <ul>
17 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
17 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
18 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
18 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
19 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
19 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
20 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
20 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
21 </ul>
21 </ul>
22 <ul>
22 <ul>
23 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
23 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
24 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
24 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
25 </ul>
25 </ul>
26 <ul>
26 <ul>
27 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
27 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
28 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
28 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
29 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
29 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
30 <li class="active">file log</li>
30 <li class="active">file log</li>
31 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
31 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
32 </ul>
32 </ul>
33 <ul>
34 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
35 </ul>
33 </div>
36 </div>
34
37
35 <div class="main">
38 <div class="main">
36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
39 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
37 <h3>log {file|escape}</h3>
40 <h3>log {file|escape}</h3>
38
41
39 <form class="search" action="{url}log">
42 <form class="search" action="{url}log">
40 {sessionvars%hiddenformentry}
43 {sessionvars%hiddenformentry}
41 <p><input name="rev" id="search1" type="text" size="30" /></p>
44 <p><input name="rev" id="search1" type="text" size="30" /></p>
42 <div id="hint">find changesets by author, revision,
45 <div id="hint">find changesets by author, revision,
43 files, or words in the commit message</div>
46 files, or words in the commit message</div>
44 </form>
47 </form>
45
48
46 <div class="navigate">
49 <div class="navigate">
47 <a href="{url}log/{node|short}/{file|urlescape}{lessvars%urlparameter}">less</a>
50 <a href="{url}log/{node|short}/{file|urlescape}{lessvars%urlparameter}">less</a>
48 <a href="{url}log/{node|short}/{file|urlescape}{morevars%urlparameter}">more</a>
51 <a href="{url}log/{node|short}/{file|urlescape}{morevars%urlparameter}">more</a>
49 | {nav%filenav}</div>
52 | {nav%filenav}</div>
50
53
51 <table class="bigtable">
54 <table class="bigtable">
52 <tr>
55 <tr>
53 <th class="age">age</th>
56 <th class="age">age</th>
54 <th class="author">author</th>
57 <th class="author">author</th>
55 <th class="description">description</th>
58 <th class="description">description</th>
56 </tr>
59 </tr>
57 {entries%filelogentry}
60 {entries%filelogentry}
58 </table>
61 </table>
59
62
60 <div class="navigate">
63 <div class="navigate">
61 <a href="{url}log/{node|short}/{file|urlescape}{lessvars%urlparameter}">less</a>
64 <a href="{url}log/{node|short}/{file|urlescape}{lessvars%urlparameter}">less</a>
62 <a href="{url}log/{node|short}/{file|urlescape}{morevars%urlparameter}">more</a>
65 <a href="{url}log/{node|short}/{file|urlescape}{morevars%urlparameter}">more</a>
63 | {nav%filenav}
66 | {nav%filenav}
64 </div>
67 </div>
65
68
66 </div>
69 </div>
67 </div>
70 </div>
68
71
69 {footer}
72 {footer}
@@ -1,73 +1,76 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short} {file|escape}</title>
2 <title>{repo|escape}: {node|short} {file|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="http://mercurial.selenic.com/">
9 <a href="http://mercurial.selenic.com/">
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 </ul>
21 </ul>
22 <ul>
22 <ul>
23 <li class="active">file</li>
23 <li class="active">file</li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
25 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
29 </ul>
29 </ul>
30 <ul>
31 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
32 </ul>
30 </div>
33 </div>
31
34
32 <div class="main">
35 <div class="main">
33 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
34 <h3>view {file|escape} @ {rev}:{node|short}</h3>
37 <h3>view {file|escape} @ {rev}:{node|short}</h3>
35
38
36 <form class="search" action="{url}log">
39 <form class="search" action="{url}log">
37 {sessionvars%hiddenformentry}
40 {sessionvars%hiddenformentry}
38 <p><input name="rev" id="search1" type="text" size="30" /></p>
41 <p><input name="rev" id="search1" type="text" size="30" /></p>
39 <div id="hint">find changesets by author, revision,
42 <div id="hint">find changesets by author, revision,
40 files, or words in the commit message</div>
43 files, or words in the commit message</div>
41 </form>
44 </form>
42
45
43 <div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
46 <div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
44
47
45 <table id="changesetEntry">
48 <table id="changesetEntry">
46 <tr>
49 <tr>
47 <th class="author">author</th>
50 <th class="author">author</th>
48 <td class="author">{author|obfuscate}</td>
51 <td class="author">{author|obfuscate}</td>
49 </tr>
52 </tr>
50 <tr>
53 <tr>
51 <th class="date">date</th>
54 <th class="date">date</th>
52 <td class="date">{date|date} ({date|age})</td>
55 <td class="date">{date|date} ({date|age})</td>
53 </tr>
56 </tr>
54 <tr>
57 <tr>
55 <th class="author">parents</th>
58 <th class="author">parents</th>
56 <td class="author">{parent%filerevparent}</td>
59 <td class="author">{parent%filerevparent}</td>
57 </tr>
60 </tr>
58 <tr>
61 <tr>
59 <th class="author">children</th>
62 <th class="author">children</th>
60 <td class="author">{child%filerevchild}</td>
63 <td class="author">{child%filerevchild}</td>
61 </tr>
64 </tr>
62 {changesettag}
65 {changesettag}
63 </table>
66 </table>
64
67
65 <div class="overflow">
68 <div class="overflow">
66 <div class="sourcefirst"> line source</div>
69 <div class="sourcefirst"> line source</div>
67 {text%fileline}
70 {text%fileline}
68 <div class="sourcelast"></div>
71 <div class="sourcelast"></div>
69 </div>
72 </div>
70 </div>
73 </div>
71 </div>
74 </div>
72
75
73 {footer}
76 {footer}
@@ -1,43 +1,44 b''
1 {header}
1 {header}
2 <title>Help: {topic}</title>
2 <title>Help: {topic}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-tags" title="Atom feed for {repo|escape}" />
4 href="{url}atom-tags" title="Atom feed for {repo|escape}" />
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-tags" title="RSS feed for {repo|escape}" />
6 href="{url}rss-tags" title="RSS feed for {repo|escape}" />
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="container">
10 <div class="container">
11 <div class="menu">
11 <div class="menu">
12 <div class="logo">
12 <div class="logo">
13 <a href="http://mercurial.selenic.com/">
13 <a href="http://mercurial.selenic.com/">
14 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
14 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
15 </div>
15 </div>
16 <ul>
16 <ul>
17 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
17 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
18 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
18 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
19 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
19 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
20 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
20 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
21 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
21 </ul>
22 </ul>
22 <ul>
23 <ul>
23 <li class="active">help</li>
24 <li class="active">help</li>
24 </ul>
25 </ul>
25 </div>
26 </div>
26
27
27 <div class="main">
28 <div class="main">
28 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
29 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
29 <h3>Help: {topic}</h3>
30 <h3>Help: {topic}</h3>
30
31
31 <form class="search" action="{url}log">
32 <form class="search" action="{url}log">
32 {sessionvars%hiddenformentry}
33 {sessionvars%hiddenformentry}
33 <p><input name="rev" id="search1" type="text" size="30" /></p>
34 <p><input name="rev" id="search1" type="text" size="30" /></p>
34 <div id="hint">find changesets by author, revision,
35 <div id="hint">find changesets by author, revision,
35 files, or words in the commit message</div>
36 files, or words in the commit message</div>
36 </form>
37 </form>
37 <pre>
38 <pre>
38 {doc|escape}
39 {doc|escape}
39 </pre>
40 </pre>
40 </div>
41 </div>
41 </div>
42 </div>
42
43
43 {footer}
44 {footer}
@@ -1,48 +1,49 b''
1 {header}
1 {header}
2 <title>Help: {title}</title>
2 <title>Help: {title}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-tags" title="Atom feed for {repo|escape}" />
4 href="{url}atom-tags" title="Atom feed for {repo|escape}" />
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-tags" title="RSS feed for {repo|escape}" />
6 href="{url}rss-tags" title="RSS feed for {repo|escape}" />
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="container">
10 <div class="container">
11 <div class="menu">
11 <div class="menu">
12 <div class="logo">
12 <div class="logo">
13 <a href="http://mercurial.selenic.com/">
13 <a href="http://mercurial.selenic.com/">
14 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
14 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
15 </div>
15 </div>
16 <ul>
16 <ul>
17 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
17 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
18 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
18 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
19 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
19 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
20 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
20 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
21 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
21 </ul>
22 </ul>
22 <ul>
23 <ul>
23 <li class="active">help</li>
24 <li class="active">help</li>
24 </ul>
25 </ul>
25 </div>
26 </div>
26
27
27 <div class="main">
28 <div class="main">
28 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
29 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
29 <form class="search" action="{url}log">
30 <form class="search" action="{url}log">
30 {sessionvars%hiddenformentry}
31 {sessionvars%hiddenformentry}
31 <p><input name="rev" id="search1" type="text" size="30" /></p>
32 <p><input name="rev" id="search1" type="text" size="30" /></p>
32 <div id="hint">find changesets by author, revision,
33 <div id="hint">find changesets by author, revision,
33 files, or words in the commit message</div>
34 files, or words in the commit message</div>
34 </form>
35 </form>
35 <table class="bigtable">
36 <table class="bigtable">
36 <tr><td colspan="2"><h2><a name="main" href="#topics">Topics</a></h2></td></tr>
37 <tr><td colspan="2"><h2><a name="main" href="#topics">Topics</a></h2></td></tr>
37 {topics % helpentry}
38 {topics % helpentry}
38
39
39 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
40 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
40 {earlycommands % helpentry}
41 {earlycommands % helpentry}
41
42
42 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
43 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
43 {othercommands % helpentry}
44 {othercommands % helpentry}
44 </table>
45 </table>
45 </div>
46 </div>
46 </div>
47 </div>
47
48
48 {footer}
49 {footer}
@@ -1,57 +1,60 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short} {path|escape}</title>
2 <title>{repo|escape}: {node|short} {path|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="http://mercurial.selenic.com/">
9 <a href="http://mercurial.selenic.com/">
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li class="active">browse</li>
20 <li class="active">browse</li>
21 </ul>
21 </ul>
22 <ul>
22 <ul>
23 {archives%archiveentry}
23 {archives%archiveentry}
24 </ul>
24 </ul>
25 <ul>
25 <ul>
26 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
26 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
27 </ul>
27 </ul>
28 <ul>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
28 </div>
31 </div>
29
32
30 <div class="main">
33 <div class="main">
31 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
34 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
32 <h3>directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}</h3>
35 <h3>directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}</h3>
33
36
34 <form class="search" action="{url}log">
37 <form class="search" action="{url}log">
35 {sessionvars%hiddenformentry}
38 {sessionvars%hiddenformentry}
36 <p><input name="rev" id="search1" type="text" size="30" /></p>
39 <p><input name="rev" id="search1" type="text" size="30" /></p>
37 <div id="hint">find changesets by author, revision,
40 <div id="hint">find changesets by author, revision,
38 files, or words in the commit message</div>
41 files, or words in the commit message</div>
39 </form>
42 </form>
40
43
41 <table class="bigtable">
44 <table class="bigtable">
42 <tr>
45 <tr>
43 <th class="name">name</th>
46 <th class="name">name</th>
44 <th class="size">size</th>
47 <th class="size">size</th>
45 <th class="permissions">permissions</th>
48 <th class="permissions">permissions</th>
46 </tr>
49 </tr>
47 <tr class="fileline parity{upparity}">
50 <tr class="fileline parity{upparity}">
48 <td class="name"><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
51 <td class="name"><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
49 <td class="size"></td>
52 <td class="size"></td>
50 <td class="permissions">drwxr-xr-x</td>
53 <td class="permissions">drwxr-xr-x</td>
51 </tr>
54 </tr>
52 {dentries%direntry}
55 {dentries%direntry}
53 {fentries%fileentry}
56 {fentries%fileentry}
54 </table>
57 </table>
55 </div>
58 </div>
56 </div>
59 </div>
57 {footer}
60 {footer}
@@ -1,53 +1,54 b''
1 {header}
1 {header}
2 <title>{repo|escape}: searching for {query|escape}</title>
2 <title>{repo|escape}: searching for {query|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="http://mercurial.selenic.com/">
9 <a href="http://mercurial.selenic.com/">
10 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
10 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
17 </ul>
18 </ul>
18 </div>
19 </div>
19
20
20 <div class="main">
21 <div class="main">
21 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
22 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
22 <h3>searching for '{query|escape}'</h3>
23 <h3>searching for '{query|escape}'</h3>
23
24
24 <form class="search" action="{url}log">
25 <form class="search" action="{url}log">
25 {sessionvars%hiddenformentry}
26 {sessionvars%hiddenformentry}
26 <p><input name="rev" id="search1" type="text" size="30"></p>
27 <p><input name="rev" id="search1" type="text" size="30"></p>
27 <div id="hint">find changesets by author, revision,
28 <div id="hint">find changesets by author, revision,
28 files, or words in the commit message</div>
29 files, or words in the commit message</div>
29 </form>
30 </form>
30
31
31 <div class="navigate">
32 <div class="navigate">
32 <a href="{url}search/{lessvars%urlparameter}">less</a>
33 <a href="{url}search/{lessvars%urlparameter}">less</a>
33 <a href="{url}search/{morevars%urlparameter}">more</a>
34 <a href="{url}search/{morevars%urlparameter}">more</a>
34 </div>
35 </div>
35
36
36 <table class="bigtable">
37 <table class="bigtable">
37 <tr>
38 <tr>
38 <th class="age">age</th>
39 <th class="age">age</th>
39 <th class="author">author</th>
40 <th class="author">author</th>
40 <th class="description">description</th>
41 <th class="description">description</th>
41 </tr>
42 </tr>
42 {entries}
43 {entries}
43 </table>
44 </table>
44
45
45 <div class="navigate">
46 <div class="navigate">
46 <a href="{url}search/{lessvars%urlparameter}">less</a>
47 <a href="{url}search/{lessvars%urlparameter}">less</a>
47 <a href="{url}search/{morevars%urlparameter}">more</a>
48 <a href="{url}search/{morevars%urlparameter}">more</a>
48 </div>
49 </div>
49
50
50 </div>
51 </div>
51 </div>
52 </div>
52
53
53 {footer}
54 {footer}
@@ -1,43 +1,44 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changelog</title>
2 <title>{repo|escape}: changelog</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}">
4 href="{url}atom-log" title="Atom feed for {repo|escape}">
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}">
6 href="{url}rss-log" title="RSS feed for {repo|escape}">
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="buttons">
10 <div class="buttons">
11 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
11 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
12 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
12 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
13 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
13 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
14 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
14 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
15 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
15 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
16 {archives%archiveentry}
16 {archives%archiveentry}
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 <a type="application/rss+xml" href="{url}rss-log">rss</a>
18 <a type="application/rss+xml" href="{url}rss-log">rss</a>
18 <a type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
19 <a type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
19 </div>
20 </div>
20
21
21 <h2>changelog for {repo|escape}</h2>
22 <h2>changelog for {repo|escape}</h2>
22
23
23 <form action="{url}log">
24 <form action="{url}log">
24 {sessionvars%hiddenformentry}
25 {sessionvars%hiddenformentry}
25 <p>
26 <p>
26 <label for="search1">search:</label>
27 <label for="search1">search:</label>
27 <input name="rev" id="search1" type="text" size="30">
28 <input name="rev" id="search1" type="text" size="30">
28 navigate: <small class="navigate">{changenav%nav}</small>
29 navigate: <small class="navigate">{changenav%nav}</small>
29 </p>
30 </p>
30 </form>
31 </form>
31
32
32 {entries%changelogentry}
33 {entries%changelogentry}
33
34
34 <form action="{url}log">
35 <form action="{url}log">
35 {sessionvars%hiddenformentry}
36 {sessionvars%hiddenformentry}
36 <p>
37 <p>
37 <label for="search2">search:</label>
38 <label for="search2">search:</label>
38 <input name="rev" id="search2" type="text" size="30">
39 <input name="rev" id="search2" type="text" size="30">
39 navigate: <small class="navigate">{changenav%nav}</small>
40 navigate: <small class="navigate">{changenav%nav}</small>
40 </p>
41 </p>
41 </form>
42 </form>
42
43
43 {footer}
44 {footer}
@@ -1,51 +1,52 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {node|short}</title>
2 <title>{repo|escape}: changeset {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
13 <a href="{url}raw-rev/{node|short}">raw</a>
13 <a href="{url}raw-rev/{node|short}">raw</a>
14 {archives%archiveentry}
14 {archives%archiveentry}
15 <a href="{url}help{sessionvars%urlparameter}">help</a>
15 </div>
16 </div>
16
17
17 <h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
18 <h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
18
19
19 <table id="changesetEntry">
20 <table id="changesetEntry">
20 <tr>
21 <tr>
21 <th class="changeset">changeset {rev}:</th>
22 <th class="changeset">changeset {rev}:</th>
22 <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
23 <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
23 </tr>
24 </tr>
24 {parent%changesetparent}
25 {parent%changesetparent}
25 {child%changesetchild}
26 {child%changesetchild}
26 {changesettag}
27 {changesettag}
27 <tr>
28 <tr>
28 <th class="author">author:</th>
29 <th class="author">author:</th>
29 <td class="author">{author|obfuscate}</td>
30 <td class="author">{author|obfuscate}</td>
30 </tr>
31 </tr>
31 <tr>
32 <tr>
32 <th class="date">date:</th>
33 <th class="date">date:</th>
33 <td class="date">{date|date} ({date|age})</td>
34 <td class="date">{date|date} ({date|age})</td>
34 </tr>
35 </tr>
35 <tr>
36 <tr>
36 <th class="files">files:</th>
37 <th class="files">files:</th>
37 <td class="files">{files}</td>
38 <td class="files">{files}</td>
38 </tr>
39 </tr>
39 <tr>
40 <tr>
40 <th class="description">description:</th>
41 <th class="description">description:</th>
41 <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
42 <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
42 </tr>
43 </tr>
43 </table>
44 </table>
44
45
45 <div id="changesetDiff">
46 <div id="changesetDiff">
46 {diff}
47 {diff}
47 </div>
48 </div>
48
49
49 {footer}
50 {footer}
50
51
51
52
@@ -1,48 +1,49 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} annotate</title>
2 <title>{repo|escape}: {file|escape} annotate</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
14 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
15 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
16 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
16 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 </div>
18 </div>
18
19
19 <h2>Annotate {file|escape}</h2>
20 <h2>Annotate {file|escape}</h2>
20
21
21 <table>
22 <table>
22 <tr>
23 <tr>
23 <td class="metatag">changeset {rev}:</td>
24 <td class="metatag">changeset {rev}:</td>
24 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 {parent%fileannotateparent}
26 {parent%fileannotateparent}
26 {child%fileannotatechild}
27 {child%fileannotatechild}
27 <tr>
28 <tr>
28 <td class="metatag">author:</td>
29 <td class="metatag">author:</td>
29 <td>{author|obfuscate}</td></tr>
30 <td>{author|obfuscate}</td></tr>
30 <tr>
31 <tr>
31 <td class="metatag">date:</td>
32 <td class="metatag">date:</td>
32 <td>{date|date} ({date|age})</td>
33 <td>{date|date} ({date|age})</td>
33 </tr>
34 </tr>
34 <tr>
35 <tr>
35 <td class="metatag">permissions:</td>
36 <td class="metatag">permissions:</td>
36 <td>{permissions|permissions}</td>
37 <td>{permissions|permissions}</td>
37 </tr>
38 </tr>
38 <tr>
39 <tr>
39 <td class="metatag">description:</td>
40 <td class="metatag">description:</td>
40 <td>{desc|strip|escape|addbreaks|nonempty}</td>
41 <td>{desc|strip|escape|addbreaks|nonempty}</td>
41 </tr>
42 </tr>
42 </table>
43 </table>
43
44
44 <table cellspacing="0" cellpadding="0">
45 <table cellspacing="0" cellpadding="0">
45 {annotate%annotateline}
46 {annotate%annotateline}
46 </table>
47 </table>
47
48
48 {footer}
49 {footer}
@@ -1,36 +1,37 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} diff</title>
2 <title>{repo|escape}: {file|escape} diff</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
13 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
16 <a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a>
16 <a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 </div>
18 </div>
18
19
19 <h2>{file|escape}</h2>
20 <h2>{file|escape}</h2>
20
21
21 <table id="filediffEntry">
22 <table id="filediffEntry">
22 <tr>
23 <tr>
23 <th class="revision">revision {rev}:</th>
24 <th class="revision">revision {rev}:</th>
24 <td class="revision"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
25 <td class="revision"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
25 </tr>
26 </tr>
26 {parent%filediffparent}
27 {parent%filediffparent}
27 {child%filediffchild}
28 {child%filediffchild}
28 </table>
29 </table>
29
30
30 <div id="fileDiff">
31 <div id="fileDiff">
31 {diff}
32 {diff}
32 </div>
33 </div>
33
34
34 {footer}
35 {footer}
35
36
36
37
@@ -1,28 +1,29 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} history</title>
2 <title>{repo|escape}: {file|escape} history</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">
4 href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}">
6 href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}">
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="buttons">
10 <div class="buttons">
11 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
11 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
12 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
12 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
13 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
13 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
14 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
14 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
15 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
15 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
16 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
16 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
17 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
17 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
18 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 <a type="application/rss+xml" href="{url}rss-log/tip/{file|urlescape}">rss</a>
19 <a type="application/rss+xml" href="{url}rss-log/tip/{file|urlescape}">rss</a>
19 <a type="application/atom+xml" href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">atom</a>
20 <a type="application/atom+xml" href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">atom</a>
20 </div>
21 </div>
21
22
22 <h2>{file|escape} revision history</h2>
23 <h2>{file|escape} revision history</h2>
23
24
24 <p>navigate: <small class="navigate">{nav%filenav}</small></p>
25 <p>navigate: <small class="navigate">{nav%filenav}</small></p>
25
26
26 {entries%filelogentry}
27 {entries%filelogentry}
27
28
28 {footer}
29 {footer}
@@ -1,46 +1,47 b''
1 {header}
1 {header}
2 <title>{repo|escape}:{file|escape}</title>
2 <title>{repo|escape}:{file|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
16 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
16 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 </div>
18 </div>
18
19
19 <h2>{file|escape}</h2>
20 <h2>{file|escape}</h2>
20
21
21 <table>
22 <table>
22 <tr>
23 <tr>
23 <td class="metatag">changeset {rev}:</td>
24 <td class="metatag">changeset {rev}:</td>
24 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 {parent%filerevparent}
26 {parent%filerevparent}
26 {child%filerevchild}
27 {child%filerevchild}
27 <tr>
28 <tr>
28 <td class="metatag">author:</td>
29 <td class="metatag">author:</td>
29 <td>{author|obfuscate}</td></tr>
30 <td>{author|obfuscate}</td></tr>
30 <tr>
31 <tr>
31 <td class="metatag">date:</td>
32 <td class="metatag">date:</td>
32 <td>{date|date} ({date|age})</td></tr>
33 <td>{date|date} ({date|age})</td></tr>
33 <tr>
34 <tr>
34 <td class="metatag">permissions:</td>
35 <td class="metatag">permissions:</td>
35 <td>{permissions|permissions}</td></tr>
36 <td>{permissions|permissions}</td></tr>
36 <tr>
37 <tr>
37 <td class="metatag">description:</td>
38 <td class="metatag">description:</td>
38 <td>{desc|strip|escape|addbreaks|nonempty}</td>
39 <td>{desc|strip|escape|addbreaks|nonempty}</td>
39 </tr>
40 </tr>
40 </table>
41 </table>
41
42
42 <pre>
43 <pre>
43 {text%fileline}
44 {text%fileline}
44 </pre>
45 </pre>
45
46
46 {footer}
47 {footer}
@@ -1,96 +1,97 b''
1 {header}
1 {header}
2 <title>{repo|escape}: graph</title>
2 <title>{repo|escape}: graph</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
4 href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
6 href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
7 <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
7 <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
8 </head>
8 </head>
9 <body>
9 <body>
10
10
11 <div class="buttons">
11 <div class="buttons">
12 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
12 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
13 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
13 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
14 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
14 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
15 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
15 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
16 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
16 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 </div>
18 </div>
18
19
19 <h2>graph</h2>
20 <h2>graph</h2>
20
21
21 <form action="{url}log">
22 <form action="{url}log">
22 {sessionvars%hiddenformentry}
23 {sessionvars%hiddenformentry}
23 <p>
24 <p>
24 <label for="search1">search:</label>
25 <label for="search1">search:</label>
25 <input name="rev" id="search1" type="text" size="30">
26 <input name="rev" id="search1" type="text" size="30">
26 navigate: <small class="navigate">{changenav%navgraph}</small>
27 navigate: <small class="navigate">{changenav%navgraph}</small>
27 </p>
28 </p>
28 </form>
29 </form>
29
30
30 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
31 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
31
32
32 <div id="wrapper">
33 <div id="wrapper">
33 <ul id="nodebgs"></ul>
34 <ul id="nodebgs"></ul>
34 <canvas id="graph" width="224" height="{canvasheight}"></canvas>
35 <canvas id="graph" width="224" height="{canvasheight}"></canvas>
35 <ul id="graphnodes"></ul>
36 <ul id="graphnodes"></ul>
36 </div>
37 </div>
37
38
38 <script type="text/javascript" src="{staticurl}graph.js"></script>
39 <script type="text/javascript" src="{staticurl}graph.js"></script>
39 <script type="text/javascript">
40 <script type="text/javascript">
40 <!-- hide script content
41 <!-- hide script content
41
42
42 var data = {jsdata|json};
43 var data = {jsdata|json};
43 var graph = new Graph();
44 var graph = new Graph();
44 graph.scale({bg_height});
45 graph.scale({bg_height});
45
46
46 graph.edge = function(x0, y0, x1, y1, color) \{
47 graph.edge = function(x0, y0, x1, y1, color) \{
47
48
48 this.setColor(color, 0.0, 0.65);
49 this.setColor(color, 0.0, 0.65);
49 this.ctx.beginPath();
50 this.ctx.beginPath();
50 this.ctx.moveTo(x0, y0);
51 this.ctx.moveTo(x0, y0);
51 this.ctx.lineTo(x1, y1);
52 this.ctx.lineTo(x1, y1);
52 this.ctx.stroke();
53 this.ctx.stroke();
53
54
54 }
55 }
55
56
56 var revlink = '<li style="_STYLE"><span class="desc">';
57 var revlink = '<li style="_STYLE"><span class="desc">';
57 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
58 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
58 revlink += '</span><span class="info">_DATE, by _USER</span></li>';
59 revlink += '</span><span class="info">_DATE, by _USER</span></li>';
59
60
60 graph.vertex = function(x, y, color, parity, cur) \{
61 graph.vertex = function(x, y, color, parity, cur) \{
61
62
62 this.ctx.beginPath();
63 this.ctx.beginPath();
63 color = this.setColor(color, 0.25, 0.75);
64 color = this.setColor(color, 0.25, 0.75);
64 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
65 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
65 this.ctx.fill();
66 this.ctx.fill();
66
67
67 var bg = '<li class="bg parity' + parity + '"></li>';
68 var bg = '<li class="bg parity' + parity + '"></li>';
68 var left = (this.columns + 1) * this.bg_height;
69 var left = (this.columns + 1) * this.bg_height;
69 var nstyle = 'padding-left: ' + left + 'px;';
70 var nstyle = 'padding-left: ' + left + 'px;';
70 var item = revlink.replace(/_STYLE/, nstyle);
71 var item = revlink.replace(/_STYLE/, nstyle);
71 item = item.replace(/_PARITY/, 'parity' + parity);
72 item = item.replace(/_PARITY/, 'parity' + parity);
72 item = item.replace(/_NODEID/, cur[0]);
73 item = item.replace(/_NODEID/, cur[0]);
73 item = item.replace(/_NODEID/, cur[0]);
74 item = item.replace(/_NODEID/, cur[0]);
74 item = item.replace(/_DESC/, cur[3]);
75 item = item.replace(/_DESC/, cur[3]);
75 item = item.replace(/_USER/, cur[4]);
76 item = item.replace(/_USER/, cur[4]);
76 item = item.replace(/_DATE/, cur[5]);
77 item = item.replace(/_DATE/, cur[5]);
77
78
78 return [bg, item];
79 return [bg, item];
79
80
80 }
81 }
81
82
82 graph.render(data);
83 graph.render(data);
83
84
84 // stop hiding script -->
85 // stop hiding script -->
85 </script>
86 </script>
86
87
87 <form action="{url}log">
88 <form action="{url}log">
88 {sessionvars%hiddenformentry}
89 {sessionvars%hiddenformentry}
89 <p>
90 <p>
90 <label for="search1">search:</label>
91 <label for="search1">search:</label>
91 <input name="rev" id="search1" type="text" size="30">
92 <input name="rev" id="search1" type="text" size="30">
92 navigate: <small class="navigate">{changenav%navgraph}</small>
93 navigate: <small class="navigate">{changenav%navgraph}</small>
93 </p>
94 </p>
94 </form>
95 </form>
95
96
96 {footer}
97 {footer}
@@ -1,28 +1,29 b''
1 {header}
1 {header}
2 <title>{repo|escape}: files for changeset {node|short}</title>
2 <title>{repo|escape}: files for changeset {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 {archives%archiveentry}
13 {archives%archiveentry}
14 <a href="{url}help{sessionvars%urlparameter}">help</a>
14 </div>
15 </div>
15
16
16 <h2>files for changeset {node|short}: {path|escape}</h2>
17 <h2>files for changeset {node|short}: {path|escape}</h2>
17
18
18 <table cellpadding="0" cellspacing="0">
19 <table cellpadding="0" cellspacing="0">
19 <tr class="parity{upparity}">
20 <tr class="parity{upparity}">
20 <td><tt>drwxr-xr-x</tt>&nbsp;
21 <td><tt>drwxr-xr-x</tt>&nbsp;
21 <td>&nbsp;
22 <td>&nbsp;
22 <td>&nbsp;
23 <td>&nbsp;
23 <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a>
24 <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a>
24 </tr>
25 </tr>
25 {dentries%direntry}
26 {dentries%direntry}
26 {fentries%fileentry}
27 {fentries%fileentry}
27 </table>
28 </table>
28 {footer}
29 {footer}
@@ -1,36 +1,37 b''
1 {header}
1 {header}
2 <title>{repo|escape}: searching for {query|escape}</title>
2 <title>{repo|escape}: searching for {query|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
13 {archives%archiveentry}
13 {archives%archiveentry}
14 <a href="{url}help{sessionvars%urlparameter}">help</a>
14 </div>
15 </div>
15
16
16 <h2>searching for {query|escape}</h2>
17 <h2>searching for {query|escape}</h2>
17
18
18 <form>
19 <form>
19 {sessionvars%hiddenformentry}
20 {sessionvars%hiddenformentry}
20 <p>
21 <p>
21 search:
22 search:
22 <input name="rev" type="text" width="30" value="{query|escape}">
23 <input name="rev" type="text" width="30" value="{query|escape}">
23 </p>
24 </p>
24 </form>
25 </form>
25
26
26 {entries}
27 {entries}
27
28
28 <form>
29 <form>
29 {sessionvars%hiddenformentry}
30 {sessionvars%hiddenformentry}
30 <p>
31 <p>
31 search:
32 search:
32 <input name="rev" type="text" width="30" value="{query|escape}">
33 <input name="rev" type="text" width="30" value="{query|escape}">
33 </p>
34 </p>
34 </form>
35 </form>
35
36
36 {footer}
37 {footer}
@@ -1,43 +1,44 b''
1 {header}
1 {header}
2 <title>{repo|escape}: shortlog</title>
2 <title>{repo|escape}: shortlog</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}">
4 href="{url}atom-log" title="Atom feed for {repo|escape}">
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}">
6 href="{url}rss-log" title="RSS feed for {repo|escape}">
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="buttons">
10 <div class="buttons">
11 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
11 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
12 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
12 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
13 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
13 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
14 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
14 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
15 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
15 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
16 {archives%archiveentry}
16 {archives%archiveentry}
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 <a type="application/rss+xml" href="{url}rss-log">rss</a>
18 <a type="application/rss+xml" href="{url}rss-log">rss</a>
18 <a type="application/rss+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
19 <a type="application/rss+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
19 </div>
20 </div>
20
21
21 <h2>shortlog for {repo|escape}</h2>
22 <h2>shortlog for {repo|escape}</h2>
22
23
23 <form action="{url}log">
24 <form action="{url}log">
24 {sessionvars%hiddenformentry}
25 {sessionvars%hiddenformentry}
25 <p>
26 <p>
26 <label for="search1">search:</label>
27 <label for="search1">search:</label>
27 <input name="rev" id="search1" type="text" size="30">
28 <input name="rev" id="search1" type="text" size="30">
28 navigate: <small class="navigate">{changenav%navshort}</small>
29 navigate: <small class="navigate">{changenav%navshort}</small>
29 </p>
30 </p>
30 </form>
31 </form>
31
32
32 {entries%shortlogentry}
33 {entries%shortlogentry}
33
34
34 <form action="{url}log">
35 <form action="{url}log">
35 {sessionvars%hiddenformentry}
36 {sessionvars%hiddenformentry}
36 <p>
37 <p>
37 <label for="search2">search:</label>
38 <label for="search2">search:</label>
38 <input name="rev" id="search2" type="text" size="30">
39 <input name="rev" id="search2" type="text" size="30">
39 navigate: <small class="navigate">{changenav%navshort}</small>
40 navigate: <small class="navigate">{changenav%navshort}</small>
40 </p>
41 </p>
41 </form>
42 </form>
42
43
43 {footer}
44 {footer}
@@ -1,26 +1,27 b''
1 {header}
1 {header}
2 <title>{repo|escape}: tags</title>
2 <title>{repo|escape}: tags</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
4 href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
6 href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="buttons">
10 <div class="buttons">
11 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
11 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
12 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
12 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
13 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
13 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
14 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
14 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
15 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
15 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
16 <a href="{url}help{sessionvars%urlparameter}">help</a>
16 <a type="application/rss+xml" href="{url}rss-tags">rss</a>
17 <a type="application/rss+xml" href="{url}rss-tags">rss</a>
17 <a type="application/atom+xml" href="{url}atom-tags">atom</a>
18 <a type="application/atom+xml" href="{url}atom-tags">atom</a>
18 </div>
19 </div>
19
20
20 <h2>tags:</h2>
21 <h2>tags:</h2>
21
22
22 <ul id="tagEntries">
23 <ul id="tagEntries">
23 {entries%tagentry}
24 {entries%tagentry}
24 </ul>
25 </ul>
25
26
26 {footer}
27 {footer}
@@ -1,1077 +1,1079 b''
1 An attempt at more fully testing the hgweb web interface.
1 An attempt at more fully testing the hgweb web interface.
2 The following things are tested elsewhere and are therefore omitted:
2 The following things are tested elsewhere and are therefore omitted:
3 - archive, tested in test-archive
3 - archive, tested in test-archive
4 - unbundle, tested in test-push-http
4 - unbundle, tested in test-push-http
5 - changegroupsubset, tested in test-pull
5 - changegroupsubset, tested in test-pull
6
6
7 Set up the repo
7 Set up the repo
8
8
9 $ hg init test
9 $ hg init test
10 $ cd test
10 $ cd test
11 $ mkdir da
11 $ mkdir da
12 $ echo foo > da/foo
12 $ echo foo > da/foo
13 $ echo foo > foo
13 $ echo foo > foo
14 $ hg ci -Ambase
14 $ hg ci -Ambase
15 adding da/foo
15 adding da/foo
16 adding foo
16 adding foo
17 $ hg tag 1.0
17 $ hg tag 1.0
18 $ echo another > foo
18 $ echo another > foo
19 $ hg branch stable
19 $ hg branch stable
20 marked working directory as branch stable
20 marked working directory as branch stable
21 $ hg ci -Ambranch
21 $ hg ci -Ambranch
22 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
22 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
23 $ cat hg.pid >> $DAEMON_PIDS
23 $ cat hg.pid >> $DAEMON_PIDS
24
24
25 Logs and changes
25 Logs and changes
26
26
27 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
27 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
28 200 Script output follows
28 200 Script output follows
29
29
30 <?xml version="1.0" encoding="ascii"?>
30 <?xml version="1.0" encoding="ascii"?>
31 <feed xmlns="http://www.w3.org/2005/Atom">
31 <feed xmlns="http://www.w3.org/2005/Atom">
32 <!-- Changelog -->
32 <!-- Changelog -->
33 <id>http://*:$HGPORT/</id> (glob)
33 <id>http://*:$HGPORT/</id> (glob)
34 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
34 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
35 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
35 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
36 <title>test Changelog</title>
36 <title>test Changelog</title>
37 <updated>1970-01-01T00:00:00+00:00</updated>
37 <updated>1970-01-01T00:00:00+00:00</updated>
38
38
39 <entry>
39 <entry>
40 <title>branch</title>
40 <title>branch</title>
41 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
41 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
42 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
42 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
43 <author>
43 <author>
44 <name>test</name>
44 <name>test</name>
45 <email>&#116;&#101;&#115;&#116;</email>
45 <email>&#116;&#101;&#115;&#116;</email>
46 </author>
46 </author>
47 <updated>1970-01-01T00:00:00+00:00</updated>
47 <updated>1970-01-01T00:00:00+00:00</updated>
48 <published>1970-01-01T00:00:00+00:00</published>
48 <published>1970-01-01T00:00:00+00:00</published>
49 <content type="xhtml">
49 <content type="xhtml">
50 <div xmlns="http://www.w3.org/1999/xhtml">
50 <div xmlns="http://www.w3.org/1999/xhtml">
51 <pre xml:space="preserve">branch</pre>
51 <pre xml:space="preserve">branch</pre>
52 </div>
52 </div>
53 </content>
53 </content>
54 </entry>
54 </entry>
55 <entry>
55 <entry>
56 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
56 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
57 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
57 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
58 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
58 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
59 <author>
59 <author>
60 <name>test</name>
60 <name>test</name>
61 <email>&#116;&#101;&#115;&#116;</email>
61 <email>&#116;&#101;&#115;&#116;</email>
62 </author>
62 </author>
63 <updated>1970-01-01T00:00:00+00:00</updated>
63 <updated>1970-01-01T00:00:00+00:00</updated>
64 <published>1970-01-01T00:00:00+00:00</published>
64 <published>1970-01-01T00:00:00+00:00</published>
65 <content type="xhtml">
65 <content type="xhtml">
66 <div xmlns="http://www.w3.org/1999/xhtml">
66 <div xmlns="http://www.w3.org/1999/xhtml">
67 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
67 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
68 </div>
68 </div>
69 </content>
69 </content>
70 </entry>
70 </entry>
71 <entry>
71 <entry>
72 <title>base</title>
72 <title>base</title>
73 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
73 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
74 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
74 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
75 <author>
75 <author>
76 <name>test</name>
76 <name>test</name>
77 <email>&#116;&#101;&#115;&#116;</email>
77 <email>&#116;&#101;&#115;&#116;</email>
78 </author>
78 </author>
79 <updated>1970-01-01T00:00:00+00:00</updated>
79 <updated>1970-01-01T00:00:00+00:00</updated>
80 <published>1970-01-01T00:00:00+00:00</published>
80 <published>1970-01-01T00:00:00+00:00</published>
81 <content type="xhtml">
81 <content type="xhtml">
82 <div xmlns="http://www.w3.org/1999/xhtml">
82 <div xmlns="http://www.w3.org/1999/xhtml">
83 <pre xml:space="preserve">base</pre>
83 <pre xml:space="preserve">base</pre>
84 </div>
84 </div>
85 </content>
85 </content>
86 </entry>
86 </entry>
87
87
88 </feed>
88 </feed>
89 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
89 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
90 200 Script output follows
90 200 Script output follows
91
91
92 <?xml version="1.0" encoding="ascii"?>
92 <?xml version="1.0" encoding="ascii"?>
93 <feed xmlns="http://www.w3.org/2005/Atom">
93 <feed xmlns="http://www.w3.org/2005/Atom">
94 <!-- Changelog -->
94 <!-- Changelog -->
95 <id>http://*:$HGPORT/</id> (glob)
95 <id>http://*:$HGPORT/</id> (glob)
96 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
96 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
97 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
97 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
98 <title>test Changelog</title>
98 <title>test Changelog</title>
99 <updated>1970-01-01T00:00:00+00:00</updated>
99 <updated>1970-01-01T00:00:00+00:00</updated>
100
100
101 <entry>
101 <entry>
102 <title>branch</title>
102 <title>branch</title>
103 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
103 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
104 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
104 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
105 <author>
105 <author>
106 <name>test</name>
106 <name>test</name>
107 <email>&#116;&#101;&#115;&#116;</email>
107 <email>&#116;&#101;&#115;&#116;</email>
108 </author>
108 </author>
109 <updated>1970-01-01T00:00:00+00:00</updated>
109 <updated>1970-01-01T00:00:00+00:00</updated>
110 <published>1970-01-01T00:00:00+00:00</published>
110 <published>1970-01-01T00:00:00+00:00</published>
111 <content type="xhtml">
111 <content type="xhtml">
112 <div xmlns="http://www.w3.org/1999/xhtml">
112 <div xmlns="http://www.w3.org/1999/xhtml">
113 <pre xml:space="preserve">branch</pre>
113 <pre xml:space="preserve">branch</pre>
114 </div>
114 </div>
115 </content>
115 </content>
116 </entry>
116 </entry>
117 <entry>
117 <entry>
118 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
118 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
119 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
119 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
120 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
120 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
121 <author>
121 <author>
122 <name>test</name>
122 <name>test</name>
123 <email>&#116;&#101;&#115;&#116;</email>
123 <email>&#116;&#101;&#115;&#116;</email>
124 </author>
124 </author>
125 <updated>1970-01-01T00:00:00+00:00</updated>
125 <updated>1970-01-01T00:00:00+00:00</updated>
126 <published>1970-01-01T00:00:00+00:00</published>
126 <published>1970-01-01T00:00:00+00:00</published>
127 <content type="xhtml">
127 <content type="xhtml">
128 <div xmlns="http://www.w3.org/1999/xhtml">
128 <div xmlns="http://www.w3.org/1999/xhtml">
129 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
129 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
130 </div>
130 </div>
131 </content>
131 </content>
132 </entry>
132 </entry>
133 <entry>
133 <entry>
134 <title>base</title>
134 <title>base</title>
135 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
135 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
136 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
136 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
137 <author>
137 <author>
138 <name>test</name>
138 <name>test</name>
139 <email>&#116;&#101;&#115;&#116;</email>
139 <email>&#116;&#101;&#115;&#116;</email>
140 </author>
140 </author>
141 <updated>1970-01-01T00:00:00+00:00</updated>
141 <updated>1970-01-01T00:00:00+00:00</updated>
142 <published>1970-01-01T00:00:00+00:00</published>
142 <published>1970-01-01T00:00:00+00:00</published>
143 <content type="xhtml">
143 <content type="xhtml">
144 <div xmlns="http://www.w3.org/1999/xhtml">
144 <div xmlns="http://www.w3.org/1999/xhtml">
145 <pre xml:space="preserve">base</pre>
145 <pre xml:space="preserve">base</pre>
146 </div>
146 </div>
147 </content>
147 </content>
148 </entry>
148 </entry>
149
149
150 </feed>
150 </feed>
151 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
151 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
152 200 Script output follows
152 200 Script output follows
153
153
154 <?xml version="1.0" encoding="ascii"?>
154 <?xml version="1.0" encoding="ascii"?>
155 <feed xmlns="http://www.w3.org/2005/Atom">
155 <feed xmlns="http://www.w3.org/2005/Atom">
156 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
156 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
157 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
157 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
158 <title>test: foo history</title>
158 <title>test: foo history</title>
159 <updated>1970-01-01T00:00:00+00:00</updated>
159 <updated>1970-01-01T00:00:00+00:00</updated>
160
160
161 <entry>
161 <entry>
162 <title>base</title>
162 <title>base</title>
163 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
163 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
164 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
164 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
165 <author>
165 <author>
166 <name>test</name>
166 <name>test</name>
167 <email>&#116;&#101;&#115;&#116;</email>
167 <email>&#116;&#101;&#115;&#116;</email>
168 </author>
168 </author>
169 <updated>1970-01-01T00:00:00+00:00</updated>
169 <updated>1970-01-01T00:00:00+00:00</updated>
170 <published>1970-01-01T00:00:00+00:00</published>
170 <published>1970-01-01T00:00:00+00:00</published>
171 <content type="xhtml">
171 <content type="xhtml">
172 <div xmlns="http://www.w3.org/1999/xhtml">
172 <div xmlns="http://www.w3.org/1999/xhtml">
173 <pre xml:space="preserve">base</pre>
173 <pre xml:space="preserve">base</pre>
174 </div>
174 </div>
175 </content>
175 </content>
176 </entry>
176 </entry>
177
177
178 </feed>
178 </feed>
179 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
179 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
180 200 Script output follows
180 200 Script output follows
181
181
182 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
182 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
183 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
183 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
184 <head>
184 <head>
185 <link rel="icon" href="/static/hgicon.png" type="image/png" />
185 <link rel="icon" href="/static/hgicon.png" type="image/png" />
186 <meta name="robots" content="index, nofollow" />
186 <meta name="robots" content="index, nofollow" />
187 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
187 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
188
188
189 <title>test: log</title>
189 <title>test: log</title>
190 <link rel="alternate" type="application/atom+xml"
190 <link rel="alternate" type="application/atom+xml"
191 href="/atom-log" title="Atom feed for test" />
191 href="/atom-log" title="Atom feed for test" />
192 <link rel="alternate" type="application/rss+xml"
192 <link rel="alternate" type="application/rss+xml"
193 href="/rss-log" title="RSS feed for test" />
193 href="/rss-log" title="RSS feed for test" />
194 </head>
194 </head>
195 <body>
195 <body>
196
196
197 <div class="container">
197 <div class="container">
198 <div class="menu">
198 <div class="menu">
199 <div class="logo">
199 <div class="logo">
200 <a href="http://mercurial.selenic.com/">
200 <a href="http://mercurial.selenic.com/">
201 <img src="/static/hglogo.png" alt="mercurial" /></a>
201 <img src="/static/hglogo.png" alt="mercurial" /></a>
202 </div>
202 </div>
203 <ul>
203 <ul>
204 <li class="active">log</li>
204 <li class="active">log</li>
205 <li><a href="/graph/1d22e65f027e">graph</a></li>
205 <li><a href="/graph/1d22e65f027e">graph</a></li>
206 <li><a href="/tags">tags</a></li>
206 <li><a href="/tags">tags</a></li>
207 <li><a href="/branches">branches</a></li>
207 <li><a href="/branches">branches</a></li>
208 <li><a href="/help">help</a></li>
209 </ul>
208 </ul>
210 <ul>
209 <ul>
211 <li><a href="/rev/1d22e65f027e">changeset</a></li>
210 <li><a href="/rev/1d22e65f027e">changeset</a></li>
212 <li><a href="/file/1d22e65f027e">browse</a></li>
211 <li><a href="/file/1d22e65f027e">browse</a></li>
213 </ul>
212 </ul>
214 <ul>
213 <ul>
215
214
216 </ul>
215 </ul>
217 <ul>
216 <ul>
218 <li><a href="/help">help</a></li>
217 <li><a href="/help">help</a></li>
219 </ul>
218 </ul>
220 </div>
219 </div>
221
220
222 <div class="main">
221 <div class="main">
223 <h2><a href="/">test</a></h2>
222 <h2><a href="/">test</a></h2>
224 <h3>log</h3>
223 <h3>log</h3>
225
224
226 <form class="search" action="/log">
225 <form class="search" action="/log">
227
226
228 <p><input name="rev" id="search1" type="text" size="30" /></p>
227 <p><input name="rev" id="search1" type="text" size="30" /></p>
229 <div id="hint">find changesets by author, revision,
228 <div id="hint">find changesets by author, revision,
230 files, or words in the commit message</div>
229 files, or words in the commit message</div>
231 </form>
230 </form>
232
231
233 <div class="navigate">
232 <div class="navigate">
234 <a href="/shortlog/2?revcount=30">less</a>
233 <a href="/shortlog/2?revcount=30">less</a>
235 <a href="/shortlog/2?revcount=120">more</a>
234 <a href="/shortlog/2?revcount=120">more</a>
236 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
235 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
237 </div>
236 </div>
238
237
239 <table class="bigtable">
238 <table class="bigtable">
240 <tr>
239 <tr>
241 <th class="age">age</th>
240 <th class="age">age</th>
242 <th class="author">author</th>
241 <th class="author">author</th>
243 <th class="description">description</th>
242 <th class="description">description</th>
244 </tr>
243 </tr>
245 <tr class="parity0">
244 <tr class="parity0">
246 <td class="age">1970-01-01</td>
245 <td class="age">1970-01-01</td>
247 <td class="author">test</td>
246 <td class="author">test</td>
248 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> </td>
247 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> </td>
249 </tr>
248 </tr>
250 <tr class="parity1">
249 <tr class="parity1">
251 <td class="age">1970-01-01</td>
250 <td class="age">1970-01-01</td>
252 <td class="author">test</td>
251 <td class="author">test</td>
253 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
252 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
254 </tr>
253 </tr>
255 <tr class="parity0">
254 <tr class="parity0">
256 <td class="age">1970-01-01</td>
255 <td class="age">1970-01-01</td>
257 <td class="author">test</td>
256 <td class="author">test</td>
258 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
257 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
259 </tr>
258 </tr>
260
259
261 </table>
260 </table>
262
261
263 <div class="navigate">
262 <div class="navigate">
264 <a href="/shortlog/2?revcount=30">less</a>
263 <a href="/shortlog/2?revcount=30">less</a>
265 <a href="/shortlog/2?revcount=120">more</a>
264 <a href="/shortlog/2?revcount=120">more</a>
266 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
265 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
267 </div>
266 </div>
268
267
269 </div>
268 </div>
270 </div>
269 </div>
271
270
272
271
273
272
274 </body>
273 </body>
275 </html>
274 </html>
276
275
277 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
276 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
278 200 Script output follows
277 200 Script output follows
279
278
280 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
279 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
281 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
280 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
282 <head>
281 <head>
283 <link rel="icon" href="/static/hgicon.png" type="image/png" />
282 <link rel="icon" href="/static/hgicon.png" type="image/png" />
284 <meta name="robots" content="index, nofollow" />
283 <meta name="robots" content="index, nofollow" />
285 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
284 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
286
285
287 <title>test: 2ef0ac749a14</title>
286 <title>test: 2ef0ac749a14</title>
288 </head>
287 </head>
289 <body>
288 <body>
290 <div class="container">
289 <div class="container">
291 <div class="menu">
290 <div class="menu">
292 <div class="logo">
291 <div class="logo">
293 <a href="http://mercurial.selenic.com/">
292 <a href="http://mercurial.selenic.com/">
294 <img src="/static/hglogo.png" alt="mercurial" /></a>
293 <img src="/static/hglogo.png" alt="mercurial" /></a>
295 </div>
294 </div>
296 <ul>
295 <ul>
297 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
296 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
298 <li><a href="/graph/2ef0ac749a14">graph</a></li>
297 <li><a href="/graph/2ef0ac749a14">graph</a></li>
299 <li><a href="/tags">tags</a></li>
298 <li><a href="/tags">tags</a></li>
300 <li><a href="/branches">branches</a></li>
299 <li><a href="/branches">branches</a></li>
301 <li><a href="/help">help</a></li>
302 </ul>
300 </ul>
303 <ul>
301 <ul>
304 <li class="active">changeset</li>
302 <li class="active">changeset</li>
305 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
303 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
306 <li><a href="/file/2ef0ac749a14">browse</a></li>
304 <li><a href="/file/2ef0ac749a14">browse</a></li>
307 </ul>
305 </ul>
308 <ul>
306 <ul>
309
307
310 </ul>
308 </ul>
311 <ul>
309 <ul>
312 <li><a href="/help">help</a></li>
310 <li><a href="/help">help</a></li>
313 </ul>
311 </ul>
314 </div>
312 </div>
315
313
316 <div class="main">
314 <div class="main">
317
315
318 <h2><a href="/">test</a></h2>
316 <h2><a href="/">test</a></h2>
319 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> </h3>
317 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> </h3>
320
318
321 <form class="search" action="/log">
319 <form class="search" action="/log">
322
320
323 <p><input name="rev" id="search1" type="text" size="30" /></p>
321 <p><input name="rev" id="search1" type="text" size="30" /></p>
324 <div id="hint">find changesets by author, revision,
322 <div id="hint">find changesets by author, revision,
325 files, or words in the commit message</div>
323 files, or words in the commit message</div>
326 </form>
324 </form>
327
325
328 <div class="description">base</div>
326 <div class="description">base</div>
329
327
330 <table id="changesetEntry">
328 <table id="changesetEntry">
331 <tr>
329 <tr>
332 <th class="author">author</th>
330 <th class="author">author</th>
333 <td class="author">&#116;&#101;&#115;&#116;</td>
331 <td class="author">&#116;&#101;&#115;&#116;</td>
334 </tr>
332 </tr>
335 <tr>
333 <tr>
336 <th class="date">date</th>
334 <th class="date">date</th>
337 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
335 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
338 <tr>
336 <tr>
339 <th class="author">parents</th>
337 <th class="author">parents</th>
340 <td class="author"></td>
338 <td class="author"></td>
341 </tr>
339 </tr>
342 <tr>
340 <tr>
343 <th class="author">children</th>
341 <th class="author">children</th>
344 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
342 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
345 </tr>
343 </tr>
346 <tr>
344 <tr>
347 <th class="files">files</th>
345 <th class="files">files</th>
348 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
346 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
349 </tr>
347 </tr>
350 </table>
348 </table>
351
349
352 <div class="overflow">
350 <div class="overflow">
353 <div class="sourcefirst"> line diff</div>
351 <div class="sourcefirst"> line diff</div>
354
352
355 <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
353 <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
356 </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
354 </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
357 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
355 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
358 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
356 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
359 </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
357 </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
360 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
358 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
361 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
359 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
362 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
360 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
363 </span></pre></div>
361 </span></pre></div>
364 </div>
362 </div>
365
363
366 </div>
364 </div>
367 </div>
365 </div>
368
366
369
367
370 </body>
368 </body>
371 </html>
369 </html>
372
370
373 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
371 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
374 200 Script output follows
372 200 Script output follows
375
373
376
374
377 # HG changeset patch
375 # HG changeset patch
378 # User test
376 # User test
379 # Date 0 0
377 # Date 0 0
380 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
378 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
381 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
379 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
382 Added tag 1.0 for changeset 2ef0ac749a14
380 Added tag 1.0 for changeset 2ef0ac749a14
383
381
384 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
382 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
385 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
383 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
386 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
384 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
387 @@ -0,0 +1,1 @@
385 @@ -0,0 +1,1 @@
388 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
386 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
389
387
390 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
388 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
391 200 Script output follows
389 200 Script output follows
392
390
393 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
391 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
394 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
392 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
395 <head>
393 <head>
396 <link rel="icon" href="/static/hgicon.png" type="image/png" />
394 <link rel="icon" href="/static/hgicon.png" type="image/png" />
397 <meta name="robots" content="index, nofollow" />
395 <meta name="robots" content="index, nofollow" />
398 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
396 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
399
397
400 <title>test: searching for base</title>
398 <title>test: searching for base</title>
401 </head>
399 </head>
402 <body>
400 <body>
403
401
404 <div class="container">
402 <div class="container">
405 <div class="menu">
403 <div class="menu">
406 <div class="logo">
404 <div class="logo">
407 <a href="http://mercurial.selenic.com/">
405 <a href="http://mercurial.selenic.com/">
408 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
406 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
409 </div>
407 </div>
410 <ul>
408 <ul>
411 <li><a href="/shortlog">log</a></li>
409 <li><a href="/shortlog">log</a></li>
412 <li><a href="/graph">graph</a></li>
410 <li><a href="/graph">graph</a></li>
413 <li><a href="/tags">tags</a></li>
411 <li><a href="/tags">tags</a></li>
414 <li><a href="/branches">branches</a></li>
412 <li><a href="/branches">branches</a></li>
413 <li><a href="/help">help</a></li>
415 </ul>
414 </ul>
416 </div>
415 </div>
417
416
418 <div class="main">
417 <div class="main">
419 <h2><a href="/">test</a></h2>
418 <h2><a href="/">test</a></h2>
420 <h3>searching for 'base'</h3>
419 <h3>searching for 'base'</h3>
421
420
422 <form class="search" action="/log">
421 <form class="search" action="/log">
423
422
424 <p><input name="rev" id="search1" type="text" size="30"></p>
423 <p><input name="rev" id="search1" type="text" size="30"></p>
425 <div id="hint">find changesets by author, revision,
424 <div id="hint">find changesets by author, revision,
426 files, or words in the commit message</div>
425 files, or words in the commit message</div>
427 </form>
426 </form>
428
427
429 <div class="navigate">
428 <div class="navigate">
430 <a href="/search/?rev=base&revcount=5">less</a>
429 <a href="/search/?rev=base&revcount=5">less</a>
431 <a href="/search/?rev=base&revcount=20">more</a>
430 <a href="/search/?rev=base&revcount=20">more</a>
432 </div>
431 </div>
433
432
434 <table class="bigtable">
433 <table class="bigtable">
435 <tr>
434 <tr>
436 <th class="age">age</th>
435 <th class="age">age</th>
437 <th class="author">author</th>
436 <th class="author">author</th>
438 <th class="description">description</th>
437 <th class="description">description</th>
439 </tr>
438 </tr>
440 <tr class="parity0">
439 <tr class="parity0">
441 <td class="age">1970-01-01</td>
440 <td class="age">1970-01-01</td>
442 <td class="author">test</td>
441 <td class="author">test</td>
443 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
442 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
444 </tr>
443 </tr>
445
444
446 </table>
445 </table>
447
446
448 <div class="navigate">
447 <div class="navigate">
449 <a href="/search/?rev=base&revcount=5">less</a>
448 <a href="/search/?rev=base&revcount=5">less</a>
450 <a href="/search/?rev=base&revcount=20">more</a>
449 <a href="/search/?rev=base&revcount=20">more</a>
451 </div>
450 </div>
452
451
453 </div>
452 </div>
454 </div>
453 </div>
455
454
456
455
457
456
458 </body>
457 </body>
459 </html>
458 </html>
460
459
461
460
462 File-related
461 File-related
463
462
464 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
463 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
465 200 Script output follows
464 200 Script output follows
466
465
467 foo
466 foo
468 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
467 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
469 200 Script output follows
468 200 Script output follows
470
469
471
470
472 test@0: foo
471 test@0: foo
473
472
474
473
475
474
476
475
477 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
476 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
478 200 Script output follows
477 200 Script output follows
479
478
480
479
481 drwxr-xr-x da
480 drwxr-xr-x da
482 -rw-r--r-- 45 .hgtags
481 -rw-r--r-- 45 .hgtags
483 -rw-r--r-- 4 foo
482 -rw-r--r-- 4 foo
484
483
485
484
486 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
485 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
487 200 Script output follows
486 200 Script output follows
488
487
489 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
488 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
490 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
489 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
491 <head>
490 <head>
492 <link rel="icon" href="/static/hgicon.png" type="image/png" />
491 <link rel="icon" href="/static/hgicon.png" type="image/png" />
493 <meta name="robots" content="index, nofollow" />
492 <meta name="robots" content="index, nofollow" />
494 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
493 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
495
494
496 <title>test: a4f92ed23982 foo</title>
495 <title>test: a4f92ed23982 foo</title>
497 </head>
496 </head>
498 <body>
497 <body>
499
498
500 <div class="container">
499 <div class="container">
501 <div class="menu">
500 <div class="menu">
502 <div class="logo">
501 <div class="logo">
503 <a href="http://mercurial.selenic.com/">
502 <a href="http://mercurial.selenic.com/">
504 <img src="/static/hglogo.png" alt="mercurial" /></a>
503 <img src="/static/hglogo.png" alt="mercurial" /></a>
505 </div>
504 </div>
506 <ul>
505 <ul>
507 <li><a href="/shortlog/a4f92ed23982">log</a></li>
506 <li><a href="/shortlog/a4f92ed23982">log</a></li>
508 <li><a href="/graph/a4f92ed23982">graph</a></li>
507 <li><a href="/graph/a4f92ed23982">graph</a></li>
509 <li><a href="/tags">tags</a></li>
508 <li><a href="/tags">tags</a></li>
510 <li><a href="/branches">branches</a></li>
509 <li><a href="/branches">branches</a></li>
511 </ul>
510 </ul>
512 <ul>
511 <ul>
513 <li><a href="/rev/a4f92ed23982">changeset</a></li>
512 <li><a href="/rev/a4f92ed23982">changeset</a></li>
514 <li><a href="/file/a4f92ed23982/">browse</a></li>
513 <li><a href="/file/a4f92ed23982/">browse</a></li>
515 </ul>
514 </ul>
516 <ul>
515 <ul>
517 <li class="active">file</li>
516 <li class="active">file</li>
518 <li><a href="/file/tip/foo">latest</a></li>
517 <li><a href="/file/tip/foo">latest</a></li>
519 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
518 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
520 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
519 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
521 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
520 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
522 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
521 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
523 </ul>
522 </ul>
523 <ul>
524 <li><a href="/help">help</a></li>
525 </ul>
524 </div>
526 </div>
525
527
526 <div class="main">
528 <div class="main">
527 <h2><a href="/">test</a></h2>
529 <h2><a href="/">test</a></h2>
528 <h3>view foo @ 1:a4f92ed23982</h3>
530 <h3>view foo @ 1:a4f92ed23982</h3>
529
531
530 <form class="search" action="/log">
532 <form class="search" action="/log">
531
533
532 <p><input name="rev" id="search1" type="text" size="30" /></p>
534 <p><input name="rev" id="search1" type="text" size="30" /></p>
533 <div id="hint">find changesets by author, revision,
535 <div id="hint">find changesets by author, revision,
534 files, or words in the commit message</div>
536 files, or words in the commit message</div>
535 </form>
537 </form>
536
538
537 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
539 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
538
540
539 <table id="changesetEntry">
541 <table id="changesetEntry">
540 <tr>
542 <tr>
541 <th class="author">author</th>
543 <th class="author">author</th>
542 <td class="author">&#116;&#101;&#115;&#116;</td>
544 <td class="author">&#116;&#101;&#115;&#116;</td>
543 </tr>
545 </tr>
544 <tr>
546 <tr>
545 <th class="date">date</th>
547 <th class="date">date</th>
546 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
548 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
547 </tr>
549 </tr>
548 <tr>
550 <tr>
549 <th class="author">parents</th>
551 <th class="author">parents</th>
550 <td class="author"></td>
552 <td class="author"></td>
551 </tr>
553 </tr>
552 <tr>
554 <tr>
553 <th class="author">children</th>
555 <th class="author">children</th>
554 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
556 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
555 </tr>
557 </tr>
556
558
557 </table>
559 </table>
558
560
559 <div class="overflow">
561 <div class="overflow">
560 <div class="sourcefirst"> line source</div>
562 <div class="sourcefirst"> line source</div>
561
563
562 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
564 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
563 </div>
565 </div>
564 <div class="sourcelast"></div>
566 <div class="sourcelast"></div>
565 </div>
567 </div>
566 </div>
568 </div>
567 </div>
569 </div>
568
570
569
571
570
572
571 </body>
573 </body>
572 </html>
574 </html>
573
575
574 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
576 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
575 200 Script output follows
577 200 Script output follows
576
578
577
579
578 diff -r 000000000000 -r a4f92ed23982 foo
580 diff -r 000000000000 -r a4f92ed23982 foo
579 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
581 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
580 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
582 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
581 @@ -0,0 +1,1 @@
583 @@ -0,0 +1,1 @@
582 +foo
584 +foo
583
585
584
586
585
587
586
588
587
589
588 Overviews
590 Overviews
589
591
590 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
592 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
591 200 Script output follows
593 200 Script output follows
592
594
593 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
595 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
594 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
596 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
595 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
597 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
596 200 Script output follows
598 200 Script output follows
597
599
598 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
600 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
599 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
601 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
600 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
602 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
601 200 Script output follows
603 200 Script output follows
602
604
603 <?xml version="1.0" encoding="ascii"?>
605 <?xml version="1.0" encoding="ascii"?>
604 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
606 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
605 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
607 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
606 <head>
608 <head>
607 <link rel="icon" href="/static/hgicon.png" type="image/png" />
609 <link rel="icon" href="/static/hgicon.png" type="image/png" />
608 <meta name="robots" content="index, nofollow"/>
610 <meta name="robots" content="index, nofollow"/>
609 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
611 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
610
612
611
613
612 <title>test: Summary</title>
614 <title>test: Summary</title>
613 <link rel="alternate" type="application/atom+xml"
615 <link rel="alternate" type="application/atom+xml"
614 href="/atom-log" title="Atom feed for test"/>
616 href="/atom-log" title="Atom feed for test"/>
615 <link rel="alternate" type="application/rss+xml"
617 <link rel="alternate" type="application/rss+xml"
616 href="/rss-log" title="RSS feed for test"/>
618 href="/rss-log" title="RSS feed for test"/>
617 </head>
619 </head>
618 <body>
620 <body>
619
621
620 <div class="page_header">
622 <div class="page_header">
621 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
623 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
622
624
623 <form action="/log">
625 <form action="/log">
624 <input type="hidden" name="style" value="gitweb" />
626 <input type="hidden" name="style" value="gitweb" />
625 <div class="search">
627 <div class="search">
626 <input type="text" name="rev" />
628 <input type="text" name="rev" />
627 </div>
629 </div>
628 </form>
630 </form>
629 </div>
631 </div>
630
632
631 <div class="page_nav">
633 <div class="page_nav">
632 summary |
634 summary |
633 <a href="/shortlog?style=gitweb">shortlog</a> |
635 <a href="/shortlog?style=gitweb">shortlog</a> |
634 <a href="/log?style=gitweb">changelog</a> |
636 <a href="/log?style=gitweb">changelog</a> |
635 <a href="/graph?style=gitweb">graph</a> |
637 <a href="/graph?style=gitweb">graph</a> |
636 <a href="/tags?style=gitweb">tags</a> |
638 <a href="/tags?style=gitweb">tags</a> |
637 <a href="/branches?style=gitweb">branches</a> |
639 <a href="/branches?style=gitweb">branches</a> |
638 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
640 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
639 <a href="/help?style=gitweb">help</a>
641 <a href="/help?style=gitweb">help</a>
640 <br/>
642 <br/>
641 </div>
643 </div>
642
644
643 <div class="title">&nbsp;</div>
645 <div class="title">&nbsp;</div>
644 <table cellspacing="0">
646 <table cellspacing="0">
645 <tr><td>description</td><td>unknown</td></tr>
647 <tr><td>description</td><td>unknown</td></tr>
646 <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>
648 <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>
647 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
649 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
648 </table>
650 </table>
649
651
650 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
652 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
651 <table cellspacing="0">
653 <table cellspacing="0">
652
654
653 <tr class="parity0">
655 <tr class="parity0">
654 <td class="age"><i>1970-01-01</i></td>
656 <td class="age"><i>1970-01-01</i></td>
655 <td><i>test</i></td>
657 <td><i>test</i></td>
656 <td>
658 <td>
657 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
659 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
658 <b>branch</b>
660 <b>branch</b>
659 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> </span>
661 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> </span>
660 </a>
662 </a>
661 </td>
663 </td>
662 <td class="link" nowrap>
664 <td class="link" nowrap>
663 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
665 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
664 <a href="/file/1d22e65f027e?style=gitweb">files</a>
666 <a href="/file/1d22e65f027e?style=gitweb">files</a>
665 </td>
667 </td>
666 </tr>
668 </tr>
667 <tr class="parity1">
669 <tr class="parity1">
668 <td class="age"><i>1970-01-01</i></td>
670 <td class="age"><i>1970-01-01</i></td>
669 <td><i>test</i></td>
671 <td><i>test</i></td>
670 <td>
672 <td>
671 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
673 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
672 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
674 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
673 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
675 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
674 </a>
676 </a>
675 </td>
677 </td>
676 <td class="link" nowrap>
678 <td class="link" nowrap>
677 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
679 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
678 <a href="/file/a4f92ed23982?style=gitweb">files</a>
680 <a href="/file/a4f92ed23982?style=gitweb">files</a>
679 </td>
681 </td>
680 </tr>
682 </tr>
681 <tr class="parity0">
683 <tr class="parity0">
682 <td class="age"><i>1970-01-01</i></td>
684 <td class="age"><i>1970-01-01</i></td>
683 <td><i>test</i></td>
685 <td><i>test</i></td>
684 <td>
686 <td>
685 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
687 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
686 <b>base</b>
688 <b>base</b>
687 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> </span>
689 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> </span>
688 </a>
690 </a>
689 </td>
691 </td>
690 <td class="link" nowrap>
692 <td class="link" nowrap>
691 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
693 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
692 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
694 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
693 </td>
695 </td>
694 </tr>
696 </tr>
695 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
697 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
696 </table>
698 </table>
697
699
698 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
700 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
699 <table cellspacing="0">
701 <table cellspacing="0">
700
702
701 <tr class="parity0">
703 <tr class="parity0">
702 <td class="age"><i>1970-01-01</i></td>
704 <td class="age"><i>1970-01-01</i></td>
703 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
705 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
704 <td class="link">
706 <td class="link">
705 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
707 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
706 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
708 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
707 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
709 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
708 </td>
710 </td>
709 </tr>
711 </tr>
710 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
712 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
711 </table>
713 </table>
712
714
713 <div><a class="title" href="#">branches</a></div>
715 <div><a class="title" href="#">branches</a></div>
714 <table cellspacing="0">
716 <table cellspacing="0">
715
717
716 <tr class="parity0">
718 <tr class="parity0">
717 <td class="age"><i>1970-01-01</i></td>
719 <td class="age"><i>1970-01-01</i></td>
718 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
720 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
719 <td class="">stable</td>
721 <td class="">stable</td>
720 <td class="link">
722 <td class="link">
721 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
723 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
722 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
724 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
723 <a href="/file/1d22e65f027e?style=gitweb">files</a>
725 <a href="/file/1d22e65f027e?style=gitweb">files</a>
724 </td>
726 </td>
725 </tr>
727 </tr>
726 <tr class="parity1">
728 <tr class="parity1">
727 <td class="age"><i>1970-01-01</i></td>
729 <td class="age"><i>1970-01-01</i></td>
728 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
730 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
729 <td class="">default</td>
731 <td class="">default</td>
730 <td class="link">
732 <td class="link">
731 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
733 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
732 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
734 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
733 <a href="/file/a4f92ed23982?style=gitweb">files</a>
735 <a href="/file/a4f92ed23982?style=gitweb">files</a>
734 </td>
736 </td>
735 </tr>
737 </tr>
736 <tr class="light">
738 <tr class="light">
737 <td colspan="4"><a class="list" href="#">...</a></td>
739 <td colspan="4"><a class="list" href="#">...</a></td>
738 </tr>
740 </tr>
739 </table>
741 </table>
740 <div class="page_footer">
742 <div class="page_footer">
741 <div class="page_footer_text">test</div>
743 <div class="page_footer_text">test</div>
742 <div class="rss_logo">
744 <div class="rss_logo">
743 <a href="/rss-log">RSS</a>
745 <a href="/rss-log">RSS</a>
744 <a href="/atom-log">Atom</a>
746 <a href="/atom-log">Atom</a>
745 </div>
747 </div>
746 <br />
748 <br />
747
749
748 </div>
750 </div>
749 </body>
751 </body>
750 </html>
752 </html>
751
753
752 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
754 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
753 200 Script output follows
755 200 Script output follows
754
756
755 <?xml version="1.0" encoding="ascii"?>
757 <?xml version="1.0" encoding="ascii"?>
756 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
758 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
757 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
759 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
758 <head>
760 <head>
759 <link rel="icon" href="/static/hgicon.png" type="image/png" />
761 <link rel="icon" href="/static/hgicon.png" type="image/png" />
760 <meta name="robots" content="index, nofollow"/>
762 <meta name="robots" content="index, nofollow"/>
761 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
763 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
762
764
763
765
764 <title>test: Graph</title>
766 <title>test: Graph</title>
765 <link rel="alternate" type="application/atom+xml"
767 <link rel="alternate" type="application/atom+xml"
766 href="/atom-log" title="Atom feed for test"/>
768 href="/atom-log" title="Atom feed for test"/>
767 <link rel="alternate" type="application/rss+xml"
769 <link rel="alternate" type="application/rss+xml"
768 href="/rss-log" title="RSS feed for test"/>
770 href="/rss-log" title="RSS feed for test"/>
769 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
771 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
770 </head>
772 </head>
771 <body>
773 <body>
772
774
773 <div class="page_header">
775 <div class="page_header">
774 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
776 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
775 </div>
777 </div>
776
778
777 <form action="/log">
779 <form action="/log">
778 <input type="hidden" name="style" value="gitweb" />
780 <input type="hidden" name="style" value="gitweb" />
779 <div class="search">
781 <div class="search">
780 <input type="text" name="rev" />
782 <input type="text" name="rev" />
781 </div>
783 </div>
782 </form>
784 </form>
783 <div class="page_nav">
785 <div class="page_nav">
784 <a href="/summary?style=gitweb">summary</a> |
786 <a href="/summary?style=gitweb">summary</a> |
785 <a href="/shortlog?style=gitweb">shortlog</a> |
787 <a href="/shortlog?style=gitweb">shortlog</a> |
786 <a href="/log/2?style=gitweb">changelog</a> |
788 <a href="/log/2?style=gitweb">changelog</a> |
787 graph |
789 graph |
788 <a href="/tags?style=gitweb">tags</a> |
790 <a href="/tags?style=gitweb">tags</a> |
789 <a href="/branches?style=gitweb">branches</a> |
791 <a href="/branches?style=gitweb">branches</a> |
790 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
792 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
791 <a href="/help?style=gitweb">help</a>
793 <a href="/help?style=gitweb">help</a>
792 <br/>
794 <br/>
793 <a href="/graph/2?style=gitweb&revcount=30">less</a>
795 <a href="/graph/2?style=gitweb&revcount=30">less</a>
794 <a href="/graph/2?style=gitweb&revcount=120">more</a>
796 <a href="/graph/2?style=gitweb&revcount=120">more</a>
795 | <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/>
797 | <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/>
796 </div>
798 </div>
797
799
798 <div class="title">&nbsp;</div>
800 <div class="title">&nbsp;</div>
799
801
800 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
802 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
801
803
802 <div id="wrapper">
804 <div id="wrapper">
803 <ul id="nodebgs"></ul>
805 <ul id="nodebgs"></ul>
804 <canvas id="graph" width="224" height="129"></canvas>
806 <canvas id="graph" width="224" height="129"></canvas>
805 <ul id="graphnodes"></ul>
807 <ul id="graphnodes"></ul>
806 </div>
808 </div>
807
809
808 <script type="text/javascript" src="/static/graph.js"></script>
810 <script type="text/javascript" src="/static/graph.js"></script>
809 <script>
811 <script>
810 <!-- hide script content
812 <!-- hide script content
811
813
812 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"]], ["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"]]];
814 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"]], ["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"]]];
813 var graph = new Graph();
815 var graph = new Graph();
814 graph.scale(39);
816 graph.scale(39);
815
817
816 graph.edge = function(x0, y0, x1, y1, color) {
818 graph.edge = function(x0, y0, x1, y1, color) {
817
819
818 this.setColor(color, 0.0, 0.65);
820 this.setColor(color, 0.0, 0.65);
819 this.ctx.beginPath();
821 this.ctx.beginPath();
820 this.ctx.moveTo(x0, y0);
822 this.ctx.moveTo(x0, y0);
821 this.ctx.lineTo(x1, y1);
823 this.ctx.lineTo(x1, y1);
822 this.ctx.stroke();
824 this.ctx.stroke();
823
825
824 }
826 }
825
827
826 var revlink = '<li style="_STYLE"><span class="desc">';
828 var revlink = '<li style="_STYLE"><span class="desc">';
827 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
829 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
828 revlink += '</span> _TAGS';
830 revlink += '</span> _TAGS';
829 revlink += '<span class="info">_DATE, by _USER</span></li>';
831 revlink += '<span class="info">_DATE, by _USER</span></li>';
830
832
831 graph.vertex = function(x, y, color, parity, cur) {
833 graph.vertex = function(x, y, color, parity, cur) {
832
834
833 this.ctx.beginPath();
835 this.ctx.beginPath();
834 color = this.setColor(color, 0.25, 0.75);
836 color = this.setColor(color, 0.25, 0.75);
835 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
837 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
836 this.ctx.fill();
838 this.ctx.fill();
837
839
838 var bg = '<li class="bg parity' + parity + '"></li>';
840 var bg = '<li class="bg parity' + parity + '"></li>';
839 var left = (this.columns + 1) * this.bg_height;
841 var left = (this.columns + 1) * this.bg_height;
840 var nstyle = 'padding-left: ' + left + 'px;';
842 var nstyle = 'padding-left: ' + left + 'px;';
841 var item = revlink.replace(/_STYLE/, nstyle);
843 var item = revlink.replace(/_STYLE/, nstyle);
842 item = item.replace(/_PARITY/, 'parity' + parity);
844 item = item.replace(/_PARITY/, 'parity' + parity);
843 item = item.replace(/_NODEID/, cur[0]);
845 item = item.replace(/_NODEID/, cur[0]);
844 item = item.replace(/_NODEID/, cur[0]);
846 item = item.replace(/_NODEID/, cur[0]);
845 item = item.replace(/_DESC/, cur[3]);
847 item = item.replace(/_DESC/, cur[3]);
846 item = item.replace(/_USER/, cur[4]);
848 item = item.replace(/_USER/, cur[4]);
847 item = item.replace(/_DATE/, cur[5]);
849 item = item.replace(/_DATE/, cur[5]);
848
850
849 var tagspan = '';
851 var tagspan = '';
850 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
852 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
851 tagspan = '<span class="logtags">';
853 tagspan = '<span class="logtags">';
852 if (cur[6][1]) {
854 if (cur[6][1]) {
853 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
855 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
854 tagspan += cur[6][0] + '</span> ';
856 tagspan += cur[6][0] + '</span> ';
855 } else if (!cur[6][1] && cur[6][0] != 'default') {
857 } else if (!cur[6][1] && cur[6][0] != 'default') {
856 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
858 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
857 tagspan += cur[6][0] + '</span> ';
859 tagspan += cur[6][0] + '</span> ';
858 }
860 }
859 if (cur[7].length) {
861 if (cur[7].length) {
860 for (var t in cur[7]) {
862 for (var t in cur[7]) {
861 var tag = cur[7][t];
863 var tag = cur[7][t];
862 tagspan += '<span class="tagtag">' + tag + '</span> ';
864 tagspan += '<span class="tagtag">' + tag + '</span> ';
863 }
865 }
864 }
866 }
865 tagspan += '</span>';
867 tagspan += '</span>';
866 }
868 }
867
869
868 item = item.replace(/_TAGS/, tagspan);
870 item = item.replace(/_TAGS/, tagspan);
869 return [bg, item];
871 return [bg, item];
870
872
871 }
873 }
872
874
873 graph.render(data);
875 graph.render(data);
874
876
875 // stop hiding script -->
877 // stop hiding script -->
876 </script>
878 </script>
877
879
878 <div class="page_nav">
880 <div class="page_nav">
879 <a href="/graph/2?style=gitweb&revcount=30">less</a>
881 <a href="/graph/2?style=gitweb&revcount=30">less</a>
880 <a href="/graph/2?style=gitweb&revcount=120">more</a>
882 <a href="/graph/2?style=gitweb&revcount=120">more</a>
881 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
883 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
882 </div>
884 </div>
883
885
884 <div class="page_footer">
886 <div class="page_footer">
885 <div class="page_footer_text">test</div>
887 <div class="page_footer_text">test</div>
886 <div class="rss_logo">
888 <div class="rss_logo">
887 <a href="/rss-log">RSS</a>
889 <a href="/rss-log">RSS</a>
888 <a href="/atom-log">Atom</a>
890 <a href="/atom-log">Atom</a>
889 </div>
891 </div>
890 <br />
892 <br />
891
893
892 </div>
894 </div>
893 </body>
895 </body>
894 </html>
896 </html>
895
897
896
898
897 capabilities
899 capabilities
898
900
899 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
901 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
900 200 Script output follows
902 200 Script output follows
901
903
902 lookup changegroupsubset branchmap pushkey unbundle=HG10GZ,HG10BZ,HG10UN
904 lookup changegroupsubset branchmap pushkey unbundle=HG10GZ,HG10BZ,HG10UN
903
905
904 heads
906 heads
905
907
906 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
908 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
907 200 Script output follows
909 200 Script output follows
908
910
909 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
911 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
910
912
911 branches
913 branches
912
914
913 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
915 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
914 200 Script output follows
916 200 Script output follows
915
917
916 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
918 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
917
919
918 changegroup
920 changegroup
919
921
920 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000' \
922 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000' \
921 > | $TESTDIR/printrepr.py
923 > | $TESTDIR/printrepr.py
922 200 Script output follows
924 200 Script output follows
923
925
924 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
926 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
925 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~\
927 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~\
926 \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\t\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
928 \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\t\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
927 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3\'\x859
929 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3\'\x859
928 \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\t_\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
930 \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\t_\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
929
931
930 stream_out
932 stream_out
931
933
932 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
934 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
933 200 Script output follows
935 200 Script output follows
934
936
935 1
937 1
936
938
937 failing unbundle, requires POST request
939 failing unbundle, requires POST request
938
940
939 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
941 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
940 405 push requires POST request
942 405 push requires POST request
941
943
942 0
944 0
943 push requires POST request
945 push requires POST request
944 [1]
946 [1]
945
947
946 Static files
948 Static files
947
949
948 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
950 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
949 200 Script output follows
951 200 Script output follows
950
952
951 a { text-decoration:none; }
953 a { text-decoration:none; }
952 .age { white-space:nowrap; }
954 .age { white-space:nowrap; }
953 .date { white-space:nowrap; }
955 .date { white-space:nowrap; }
954 .indexlinks { white-space:nowrap; }
956 .indexlinks { white-space:nowrap; }
955 .parity0 { background-color: #ddd; }
957 .parity0 { background-color: #ddd; }
956 .parity1 { background-color: #eee; }
958 .parity1 { background-color: #eee; }
957 .lineno { width: 60px; color: #aaa; font-size: smaller;
959 .lineno { width: 60px; color: #aaa; font-size: smaller;
958 text-align: right; }
960 text-align: right; }
959 .plusline { color: green; }
961 .plusline { color: green; }
960 .minusline { color: red; }
962 .minusline { color: red; }
961 .atline { color: purple; }
963 .atline { color: purple; }
962 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
964 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
963 .buttons a {
965 .buttons a {
964 background-color: #666;
966 background-color: #666;
965 padding: 2pt;
967 padding: 2pt;
966 color: white;
968 color: white;
967 font-family: sans;
969 font-family: sans;
968 font-weight: bold;
970 font-weight: bold;
969 }
971 }
970 .navigate a {
972 .navigate a {
971 background-color: #ccc;
973 background-color: #ccc;
972 padding: 2pt;
974 padding: 2pt;
973 font-family: sans;
975 font-family: sans;
974 color: black;
976 color: black;
975 }
977 }
976
978
977 .metatag {
979 .metatag {
978 background-color: #888;
980 background-color: #888;
979 color: white;
981 color: white;
980 text-align: right;
982 text-align: right;
981 }
983 }
982
984
983 /* Common */
985 /* Common */
984 pre { margin: 0; }
986 pre { margin: 0; }
985
987
986 .logo {
988 .logo {
987 float: right;
989 float: right;
988 clear: right;
990 clear: right;
989 }
991 }
990
992
991 /* Changelog/Filelog entries */
993 /* Changelog/Filelog entries */
992 .logEntry { width: 100%; }
994 .logEntry { width: 100%; }
993 .logEntry .age { width: 15%; }
995 .logEntry .age { width: 15%; }
994 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
996 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
995 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
997 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
996 .logEntry th.firstline { text-align: left; width: inherit; }
998 .logEntry th.firstline { text-align: left; width: inherit; }
997
999
998 /* Shortlog entries */
1000 /* Shortlog entries */
999 .slogEntry { width: 100%; }
1001 .slogEntry { width: 100%; }
1000 .slogEntry .age { width: 8em; }
1002 .slogEntry .age { width: 8em; }
1001 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1003 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1002 .slogEntry td.author { width: 15em; }
1004 .slogEntry td.author { width: 15em; }
1003
1005
1004 /* Tag entries */
1006 /* Tag entries */
1005 #tagEntries { list-style: none; margin: 0; padding: 0; }
1007 #tagEntries { list-style: none; margin: 0; padding: 0; }
1006 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1008 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1007
1009
1008 /* Changeset entry */
1010 /* Changeset entry */
1009 #changesetEntry { }
1011 #changesetEntry { }
1010 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1012 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1011 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1013 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1012
1014
1013 /* File diff view */
1015 /* File diff view */
1014 #filediffEntry { }
1016 #filediffEntry { }
1015 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1017 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1016
1018
1017 /* Graph */
1019 /* Graph */
1018 div#wrapper {
1020 div#wrapper {
1019 position: relative;
1021 position: relative;
1020 margin: 0;
1022 margin: 0;
1021 padding: 0;
1023 padding: 0;
1022 }
1024 }
1023
1025
1024 canvas {
1026 canvas {
1025 position: absolute;
1027 position: absolute;
1026 z-index: 5;
1028 z-index: 5;
1027 top: -0.6em;
1029 top: -0.6em;
1028 margin: 0;
1030 margin: 0;
1029 }
1031 }
1030
1032
1031 ul#nodebgs {
1033 ul#nodebgs {
1032 list-style: none inside none;
1034 list-style: none inside none;
1033 padding: 0;
1035 padding: 0;
1034 margin: 0;
1036 margin: 0;
1035 top: -0.7em;
1037 top: -0.7em;
1036 }
1038 }
1037
1039
1038 ul#graphnodes li, ul#nodebgs li {
1040 ul#graphnodes li, ul#nodebgs li {
1039 height: 39px;
1041 height: 39px;
1040 }
1042 }
1041
1043
1042 ul#graphnodes {
1044 ul#graphnodes {
1043 position: absolute;
1045 position: absolute;
1044 z-index: 10;
1046 z-index: 10;
1045 top: -0.85em;
1047 top: -0.85em;
1046 list-style: none inside none;
1048 list-style: none inside none;
1047 padding: 0;
1049 padding: 0;
1048 }
1050 }
1049
1051
1050 ul#graphnodes li .info {
1052 ul#graphnodes li .info {
1051 display: block;
1053 display: block;
1052 font-size: 70%;
1054 font-size: 70%;
1053 position: relative;
1055 position: relative;
1054 top: -1px;
1056 top: -1px;
1055 }
1057 }
1056
1058
1057 Stop and restart with HGENCODING=cp932
1059 Stop and restart with HGENCODING=cp932
1058
1060
1059 $ "$TESTDIR/killdaemons.py"
1061 $ "$TESTDIR/killdaemons.py"
1060 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1062 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1061 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1063 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1062 $ cat hg.pid >> $DAEMON_PIDS
1064 $ cat hg.pid >> $DAEMON_PIDS
1063
1065
1064 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1066 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1065
1067
1066 $ echo foo >> foo
1068 $ echo foo >> foo
1067 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1069 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1068
1070
1069 Graph json escape of multibyte character
1071 Graph json escape of multibyte character
1070
1072
1071 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1073 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1072 > | grep '^var data ='
1074 > | grep '^var data ='
1073 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"]], ["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"]]];
1075 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"]], ["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"]]];
1074
1076
1075 ERRORS ENCOUNTERED
1077 ERRORS ENCOUNTERED
1076
1078
1077 $ cat errors.log
1079 $ cat errors.log
@@ -1,138 +1,140 b''
1 Test chains of near empty directories, terminating 3 different ways:
1 Test chains of near empty directories, terminating 3 different ways:
2 - a1: file at level 4 (deepest)
2 - a1: file at level 4 (deepest)
3 - b1: two dirs at level 3
3 - b1: two dirs at level 3
4 - e1: file at level 2
4 - e1: file at level 2
5
5
6 Set up the repo
6 Set up the repo
7
7
8 $ hg init test
8 $ hg init test
9 $ cd test
9 $ cd test
10 $ mkdir -p a1/a2/a3/a4
10 $ mkdir -p a1/a2/a3/a4
11 $ mkdir -p b1/b2/b3/b4
11 $ mkdir -p b1/b2/b3/b4
12 $ mkdir -p b1/b2/c3/c4
12 $ mkdir -p b1/b2/c3/c4
13 $ mkdir -p d1/d2/d3/d4
13 $ mkdir -p d1/d2/d3/d4
14 $ echo foo > a1/a2/a3/a4/foo
14 $ echo foo > a1/a2/a3/a4/foo
15 $ echo foo > b1/b2/b3/b4/foo
15 $ echo foo > b1/b2/b3/b4/foo
16 $ echo foo > b1/b2/c3/c4/foo
16 $ echo foo > b1/b2/c3/c4/foo
17 $ echo foo > d1/d2/d3/d4/foo
17 $ echo foo > d1/d2/d3/d4/foo
18 $ echo foo > d1/d2/foo
18 $ echo foo > d1/d2/foo
19 $ hg ci -Ama
19 $ hg ci -Ama
20 adding a1/a2/a3/a4/foo
20 adding a1/a2/a3/a4/foo
21 adding b1/b2/b3/b4/foo
21 adding b1/b2/b3/b4/foo
22 adding b1/b2/c3/c4/foo
22 adding b1/b2/c3/c4/foo
23 adding d1/d2/d3/d4/foo
23 adding d1/d2/d3/d4/foo
24 adding d1/d2/foo
24 adding d1/d2/foo
25 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
25 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
26 $ cat hg.pid >> $DAEMON_PIDS
26 $ cat hg.pid >> $DAEMON_PIDS
27
27
28 manifest with descending
28 manifest with descending
29
29
30 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file'
30 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file'
31 200 Script output follows
31 200 Script output follows
32
32
33 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
33 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
34 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
34 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
35 <head>
35 <head>
36 <link rel="icon" href="/static/hgicon.png" type="image/png" />
36 <link rel="icon" href="/static/hgicon.png" type="image/png" />
37 <meta name="robots" content="index, nofollow" />
37 <meta name="robots" content="index, nofollow" />
38 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
38 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
39
39
40 <title>test: 9087c84a0f5d /</title>
40 <title>test: 9087c84a0f5d /</title>
41 </head>
41 </head>
42 <body>
42 <body>
43
43
44 <div class="container">
44 <div class="container">
45 <div class="menu">
45 <div class="menu">
46 <div class="logo">
46 <div class="logo">
47 <a href="http://mercurial.selenic.com/">
47 <a href="http://mercurial.selenic.com/">
48 <img src="/static/hglogo.png" alt="mercurial" /></a>
48 <img src="/static/hglogo.png" alt="mercurial" /></a>
49 </div>
49 </div>
50 <ul>
50 <ul>
51 <li><a href="/shortlog/9087c84a0f5d">log</a></li>
51 <li><a href="/shortlog/9087c84a0f5d">log</a></li>
52 <li><a href="/graph/9087c84a0f5d">graph</a></li>
52 <li><a href="/graph/9087c84a0f5d">graph</a></li>
53 <li><a href="/tags">tags</a></li>
53 <li><a href="/tags">tags</a></li>
54 <li><a href="/branches">branches</a></li>
54 <li><a href="/branches">branches</a></li>
55 <li><a href="/help">help</a></li>
56 </ul>
55 </ul>
57 <ul>
56 <ul>
58 <li><a href="/rev/9087c84a0f5d">changeset</a></li>
57 <li><a href="/rev/9087c84a0f5d">changeset</a></li>
59 <li class="active">browse</li>
58 <li class="active">browse</li>
60 </ul>
59 </ul>
61 <ul>
60 <ul>
62
61
63 </ul>
62 </ul>
64 <ul>
63 <ul>
65 <li><a href="/help">help</a></li>
64 <li><a href="/help">help</a></li>
66 </ul>
65 </ul>
66 <ul>
67 <li><a href="/help">help</a></li>
68 </ul>
67 </div>
69 </div>
68
70
69 <div class="main">
71 <div class="main">
70 <h2><a href="/">test</a></h2>
72 <h2><a href="/">test</a></h2>
71 <h3>directory / @ 0:9087c84a0f5d <span class="tag">tip</span> </h3>
73 <h3>directory / @ 0:9087c84a0f5d <span class="tag">tip</span> </h3>
72
74
73 <form class="search" action="/log">
75 <form class="search" action="/log">
74
76
75 <p><input name="rev" id="search1" type="text" size="30" /></p>
77 <p><input name="rev" id="search1" type="text" size="30" /></p>
76 <div id="hint">find changesets by author, revision,
78 <div id="hint">find changesets by author, revision,
77 files, or words in the commit message</div>
79 files, or words in the commit message</div>
78 </form>
80 </form>
79
81
80 <table class="bigtable">
82 <table class="bigtable">
81 <tr>
83 <tr>
82 <th class="name">name</th>
84 <th class="name">name</th>
83 <th class="size">size</th>
85 <th class="size">size</th>
84 <th class="permissions">permissions</th>
86 <th class="permissions">permissions</th>
85 </tr>
87 </tr>
86 <tr class="fileline parity0">
88 <tr class="fileline parity0">
87 <td class="name"><a href="/file/9087c84a0f5d/">[up]</a></td>
89 <td class="name"><a href="/file/9087c84a0f5d/">[up]</a></td>
88 <td class="size"></td>
90 <td class="size"></td>
89 <td class="permissions">drwxr-xr-x</td>
91 <td class="permissions">drwxr-xr-x</td>
90 </tr>
92 </tr>
91
93
92 <tr class="fileline parity1">
94 <tr class="fileline parity1">
93 <td class="name">
95 <td class="name">
94 <a href="/file/9087c84a0f5d/a1">
96 <a href="/file/9087c84a0f5d/a1">
95 <img src="/static/coal-folder.png" alt="dir."/> a1/
97 <img src="/static/coal-folder.png" alt="dir."/> a1/
96 </a>
98 </a>
97 <a href="/file/9087c84a0f5d/a1/a2/a3/a4">
99 <a href="/file/9087c84a0f5d/a1/a2/a3/a4">
98 a2/a3/a4
100 a2/a3/a4
99 </a>
101 </a>
100 </td>
102 </td>
101 <td class="size"></td>
103 <td class="size"></td>
102 <td class="permissions">drwxr-xr-x</td>
104 <td class="permissions">drwxr-xr-x</td>
103 </tr>
105 </tr>
104 <tr class="fileline parity0">
106 <tr class="fileline parity0">
105 <td class="name">
107 <td class="name">
106 <a href="/file/9087c84a0f5d/b1">
108 <a href="/file/9087c84a0f5d/b1">
107 <img src="/static/coal-folder.png" alt="dir."/> b1/
109 <img src="/static/coal-folder.png" alt="dir."/> b1/
108 </a>
110 </a>
109 <a href="/file/9087c84a0f5d/b1/b2">
111 <a href="/file/9087c84a0f5d/b1/b2">
110 b2
112 b2
111 </a>
113 </a>
112 </td>
114 </td>
113 <td class="size"></td>
115 <td class="size"></td>
114 <td class="permissions">drwxr-xr-x</td>
116 <td class="permissions">drwxr-xr-x</td>
115 </tr>
117 </tr>
116 <tr class="fileline parity1">
118 <tr class="fileline parity1">
117 <td class="name">
119 <td class="name">
118 <a href="/file/9087c84a0f5d/d1">
120 <a href="/file/9087c84a0f5d/d1">
119 <img src="/static/coal-folder.png" alt="dir."/> d1/
121 <img src="/static/coal-folder.png" alt="dir."/> d1/
120 </a>
122 </a>
121 <a href="/file/9087c84a0f5d/d1/d2">
123 <a href="/file/9087c84a0f5d/d1/d2">
122 d2
124 d2
123 </a>
125 </a>
124 </td>
126 </td>
125 <td class="size"></td>
127 <td class="size"></td>
126 <td class="permissions">drwxr-xr-x</td>
128 <td class="permissions">drwxr-xr-x</td>
127 </tr>
129 </tr>
128
130
129 </table>
131 </table>
130 </div>
132 </div>
131 </div>
133 </div>
132
134
133
135
134 </body>
136 </body>
135 </html>
137 </html>
136
138
137
139
138 $ cat errors.log
140 $ cat errors.log
@@ -1,482 +1,486 b''
1 setting up repo
1 setting up repo
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo a > a
5 $ echo a > a
6 $ echo b > b
6 $ echo b > b
7 $ hg ci -Ama
7 $ hg ci -Ama
8 adding a
8 adding a
9 adding b
9 adding b
10
10
11 change permissions for git diffs
11 change permissions for git diffs
12
12
13 $ chmod 755 a
13 $ chmod 755 a
14 $ hg ci -Amb
14 $ hg ci -Amb
15
15
16 set up hgweb
16 set up hgweb
17
17
18 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
18 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
19 $ cat hg.pid >> $DAEMON_PIDS
19 $ cat hg.pid >> $DAEMON_PIDS
20
20
21 revision
21 revision
22
22
23 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
23 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
24 200 Script output follows
24 200 Script output follows
25
25
26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
27 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
27 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
28 <head>
28 <head>
29 <link rel="icon" href="/static/hgicon.png" type="image/png" />
29 <link rel="icon" href="/static/hgicon.png" type="image/png" />
30 <meta name="robots" content="index, nofollow" />
30 <meta name="robots" content="index, nofollow" />
31 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
31 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
32
32
33 <title>test: 0cd96de13884</title>
33 <title>test: 0cd96de13884</title>
34 </head>
34 </head>
35 <body>
35 <body>
36 <div class="container">
36 <div class="container">
37 <div class="menu">
37 <div class="menu">
38 <div class="logo">
38 <div class="logo">
39 <a href="http://mercurial.selenic.com/">
39 <a href="http://mercurial.selenic.com/">
40 <img src="/static/hglogo.png" alt="mercurial" /></a>
40 <img src="/static/hglogo.png" alt="mercurial" /></a>
41 </div>
41 </div>
42 <ul>
42 <ul>
43 <li><a href="/shortlog/0cd96de13884">log</a></li>
43 <li><a href="/shortlog/0cd96de13884">log</a></li>
44 <li><a href="/graph/0cd96de13884">graph</a></li>
44 <li><a href="/graph/0cd96de13884">graph</a></li>
45 <li><a href="/tags">tags</a></li>
45 <li><a href="/tags">tags</a></li>
46 <li><a href="/branches">branches</a></li>
46 <li><a href="/branches">branches</a></li>
47 <li><a href="/help">help</a></li>
48 </ul>
47 </ul>
49 <ul>
48 <ul>
50 <li class="active">changeset</li>
49 <li class="active">changeset</li>
51 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
50 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
52 <li><a href="/file/0cd96de13884">browse</a></li>
51 <li><a href="/file/0cd96de13884">browse</a></li>
53 </ul>
52 </ul>
54 <ul>
53 <ul>
55
54
56 </ul>
55 </ul>
57 <ul>
56 <ul>
58 <li><a href="/help">help</a></li>
57 <li><a href="/help">help</a></li>
59 </ul>
58 </ul>
60 </div>
59 </div>
61
60
62 <div class="main">
61 <div class="main">
63
62
64 <h2><a href="/">test</a></h2>
63 <h2><a href="/">test</a></h2>
65 <h3>changeset 0:0cd96de13884 </h3>
64 <h3>changeset 0:0cd96de13884 </h3>
66
65
67 <form class="search" action="/log">
66 <form class="search" action="/log">
68
67
69 <p><input name="rev" id="search1" type="text" size="30" /></p>
68 <p><input name="rev" id="search1" type="text" size="30" /></p>
70 <div id="hint">find changesets by author, revision,
69 <div id="hint">find changesets by author, revision,
71 files, or words in the commit message</div>
70 files, or words in the commit message</div>
72 </form>
71 </form>
73
72
74 <div class="description">a</div>
73 <div class="description">a</div>
75
74
76 <table id="changesetEntry">
75 <table id="changesetEntry">
77 <tr>
76 <tr>
78 <th class="author">author</th>
77 <th class="author">author</th>
79 <td class="author">&#116;&#101;&#115;&#116;</td>
78 <td class="author">&#116;&#101;&#115;&#116;</td>
80 </tr>
79 </tr>
81 <tr>
80 <tr>
82 <th class="date">date</th>
81 <th class="date">date</th>
83 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
82 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
84 <tr>
83 <tr>
85 <th class="author">parents</th>
84 <th class="author">parents</th>
86 <td class="author"></td>
85 <td class="author"></td>
87 </tr>
86 </tr>
88 <tr>
87 <tr>
89 <th class="author">children</th>
88 <th class="author">children</th>
90 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
89 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
91 </tr>
90 </tr>
92 <tr>
91 <tr>
93 <th class="files">files</th>
92 <th class="files">files</th>
94 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
93 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
95 </tr>
94 </tr>
96 </table>
95 </table>
97
96
98 <div class="overflow">
97 <div class="overflow">
99 <div class="sourcefirst"> line diff</div>
98 <div class="sourcefirst"> line diff</div>
100
99
101 <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
100 <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
102 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
101 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
103 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
102 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
104 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
103 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
105 </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
104 </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
106 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
105 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
107 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
106 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
108 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
107 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
109 </span></pre></div>
108 </span></pre></div>
110 </div>
109 </div>
111
110
112 </div>
111 </div>
113 </div>
112 </div>
114
113
115
114
116 </body>
115 </body>
117 </html>
116 </html>
118
117
119
118
120 raw revision
119 raw revision
121
120
122 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
121 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
123 200 Script output follows
122 200 Script output follows
124
123
125
124
126 # HG changeset patch
125 # HG changeset patch
127 # User test
126 # User test
128 # Date 0 0
127 # Date 0 0
129 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
128 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
130
129
131 a
130 a
132
131
133 diff -r 000000000000 -r 0cd96de13884 a
132 diff -r 000000000000 -r 0cd96de13884 a
134 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
133 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
135 +++ b/a Thu Jan 01 00:00:00 1970 +0000
134 +++ b/a Thu Jan 01 00:00:00 1970 +0000
136 @@ -0,0 +1,1 @@
135 @@ -0,0 +1,1 @@
137 +a
136 +a
138 diff -r 000000000000 -r 0cd96de13884 b
137 diff -r 000000000000 -r 0cd96de13884 b
139 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
138 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
140 +++ b/b Thu Jan 01 00:00:00 1970 +0000
139 +++ b/b Thu Jan 01 00:00:00 1970 +0000
141 @@ -0,0 +1,1 @@
140 @@ -0,0 +1,1 @@
142 +b
141 +b
143
142
144
143
145 diff removed file
144 diff removed file
146
145
147 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
146 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
148 200 Script output follows
147 200 Script output follows
149
148
150 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
149 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
151 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
150 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
152 <head>
151 <head>
153 <link rel="icon" href="/static/hgicon.png" type="image/png" />
152 <link rel="icon" href="/static/hgicon.png" type="image/png" />
154 <meta name="robots" content="index, nofollow" />
153 <meta name="robots" content="index, nofollow" />
155 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
154 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
156
155
157 <title>test: a diff</title>
156 <title>test: a diff</title>
158 </head>
157 </head>
159 <body>
158 <body>
160
159
161 <div class="container">
160 <div class="container">
162 <div class="menu">
161 <div class="menu">
163 <div class="logo">
162 <div class="logo">
164 <a href="http://mercurial.selenic.com/">
163 <a href="http://mercurial.selenic.com/">
165 <img src="/static/hglogo.png" alt="mercurial" /></a>
164 <img src="/static/hglogo.png" alt="mercurial" /></a>
166 </div>
165 </div>
167 <ul>
166 <ul>
168 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
167 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
169 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
168 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
170 <li><a href="/tags">tags</a></li>
169 <li><a href="/tags">tags</a></li>
171 <li><a href="/branches">branches</a></li>
170 <li><a href="/branches">branches</a></li>
172 </ul>
171 </ul>
173 <ul>
172 <ul>
174 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
173 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
175 <li><a href="/file/78e4ebad7cdf">browse</a></li>
174 <li><a href="/file/78e4ebad7cdf">browse</a></li>
176 </ul>
175 </ul>
177 <ul>
176 <ul>
178 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
177 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
179 <li><a href="/file/tip/a">latest</a></li>
178 <li><a href="/file/tip/a">latest</a></li>
180 <li class="active">diff</li>
179 <li class="active">diff</li>
181 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
180 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
182 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
181 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
183 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
182 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
184 </ul>
183 </ul>
184 <ul>
185 <li><a href="/help">help</a></li>
186 </ul>
185 </div>
187 </div>
186
188
187 <div class="main">
189 <div class="main">
188 <h2><a href="/">test</a></h2>
190 <h2><a href="/">test</a></h2>
189 <h3>diff a @ 1:78e4ebad7cdf</h3>
191 <h3>diff a @ 1:78e4ebad7cdf</h3>
190
192
191 <form class="search" action="/log">
193 <form class="search" action="/log">
192 <p></p>
194 <p></p>
193 <p><input name="rev" id="search1" type="text" size="30" /></p>
195 <p><input name="rev" id="search1" type="text" size="30" /></p>
194 <div id="hint">find changesets by author, revision,
196 <div id="hint">find changesets by author, revision,
195 files, or words in the commit message</div>
197 files, or words in the commit message</div>
196 </form>
198 </form>
197
199
198 <div class="description">b</div>
200 <div class="description">b</div>
199
201
200 <table id="changesetEntry">
202 <table id="changesetEntry">
201 <tr>
203 <tr>
202 <th>author</th>
204 <th>author</th>
203 <td>&#116;&#101;&#115;&#116;</td>
205 <td>&#116;&#101;&#115;&#116;</td>
204 </tr>
206 </tr>
205 <tr>
207 <tr>
206 <th>date</th>
208 <th>date</th>
207 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
209 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
208 </tr>
210 </tr>
209 <tr>
211 <tr>
210 <th>parents</th>
212 <th>parents</th>
211 <td></td>
213 <td></td>
212 </tr>
214 </tr>
213 <tr>
215 <tr>
214 <th>children</th>
216 <th>children</th>
215 <td></td>
217 <td></td>
216 </tr>
218 </tr>
217
219
218 </table>
220 </table>
219
221
220 <div class="overflow">
222 <div class="overflow">
221 <div class="sourcefirst"> line diff</div>
223 <div class="sourcefirst"> line diff</div>
222
224
223 <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
225 <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
224 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
226 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
225 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
227 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
226 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
228 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
227 </span></pre></div>
229 </span></pre></div>
228 </div>
230 </div>
229 </div>
231 </div>
230 </div>
232 </div>
231
233
232
234
233
235
234 </body>
236 </body>
235 </html>
237 </html>
236
238
237
239
238 set up hgweb with git diffs
240 set up hgweb with git diffs
239
241
240 $ "$TESTDIR/killdaemons.py"
242 $ "$TESTDIR/killdaemons.py"
241 $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
243 $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
242 $ cat hg.pid >> $DAEMON_PIDS
244 $ cat hg.pid >> $DAEMON_PIDS
243
245
244 revision
246 revision
245
247
246 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
248 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
247 200 Script output follows
249 200 Script output follows
248
250
249 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
251 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
250 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
252 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
251 <head>
253 <head>
252 <link rel="icon" href="/static/hgicon.png" type="image/png" />
254 <link rel="icon" href="/static/hgicon.png" type="image/png" />
253 <meta name="robots" content="index, nofollow" />
255 <meta name="robots" content="index, nofollow" />
254 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
256 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
255
257
256 <title>test: 0cd96de13884</title>
258 <title>test: 0cd96de13884</title>
257 </head>
259 </head>
258 <body>
260 <body>
259 <div class="container">
261 <div class="container">
260 <div class="menu">
262 <div class="menu">
261 <div class="logo">
263 <div class="logo">
262 <a href="http://mercurial.selenic.com/">
264 <a href="http://mercurial.selenic.com/">
263 <img src="/static/hglogo.png" alt="mercurial" /></a>
265 <img src="/static/hglogo.png" alt="mercurial" /></a>
264 </div>
266 </div>
265 <ul>
267 <ul>
266 <li><a href="/shortlog/0cd96de13884">log</a></li>
268 <li><a href="/shortlog/0cd96de13884">log</a></li>
267 <li><a href="/graph/0cd96de13884">graph</a></li>
269 <li><a href="/graph/0cd96de13884">graph</a></li>
268 <li><a href="/tags">tags</a></li>
270 <li><a href="/tags">tags</a></li>
269 <li><a href="/branches">branches</a></li>
271 <li><a href="/branches">branches</a></li>
270 <li><a href="/help">help</a></li>
271 </ul>
272 </ul>
272 <ul>
273 <ul>
273 <li class="active">changeset</li>
274 <li class="active">changeset</li>
274 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
275 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
275 <li><a href="/file/0cd96de13884">browse</a></li>
276 <li><a href="/file/0cd96de13884">browse</a></li>
276 </ul>
277 </ul>
277 <ul>
278 <ul>
278
279
279 </ul>
280 </ul>
280 <ul>
281 <ul>
281 <li><a href="/help">help</a></li>
282 <li><a href="/help">help</a></li>
282 </ul>
283 </ul>
283 </div>
284 </div>
284
285
285 <div class="main">
286 <div class="main">
286
287
287 <h2><a href="/">test</a></h2>
288 <h2><a href="/">test</a></h2>
288 <h3>changeset 0:0cd96de13884 </h3>
289 <h3>changeset 0:0cd96de13884 </h3>
289
290
290 <form class="search" action="/log">
291 <form class="search" action="/log">
291
292
292 <p><input name="rev" id="search1" type="text" size="30" /></p>
293 <p><input name="rev" id="search1" type="text" size="30" /></p>
293 <div id="hint">find changesets by author, revision,
294 <div id="hint">find changesets by author, revision,
294 files, or words in the commit message</div>
295 files, or words in the commit message</div>
295 </form>
296 </form>
296
297
297 <div class="description">a</div>
298 <div class="description">a</div>
298
299
299 <table id="changesetEntry">
300 <table id="changesetEntry">
300 <tr>
301 <tr>
301 <th class="author">author</th>
302 <th class="author">author</th>
302 <td class="author">&#116;&#101;&#115;&#116;</td>
303 <td class="author">&#116;&#101;&#115;&#116;</td>
303 </tr>
304 </tr>
304 <tr>
305 <tr>
305 <th class="date">date</th>
306 <th class="date">date</th>
306 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
307 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
307 <tr>
308 <tr>
308 <th class="author">parents</th>
309 <th class="author">parents</th>
309 <td class="author"></td>
310 <td class="author"></td>
310 </tr>
311 </tr>
311 <tr>
312 <tr>
312 <th class="author">children</th>
313 <th class="author">children</th>
313 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
314 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
314 </tr>
315 </tr>
315 <tr>
316 <tr>
316 <th class="files">files</th>
317 <th class="files">files</th>
317 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
318 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
318 </tr>
319 </tr>
319 </table>
320 </table>
320
321
321 <div class="overflow">
322 <div class="overflow">
322 <div class="sourcefirst"> line diff</div>
323 <div class="sourcefirst"> line diff</div>
323
324
324 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
325 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
325 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
326 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
326 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
327 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
327 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
328 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
328 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
329 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
329 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
330 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
330 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
331 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
331 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
332 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
332 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
333 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
333 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
334 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
334 </span></pre></div>
335 </span></pre></div>
335 </div>
336 </div>
336
337
337 </div>
338 </div>
338 </div>
339 </div>
339
340
340
341
341 </body>
342 </body>
342 </html>
343 </html>
343
344
344
345
345 revision
346 revision
346
347
347 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
348 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
348 200 Script output follows
349 200 Script output follows
349
350
350
351
351 # HG changeset patch
352 # HG changeset patch
352 # User test
353 # User test
353 # Date 0 0
354 # Date 0 0
354 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
355 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
355
356
356 a
357 a
357
358
358 diff --git a/a b/a
359 diff --git a/a b/a
359 new file mode 100644
360 new file mode 100644
360 --- /dev/null
361 --- /dev/null
361 +++ b/a
362 +++ b/a
362 @@ -0,0 +1,1 @@
363 @@ -0,0 +1,1 @@
363 +a
364 +a
364 diff --git a/b b/b
365 diff --git a/b b/b
365 new file mode 100644
366 new file mode 100644
366 --- /dev/null
367 --- /dev/null
367 +++ b/b
368 +++ b/b
368 @@ -0,0 +1,1 @@
369 @@ -0,0 +1,1 @@
369 +b
370 +b
370
371
371
372
372 diff removed file
373 diff removed file
373
374
374 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
375 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
375 200 Script output follows
376 200 Script output follows
376
377
377 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
378 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
378 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
379 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
379 <head>
380 <head>
380 <link rel="icon" href="/static/hgicon.png" type="image/png" />
381 <link rel="icon" href="/static/hgicon.png" type="image/png" />
381 <meta name="robots" content="index, nofollow" />
382 <meta name="robots" content="index, nofollow" />
382 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
383 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
383
384
384 <title>test: a diff</title>
385 <title>test: a diff</title>
385 </head>
386 </head>
386 <body>
387 <body>
387
388
388 <div class="container">
389 <div class="container">
389 <div class="menu">
390 <div class="menu">
390 <div class="logo">
391 <div class="logo">
391 <a href="http://mercurial.selenic.com/">
392 <a href="http://mercurial.selenic.com/">
392 <img src="/static/hglogo.png" alt="mercurial" /></a>
393 <img src="/static/hglogo.png" alt="mercurial" /></a>
393 </div>
394 </div>
394 <ul>
395 <ul>
395 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
396 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
396 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
397 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
397 <li><a href="/tags">tags</a></li>
398 <li><a href="/tags">tags</a></li>
398 <li><a href="/branches">branches</a></li>
399 <li><a href="/branches">branches</a></li>
399 </ul>
400 </ul>
400 <ul>
401 <ul>
401 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
402 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
402 <li><a href="/file/78e4ebad7cdf">browse</a></li>
403 <li><a href="/file/78e4ebad7cdf">browse</a></li>
403 </ul>
404 </ul>
404 <ul>
405 <ul>
405 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
406 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
406 <li><a href="/file/tip/a">latest</a></li>
407 <li><a href="/file/tip/a">latest</a></li>
407 <li class="active">diff</li>
408 <li class="active">diff</li>
408 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
409 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
409 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
410 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
410 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
411 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
411 </ul>
412 </ul>
413 <ul>
414 <li><a href="/help">help</a></li>
415 </ul>
412 </div>
416 </div>
413
417
414 <div class="main">
418 <div class="main">
415 <h2><a href="/">test</a></h2>
419 <h2><a href="/">test</a></h2>
416 <h3>diff a @ 1:78e4ebad7cdf</h3>
420 <h3>diff a @ 1:78e4ebad7cdf</h3>
417
421
418 <form class="search" action="/log">
422 <form class="search" action="/log">
419 <p></p>
423 <p></p>
420 <p><input name="rev" id="search1" type="text" size="30" /></p>
424 <p><input name="rev" id="search1" type="text" size="30" /></p>
421 <div id="hint">find changesets by author, revision,
425 <div id="hint">find changesets by author, revision,
422 files, or words in the commit message</div>
426 files, or words in the commit message</div>
423 </form>
427 </form>
424
428
425 <div class="description">b</div>
429 <div class="description">b</div>
426
430
427 <table id="changesetEntry">
431 <table id="changesetEntry">
428 <tr>
432 <tr>
429 <th>author</th>
433 <th>author</th>
430 <td>&#116;&#101;&#115;&#116;</td>
434 <td>&#116;&#101;&#115;&#116;</td>
431 </tr>
435 </tr>
432 <tr>
436 <tr>
433 <th>date</th>
437 <th>date</th>
434 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
438 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
435 </tr>
439 </tr>
436 <tr>
440 <tr>
437 <th>parents</th>
441 <th>parents</th>
438 <td></td>
442 <td></td>
439 </tr>
443 </tr>
440 <tr>
444 <tr>
441 <th>children</th>
445 <th>children</th>
442 <td></td>
446 <td></td>
443 </tr>
447 </tr>
444
448
445 </table>
449 </table>
446
450
447 <div class="overflow">
451 <div class="overflow">
448 <div class="sourcefirst"> line diff</div>
452 <div class="sourcefirst"> line diff</div>
449
453
450 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
454 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
451 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
455 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
452 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
456 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
453 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
457 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
454 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
458 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
455 </span></pre></div>
459 </span></pre></div>
456 </div>
460 </div>
457 </div>
461 </div>
458 </div>
462 </div>
459
463
460
464
461
465
462 </body>
466 </body>
463 </html>
467 </html>
464
468
465 $ cd ..
469 $ cd ..
466
470
467 test import rev as raw-rev
471 test import rev as raw-rev
468
472
469 $ hg clone -r0 test test1
473 $ hg clone -r0 test test1
470 requesting all changes
474 requesting all changes
471 adding changesets
475 adding changesets
472 adding manifests
476 adding manifests
473 adding file changes
477 adding file changes
474 added 1 changesets with 2 changes to 2 files
478 added 1 changesets with 2 changes to 2 files
475 updating to branch default
479 updating to branch default
476 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
480 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
477 $ cd test1
481 $ cd test1
478 $ hg import -q --exact http://localhost:$HGPORT/rev/1
482 $ hg import -q --exact http://localhost:$HGPORT/rev/1
479
483
480 errors
484 errors
481
485
482 $ cat ../test/errors.log
486 $ cat ../test/errors.log
@@ -1,392 +1,391 b''
1 Some tests for hgweb in an empty repository
1 Some tests for hgweb in an empty repository
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
5 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
6 $ cat hg.pid >> $DAEMON_PIDS
6 $ cat hg.pid >> $DAEMON_PIDS
7 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/shortlog')
7 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/shortlog')
8 200 Script output follows
8 200 Script output follows
9
9
10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
11 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
11 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
12 <head>
12 <head>
13 <link rel="icon" href="/static/hgicon.png" type="image/png" />
13 <link rel="icon" href="/static/hgicon.png" type="image/png" />
14 <meta name="robots" content="index, nofollow" />
14 <meta name="robots" content="index, nofollow" />
15 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
15 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
16
16
17 <title>test: log</title>
17 <title>test: log</title>
18 <link rel="alternate" type="application/atom+xml"
18 <link rel="alternate" type="application/atom+xml"
19 href="/atom-log" title="Atom feed for test" />
19 href="/atom-log" title="Atom feed for test" />
20 <link rel="alternate" type="application/rss+xml"
20 <link rel="alternate" type="application/rss+xml"
21 href="/rss-log" title="RSS feed for test" />
21 href="/rss-log" title="RSS feed for test" />
22 </head>
22 </head>
23 <body>
23 <body>
24
24
25 <div class="container">
25 <div class="container">
26 <div class="menu">
26 <div class="menu">
27 <div class="logo">
27 <div class="logo">
28 <a href="http://mercurial.selenic.com/">
28 <a href="http://mercurial.selenic.com/">
29 <img src="/static/hglogo.png" alt="mercurial" /></a>
29 <img src="/static/hglogo.png" alt="mercurial" /></a>
30 </div>
30 </div>
31 <ul>
31 <ul>
32 <li class="active">log</li>
32 <li class="active">log</li>
33 <li><a href="/graph/000000000000">graph</a></li>
33 <li><a href="/graph/000000000000">graph</a></li>
34 <li><a href="/tags">tags</a></li>
34 <li><a href="/tags">tags</a></li>
35 <li><a href="/branches">branches</a></li>
35 <li><a href="/branches">branches</a></li>
36 <li><a href="/help">help</a></li>
37 </ul>
36 </ul>
38 <ul>
37 <ul>
39 <li><a href="/rev/000000000000">changeset</a></li>
38 <li><a href="/rev/000000000000">changeset</a></li>
40 <li><a href="/file/000000000000">browse</a></li>
39 <li><a href="/file/000000000000">browse</a></li>
41 </ul>
40 </ul>
42 <ul>
41 <ul>
43
42
44 </ul>
43 </ul>
45 <ul>
44 <ul>
46 <li><a href="/help">help</a></li>
45 <li><a href="/help">help</a></li>
47 </ul>
46 </ul>
48 </div>
47 </div>
49
48
50 <div class="main">
49 <div class="main">
51 <h2><a href="/">test</a></h2>
50 <h2><a href="/">test</a></h2>
52 <h3>log</h3>
51 <h3>log</h3>
53
52
54 <form class="search" action="/log">
53 <form class="search" action="/log">
55
54
56 <p><input name="rev" id="search1" type="text" size="30" /></p>
55 <p><input name="rev" id="search1" type="text" size="30" /></p>
57 <div id="hint">find changesets by author, revision,
56 <div id="hint">find changesets by author, revision,
58 files, or words in the commit message</div>
57 files, or words in the commit message</div>
59 </form>
58 </form>
60
59
61 <div class="navigate">
60 <div class="navigate">
62 <a href="/shortlog/-1?revcount=30">less</a>
61 <a href="/shortlog/-1?revcount=30">less</a>
63 <a href="/shortlog/-1?revcount=120">more</a>
62 <a href="/shortlog/-1?revcount=120">more</a>
64 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
63 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
65 </div>
64 </div>
66
65
67 <table class="bigtable">
66 <table class="bigtable">
68 <tr>
67 <tr>
69 <th class="age">age</th>
68 <th class="age">age</th>
70 <th class="author">author</th>
69 <th class="author">author</th>
71 <th class="description">description</th>
70 <th class="description">description</th>
72 </tr>
71 </tr>
73
72
74 </table>
73 </table>
75
74
76 <div class="navigate">
75 <div class="navigate">
77 <a href="/shortlog/-1?revcount=30">less</a>
76 <a href="/shortlog/-1?revcount=30">less</a>
78 <a href="/shortlog/-1?revcount=120">more</a>
77 <a href="/shortlog/-1?revcount=120">more</a>
79 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
78 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
80 </div>
79 </div>
81
80
82 </div>
81 </div>
83 </div>
82 </div>
84
83
85
84
86
85
87 </body>
86 </body>
88 </html>
87 </html>
89
88
90 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log')
89 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log')
91 200 Script output follows
90 200 Script output follows
92
91
93 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
92 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
94 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
93 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
95 <head>
94 <head>
96 <link rel="icon" href="/static/hgicon.png" type="image/png" />
95 <link rel="icon" href="/static/hgicon.png" type="image/png" />
97 <meta name="robots" content="index, nofollow" />
96 <meta name="robots" content="index, nofollow" />
98 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
97 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
99
98
100 <title>test: log</title>
99 <title>test: log</title>
101 <link rel="alternate" type="application/atom+xml"
100 <link rel="alternate" type="application/atom+xml"
102 href="/atom-log" title="Atom feed for test" />
101 href="/atom-log" title="Atom feed for test" />
103 <link rel="alternate" type="application/rss+xml"
102 <link rel="alternate" type="application/rss+xml"
104 href="/rss-log" title="RSS feed for test" />
103 href="/rss-log" title="RSS feed for test" />
105 </head>
104 </head>
106 <body>
105 <body>
107
106
108 <div class="container">
107 <div class="container">
109 <div class="menu">
108 <div class="menu">
110 <div class="logo">
109 <div class="logo">
111 <a href="http://mercurial.selenic.com/">
110 <a href="http://mercurial.selenic.com/">
112 <img src="/static/hglogo.png" alt="mercurial" /></a>
111 <img src="/static/hglogo.png" alt="mercurial" /></a>
113 </div>
112 </div>
114 <ul>
113 <ul>
115 <li class="active">log</li>
114 <li class="active">log</li>
116 <li><a href="/graph/000000000000">graph</a></li>
115 <li><a href="/graph/000000000000">graph</a></li>
117 <li><a href="/tags">tags</a></li>
116 <li><a href="/tags">tags</a></li>
118 <li><a href="/branches">branches</a></li>
117 <li><a href="/branches">branches</a></li>
119 <li><a href="/help">help</a></li>
120 </ul>
118 </ul>
121 <ul>
119 <ul>
122 <li><a href="/rev/000000000000">changeset</a></li>
120 <li><a href="/rev/000000000000">changeset</a></li>
123 <li><a href="/file/000000000000">browse</a></li>
121 <li><a href="/file/000000000000">browse</a></li>
124 </ul>
122 </ul>
125 <ul>
123 <ul>
126
124
127 </ul>
125 </ul>
128 <ul>
126 <ul>
129 <li><a href="/help">help</a></li>
127 <li><a href="/help">help</a></li>
130 </ul>
128 </ul>
131 </div>
129 </div>
132
130
133 <div class="main">
131 <div class="main">
134 <h2><a href="/">test</a></h2>
132 <h2><a href="/">test</a></h2>
135 <h3>log</h3>
133 <h3>log</h3>
136
134
137 <form class="search" action="/log">
135 <form class="search" action="/log">
138
136
139 <p><input name="rev" id="search1" type="text" size="30" /></p>
137 <p><input name="rev" id="search1" type="text" size="30" /></p>
140 <div id="hint">find changesets by author, revision,
138 <div id="hint">find changesets by author, revision,
141 files, or words in the commit message</div>
139 files, or words in the commit message</div>
142 </form>
140 </form>
143
141
144 <div class="navigate">
142 <div class="navigate">
145 <a href="/shortlog/-1?revcount=5">less</a>
143 <a href="/shortlog/-1?revcount=5">less</a>
146 <a href="/shortlog/-1?revcount=20">more</a>
144 <a href="/shortlog/-1?revcount=20">more</a>
147 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
145 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
148 </div>
146 </div>
149
147
150 <table class="bigtable">
148 <table class="bigtable">
151 <tr>
149 <tr>
152 <th class="age">age</th>
150 <th class="age">age</th>
153 <th class="author">author</th>
151 <th class="author">author</th>
154 <th class="description">description</th>
152 <th class="description">description</th>
155 </tr>
153 </tr>
156
154
157 </table>
155 </table>
158
156
159 <div class="navigate">
157 <div class="navigate">
160 <a href="/shortlog/-1?revcount=5">less</a>
158 <a href="/shortlog/-1?revcount=5">less</a>
161 <a href="/shortlog/-1?revcount=20">more</a>
159 <a href="/shortlog/-1?revcount=20">more</a>
162 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
160 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
163 </div>
161 </div>
164
162
165 </div>
163 </div>
166 </div>
164 </div>
167
165
168
166
169
167
170 </body>
168 </body>
171 </html>
169 </html>
172
170
173 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/graph')
171 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/graph')
174 200 Script output follows
172 200 Script output follows
175
173
176 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
174 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
177 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
175 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
178 <head>
176 <head>
179 <link rel="icon" href="/static/hgicon.png" type="image/png" />
177 <link rel="icon" href="/static/hgicon.png" type="image/png" />
180 <meta name="robots" content="index, nofollow" />
178 <meta name="robots" content="index, nofollow" />
181 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
179 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
182
180
183 <title>test: revision graph</title>
181 <title>test: revision graph</title>
184 <link rel="alternate" type="application/atom+xml"
182 <link rel="alternate" type="application/atom+xml"
185 href="/atom-log" title="Atom feed for test: log" />
183 href="/atom-log" title="Atom feed for test: log" />
186 <link rel="alternate" type="application/rss+xml"
184 <link rel="alternate" type="application/rss+xml"
187 href="/rss-log" title="RSS feed for test: log" />
185 href="/rss-log" title="RSS feed for test: log" />
188 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
186 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
189 </head>
187 </head>
190 <body>
188 <body>
191
189
192 <div class="container">
190 <div class="container">
193 <div class="menu">
191 <div class="menu">
194 <div class="logo">
192 <div class="logo">
195 <a href="http://mercurial.selenic.com/">
193 <a href="http://mercurial.selenic.com/">
196 <img src="/static/hglogo.png" alt="mercurial" /></a>
194 <img src="/static/hglogo.png" alt="mercurial" /></a>
197 </div>
195 </div>
198 <ul>
196 <ul>
199 <li><a href="/shortlog/000000000000">log</a></li>
197 <li><a href="/shortlog/000000000000">log</a></li>
200 <li class="active">graph</li>
198 <li class="active">graph</li>
201 <li><a href="/tags">tags</a></li>
199 <li><a href="/tags">tags</a></li>
202 <li><a href="/branches">branches</a></li>
200 <li><a href="/branches">branches</a></li>
203 <li><a href="/help">help</a></li>
204 </ul>
201 </ul>
205 <ul>
202 <ul>
206 <li><a href="/rev/000000000000">changeset</a></li>
203 <li><a href="/rev/000000000000">changeset</a></li>
207 <li><a href="/file/000000000000">browse</a></li>
204 <li><a href="/file/000000000000">browse</a></li>
208 </ul>
205 </ul>
209 <ul>
206 <ul>
210 <li><a href="/help">help</a></li>
207 <li><a href="/help">help</a></li>
211 </ul>
208 </ul>
212 </div>
209 </div>
213
210
214 <div class="main">
211 <div class="main">
215 <h2><a href="/">test</a></h2>
212 <h2><a href="/">test</a></h2>
216 <h3>graph</h3>
213 <h3>graph</h3>
217
214
218 <form class="search" action="/log">
215 <form class="search" action="/log">
219
216
220 <p><input name="rev" id="search1" type="text" size="30" /></p>
217 <p><input name="rev" id="search1" type="text" size="30" /></p>
221 <div id="hint">find changesets by author, revision,
218 <div id="hint">find changesets by author, revision,
222 files, or words in the commit message</div>
219 files, or words in the commit message</div>
223 </form>
220 </form>
224
221
225 <div class="navigate">
222 <div class="navigate">
226 <a href="/graph/-1?revcount=30">less</a>
223 <a href="/graph/-1?revcount=30">less</a>
227 <a href="/graph/-1?revcount=120">more</a>
224 <a href="/graph/-1?revcount=120">more</a>
228 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
225 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
229 </div>
226 </div>
230
227
231 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
228 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
232
229
233 <div id="wrapper">
230 <div id="wrapper">
234 <ul id="nodebgs"></ul>
231 <ul id="nodebgs"></ul>
235 <canvas id="graph" width="224" height="12"></canvas>
232 <canvas id="graph" width="224" height="12"></canvas>
236 <ul id="graphnodes"></ul>
233 <ul id="graphnodes"></ul>
237 </div>
234 </div>
238
235
239 <script type="text/javascript" src="/static/graph.js"></script>
236 <script type="text/javascript" src="/static/graph.js"></script>
240 <script type="text/javascript">
237 <script type="text/javascript">
241 <!-- hide script content
238 <!-- hide script content
242
239
243 var data = [];
240 var data = [];
244 var graph = new Graph();
241 var graph = new Graph();
245 graph.scale(39);
242 graph.scale(39);
246
243
247 graph.edge = function(x0, y0, x1, y1, color) {
244 graph.edge = function(x0, y0, x1, y1, color) {
248
245
249 this.setColor(color, 0.0, 0.65);
246 this.setColor(color, 0.0, 0.65);
250 this.ctx.beginPath();
247 this.ctx.beginPath();
251 this.ctx.moveTo(x0, y0);
248 this.ctx.moveTo(x0, y0);
252 this.ctx.lineTo(x1, y1);
249 this.ctx.lineTo(x1, y1);
253 this.ctx.stroke();
250 this.ctx.stroke();
254
251
255 }
252 }
256
253
257 var revlink = '<li style="_STYLE"><span class="desc">';
254 var revlink = '<li style="_STYLE"><span class="desc">';
258 revlink += '<a href="/rev/_NODEID" title="_NODEID">_DESC</a>';
255 revlink += '<a href="/rev/_NODEID" title="_NODEID">_DESC</a>';
259 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
256 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
260
257
261 graph.vertex = function(x, y, color, parity, cur) {
258 graph.vertex = function(x, y, color, parity, cur) {
262
259
263 this.ctx.beginPath();
260 this.ctx.beginPath();
264 color = this.setColor(color, 0.25, 0.75);
261 color = this.setColor(color, 0.25, 0.75);
265 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
262 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
266 this.ctx.fill();
263 this.ctx.fill();
267
264
268 var bg = '<li class="bg parity' + parity + '"></li>';
265 var bg = '<li class="bg parity' + parity + '"></li>';
269 var left = (this.columns + 1) * this.bg_height;
266 var left = (this.columns + 1) * this.bg_height;
270 var nstyle = 'padding-left: ' + left + 'px;';
267 var nstyle = 'padding-left: ' + left + 'px;';
271 var item = revlink.replace(/_STYLE/, nstyle);
268 var item = revlink.replace(/_STYLE/, nstyle);
272 item = item.replace(/_PARITY/, 'parity' + parity);
269 item = item.replace(/_PARITY/, 'parity' + parity);
273 item = item.replace(/_NODEID/, cur[0]);
270 item = item.replace(/_NODEID/, cur[0]);
274 item = item.replace(/_NODEID/, cur[0]);
271 item = item.replace(/_NODEID/, cur[0]);
275 item = item.replace(/_DESC/, cur[3]);
272 item = item.replace(/_DESC/, cur[3]);
276 item = item.replace(/_USER/, cur[4]);
273 item = item.replace(/_USER/, cur[4]);
277 item = item.replace(/_DATE/, cur[5]);
274 item = item.replace(/_DATE/, cur[5]);
278
275
279 var tagspan = '';
276 var tagspan = '';
280 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
277 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
281 tagspan = '<span class="logtags">';
278 tagspan = '<span class="logtags">';
282 if (cur[6][1]) {
279 if (cur[6][1]) {
283 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
280 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
284 tagspan += cur[6][0] + '</span> ';
281 tagspan += cur[6][0] + '</span> ';
285 } else if (!cur[6][1] && cur[6][0] != 'default') {
282 } else if (!cur[6][1] && cur[6][0] != 'default') {
286 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
283 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
287 tagspan += cur[6][0] + '</span> ';
284 tagspan += cur[6][0] + '</span> ';
288 }
285 }
289 if (cur[7].length) {
286 if (cur[7].length) {
290 for (var t in cur[7]) {
287 for (var t in cur[7]) {
291 var tag = cur[7][t];
288 var tag = cur[7][t];
292 tagspan += '<span class="tag">' + tag + '</span> ';
289 tagspan += '<span class="tag">' + tag + '</span> ';
293 }
290 }
294 }
291 }
295 tagspan += '</span>';
292 tagspan += '</span>';
296 }
293 }
297
294
298 item = item.replace(/_TAGS/, tagspan);
295 item = item.replace(/_TAGS/, tagspan);
299 return [bg, item];
296 return [bg, item];
300
297
301 }
298 }
302
299
303 graph.render(data);
300 graph.render(data);
304
301
305 // stop hiding script -->
302 // stop hiding script -->
306 </script>
303 </script>
307
304
308 <div class="navigate">
305 <div class="navigate">
309 <a href="/graph/-1?revcount=30">less</a>
306 <a href="/graph/-1?revcount=30">less</a>
310 <a href="/graph/-1?revcount=120">more</a>
307 <a href="/graph/-1?revcount=120">more</a>
311 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
308 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
312 </div>
309 </div>
313
310
314 </div>
311 </div>
315 </div>
312 </div>
316
313
317
314
318
315
319 </body>
316 </body>
320 </html>
317 </html>
321
318
322 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file')
319 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file')
323 200 Script output follows
320 200 Script output follows
324
321
325 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
322 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
326 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
323 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
327 <head>
324 <head>
328 <link rel="icon" href="/static/hgicon.png" type="image/png" />
325 <link rel="icon" href="/static/hgicon.png" type="image/png" />
329 <meta name="robots" content="index, nofollow" />
326 <meta name="robots" content="index, nofollow" />
330 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
327 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
331
328
332 <title>test: 000000000000 /</title>
329 <title>test: 000000000000 /</title>
333 </head>
330 </head>
334 <body>
331 <body>
335
332
336 <div class="container">
333 <div class="container">
337 <div class="menu">
334 <div class="menu">
338 <div class="logo">
335 <div class="logo">
339 <a href="http://mercurial.selenic.com/">
336 <a href="http://mercurial.selenic.com/">
340 <img src="/static/hglogo.png" alt="mercurial" /></a>
337 <img src="/static/hglogo.png" alt="mercurial" /></a>
341 </div>
338 </div>
342 <ul>
339 <ul>
343 <li><a href="/shortlog/000000000000">log</a></li>
340 <li><a href="/shortlog/000000000000">log</a></li>
344 <li><a href="/graph/000000000000">graph</a></li>
341 <li><a href="/graph/000000000000">graph</a></li>
345 <li><a href="/tags">tags</a></li>
342 <li><a href="/tags">tags</a></li>
346 <li><a href="/branches">branches</a></li>
343 <li><a href="/branches">branches</a></li>
347 <li><a href="/help">help</a></li>
348 </ul>
344 </ul>
349 <ul>
345 <ul>
350 <li><a href="/rev/000000000000">changeset</a></li>
346 <li><a href="/rev/000000000000">changeset</a></li>
351 <li class="active">browse</li>
347 <li class="active">browse</li>
352 </ul>
348 </ul>
353 <ul>
349 <ul>
354
350
355 </ul>
351 </ul>
356 <ul>
352 <ul>
357 <li><a href="/help">help</a></li>
353 <li><a href="/help">help</a></li>
358 </ul>
354 </ul>
355 <ul>
356 <li><a href="/help">help</a></li>
357 </ul>
359 </div>
358 </div>
360
359
361 <div class="main">
360 <div class="main">
362 <h2><a href="/">test</a></h2>
361 <h2><a href="/">test</a></h2>
363 <h3>directory / @ -1:000000000000 <span class="tag">tip</span> </h3>
362 <h3>directory / @ -1:000000000000 <span class="tag">tip</span> </h3>
364
363
365 <form class="search" action="/log">
364 <form class="search" action="/log">
366
365
367 <p><input name="rev" id="search1" type="text" size="30" /></p>
366 <p><input name="rev" id="search1" type="text" size="30" /></p>
368 <div id="hint">find changesets by author, revision,
367 <div id="hint">find changesets by author, revision,
369 files, or words in the commit message</div>
368 files, or words in the commit message</div>
370 </form>
369 </form>
371
370
372 <table class="bigtable">
371 <table class="bigtable">
373 <tr>
372 <tr>
374 <th class="name">name</th>
373 <th class="name">name</th>
375 <th class="size">size</th>
374 <th class="size">size</th>
376 <th class="permissions">permissions</th>
375 <th class="permissions">permissions</th>
377 </tr>
376 </tr>
378 <tr class="fileline parity0">
377 <tr class="fileline parity0">
379 <td class="name"><a href="/file/000000000000/">[up]</a></td>
378 <td class="name"><a href="/file/000000000000/">[up]</a></td>
380 <td class="size"></td>
379 <td class="size"></td>
381 <td class="permissions">drwxr-xr-x</td>
380 <td class="permissions">drwxr-xr-x</td>
382 </tr>
381 </tr>
383
382
384
383
385 </table>
384 </table>
386 </div>
385 </div>
387 </div>
386 </div>
388
387
389
388
390 </body>
389 </body>
391 </html>
390 </html>
392
391
@@ -1,647 +1,661 b''
1
1
2 $ hg init test
2 $ hg init test
3 $ cd test
3 $ cd test
4 $ echo b > b
4 $ echo b > b
5 $ hg ci -Am "b"
5 $ hg ci -Am "b"
6 adding b
6 adding b
7 $ echo a > a
7 $ echo a > a
8 $ hg ci -Am "first a"
8 $ hg ci -Am "first a"
9 adding a
9 adding a
10 $ hg rm a
10 $ hg rm a
11 $ hg ci -m "del a"
11 $ hg ci -m "del a"
12 $ echo b > a
12 $ echo b > a
13 $ hg ci -Am "second a"
13 $ hg ci -Am "second a"
14 adding a
14 adding a
15 $ hg rm a
15 $ hg rm a
16 $ hg ci -m "del2 a"
16 $ hg ci -m "del2 a"
17 $ hg mv b c
17 $ hg mv b c
18 $ hg ci -m "mv b"
18 $ hg ci -m "mv b"
19 $ echo c >> c
19 $ echo c >> c
20 $ hg ci -m "change c"
20 $ hg ci -m "change c"
21 $ hg log -p
21 $ hg log -p
22 changeset: 6:b7682196df1c
22 changeset: 6:b7682196df1c
23 tag: tip
23 tag: tip
24 user: test
24 user: test
25 date: Thu Jan 01 00:00:00 1970 +0000
25 date: Thu Jan 01 00:00:00 1970 +0000
26 summary: change c
26 summary: change c
27
27
28 diff -r 1a6696706df2 -r b7682196df1c c
28 diff -r 1a6696706df2 -r b7682196df1c c
29 --- a/c Thu Jan 01 00:00:00 1970 +0000
29 --- a/c Thu Jan 01 00:00:00 1970 +0000
30 +++ b/c Thu Jan 01 00:00:00 1970 +0000
30 +++ b/c Thu Jan 01 00:00:00 1970 +0000
31 @@ -1,1 +1,2 @@
31 @@ -1,1 +1,2 @@
32 b
32 b
33 +c
33 +c
34
34
35 changeset: 5:1a6696706df2
35 changeset: 5:1a6696706df2
36 user: test
36 user: test
37 date: Thu Jan 01 00:00:00 1970 +0000
37 date: Thu Jan 01 00:00:00 1970 +0000
38 summary: mv b
38 summary: mv b
39
39
40 diff -r 52e848cdcd88 -r 1a6696706df2 b
40 diff -r 52e848cdcd88 -r 1a6696706df2 b
41 --- a/b Thu Jan 01 00:00:00 1970 +0000
41 --- a/b Thu Jan 01 00:00:00 1970 +0000
42 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
42 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
43 @@ -1,1 +0,0 @@
43 @@ -1,1 +0,0 @@
44 -b
44 -b
45 diff -r 52e848cdcd88 -r 1a6696706df2 c
45 diff -r 52e848cdcd88 -r 1a6696706df2 c
46 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
46 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
47 +++ b/c Thu Jan 01 00:00:00 1970 +0000
47 +++ b/c Thu Jan 01 00:00:00 1970 +0000
48 @@ -0,0 +1,1 @@
48 @@ -0,0 +1,1 @@
49 +b
49 +b
50
50
51 changeset: 4:52e848cdcd88
51 changeset: 4:52e848cdcd88
52 user: test
52 user: test
53 date: Thu Jan 01 00:00:00 1970 +0000
53 date: Thu Jan 01 00:00:00 1970 +0000
54 summary: del2 a
54 summary: del2 a
55
55
56 diff -r 01de2d66a28d -r 52e848cdcd88 a
56 diff -r 01de2d66a28d -r 52e848cdcd88 a
57 --- a/a Thu Jan 01 00:00:00 1970 +0000
57 --- a/a Thu Jan 01 00:00:00 1970 +0000
58 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
58 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
59 @@ -1,1 +0,0 @@
59 @@ -1,1 +0,0 @@
60 -b
60 -b
61
61
62 changeset: 3:01de2d66a28d
62 changeset: 3:01de2d66a28d
63 user: test
63 user: test
64 date: Thu Jan 01 00:00:00 1970 +0000
64 date: Thu Jan 01 00:00:00 1970 +0000
65 summary: second a
65 summary: second a
66
66
67 diff -r be3ebcc91739 -r 01de2d66a28d a
67 diff -r be3ebcc91739 -r 01de2d66a28d a
68 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
68 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
69 +++ b/a Thu Jan 01 00:00:00 1970 +0000
69 +++ b/a Thu Jan 01 00:00:00 1970 +0000
70 @@ -0,0 +1,1 @@
70 @@ -0,0 +1,1 @@
71 +b
71 +b
72
72
73 changeset: 2:be3ebcc91739
73 changeset: 2:be3ebcc91739
74 user: test
74 user: test
75 date: Thu Jan 01 00:00:00 1970 +0000
75 date: Thu Jan 01 00:00:00 1970 +0000
76 summary: del a
76 summary: del a
77
77
78 diff -r 5ed941583260 -r be3ebcc91739 a
78 diff -r 5ed941583260 -r be3ebcc91739 a
79 --- a/a Thu Jan 01 00:00:00 1970 +0000
79 --- a/a Thu Jan 01 00:00:00 1970 +0000
80 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
80 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
81 @@ -1,1 +0,0 @@
81 @@ -1,1 +0,0 @@
82 -a
82 -a
83
83
84 changeset: 1:5ed941583260
84 changeset: 1:5ed941583260
85 user: test
85 user: test
86 date: Thu Jan 01 00:00:00 1970 +0000
86 date: Thu Jan 01 00:00:00 1970 +0000
87 summary: first a
87 summary: first a
88
88
89 diff -r 6563da9dcf87 -r 5ed941583260 a
89 diff -r 6563da9dcf87 -r 5ed941583260 a
90 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
90 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
91 +++ b/a Thu Jan 01 00:00:00 1970 +0000
91 +++ b/a Thu Jan 01 00:00:00 1970 +0000
92 @@ -0,0 +1,1 @@
92 @@ -0,0 +1,1 @@
93 +a
93 +a
94
94
95 changeset: 0:6563da9dcf87
95 changeset: 0:6563da9dcf87
96 user: test
96 user: test
97 date: Thu Jan 01 00:00:00 1970 +0000
97 date: Thu Jan 01 00:00:00 1970 +0000
98 summary: b
98 summary: b
99
99
100 diff -r 000000000000 -r 6563da9dcf87 b
100 diff -r 000000000000 -r 6563da9dcf87 b
101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 +++ b/b Thu Jan 01 00:00:00 1970 +0000
102 +++ b/b Thu Jan 01 00:00:00 1970 +0000
103 @@ -0,0 +1,1 @@
103 @@ -0,0 +1,1 @@
104 +b
104 +b
105
105
106 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
106 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
107 $ cat hg.pid >> $DAEMON_PIDS
107 $ cat hg.pid >> $DAEMON_PIDS
108
108
109 tip - two revisions
109 tip - two revisions
110
110
111 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/a')
111 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/a')
112 200 Script output follows
112 200 Script output follows
113
113
114 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
114 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
115 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
115 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
116 <head>
116 <head>
117 <link rel="icon" href="/static/hgicon.png" type="image/png" />
117 <link rel="icon" href="/static/hgicon.png" type="image/png" />
118 <meta name="robots" content="index, nofollow" />
118 <meta name="robots" content="index, nofollow" />
119 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
119 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
120
120
121 <title>test: a history</title>
121 <title>test: a history</title>
122 <link rel="alternate" type="application/atom+xml"
122 <link rel="alternate" type="application/atom+xml"
123 href="/atom-log/tip/a" title="Atom feed for test:a" />
123 href="/atom-log/tip/a" title="Atom feed for test:a" />
124 <link rel="alternate" type="application/rss+xml"
124 <link rel="alternate" type="application/rss+xml"
125 href="/rss-log/tip/a" title="RSS feed for test:a" />
125 href="/rss-log/tip/a" title="RSS feed for test:a" />
126 </head>
126 </head>
127 <body>
127 <body>
128
128
129 <div class="container">
129 <div class="container">
130 <div class="menu">
130 <div class="menu">
131 <div class="logo">
131 <div class="logo">
132 <a href="http://mercurial.selenic.com/">
132 <a href="http://mercurial.selenic.com/">
133 <img src="/static/hglogo.png" alt="mercurial" /></a>
133 <img src="/static/hglogo.png" alt="mercurial" /></a>
134 </div>
134 </div>
135 <ul>
135 <ul>
136 <li><a href="/shortlog/01de2d66a28d">log</a></li>
136 <li><a href="/shortlog/01de2d66a28d">log</a></li>
137 <li><a href="/graph/01de2d66a28d">graph</a></li>
137 <li><a href="/graph/01de2d66a28d">graph</a></li>
138 <li><a href="/tags">tags</a></li>
138 <li><a href="/tags">tags</a></li>
139 <li><a href="/branches">branches</a></li>
139 <li><a href="/branches">branches</a></li>
140 </ul>
140 </ul>
141 <ul>
141 <ul>
142 <li><a href="/rev/01de2d66a28d">changeset</a></li>
142 <li><a href="/rev/01de2d66a28d">changeset</a></li>
143 <li><a href="/file/01de2d66a28d">browse</a></li>
143 <li><a href="/file/01de2d66a28d">browse</a></li>
144 </ul>
144 </ul>
145 <ul>
145 <ul>
146 <li><a href="/file/01de2d66a28d/a">file</a></li>
146 <li><a href="/file/01de2d66a28d/a">file</a></li>
147 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
147 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
148 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
148 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
149 <li class="active">file log</li>
149 <li class="active">file log</li>
150 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
150 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
151 </ul>
151 </ul>
152 <ul>
153 <li><a href="/help">help</a></li>
154 </ul>
152 </div>
155 </div>
153
156
154 <div class="main">
157 <div class="main">
155 <h2><a href="/">test</a></h2>
158 <h2><a href="/">test</a></h2>
156 <h3>log a</h3>
159 <h3>log a</h3>
157
160
158 <form class="search" action="/log">
161 <form class="search" action="/log">
159
162
160 <p><input name="rev" id="search1" type="text" size="30" /></p>
163 <p><input name="rev" id="search1" type="text" size="30" /></p>
161 <div id="hint">find changesets by author, revision,
164 <div id="hint">find changesets by author, revision,
162 files, or words in the commit message</div>
165 files, or words in the commit message</div>
163 </form>
166 </form>
164
167
165 <div class="navigate">
168 <div class="navigate">
166 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
169 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
167 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
170 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
168 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
171 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
169
172
170 <table class="bigtable">
173 <table class="bigtable">
171 <tr>
174 <tr>
172 <th class="age">age</th>
175 <th class="age">age</th>
173 <th class="author">author</th>
176 <th class="author">author</th>
174 <th class="description">description</th>
177 <th class="description">description</th>
175 </tr>
178 </tr>
176 <tr class="parity0">
179 <tr class="parity0">
177 <td class="age">1970-01-01</td>
180 <td class="age">1970-01-01</td>
178 <td class="author">test</td>
181 <td class="author">test</td>
179 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
182 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
180 </tr>
183 </tr>
181 <tr class="parity1">
184 <tr class="parity1">
182 <td class="age">1970-01-01</td>
185 <td class="age">1970-01-01</td>
183 <td class="author">test</td>
186 <td class="author">test</td>
184 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
187 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
185 </tr>
188 </tr>
186
189
187 </table>
190 </table>
188
191
189 <div class="navigate">
192 <div class="navigate">
190 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
193 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
191 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
194 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
192 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
195 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
193 </div>
196 </div>
194
197
195 </div>
198 </div>
196 </div>
199 </div>
197
200
198
201
199
202
200 </body>
203 </body>
201 </html>
204 </html>
202
205
203
206
204 second version - two revisions
207 second version - two revisions
205
208
206 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/3/a')
209 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/3/a')
207 200 Script output follows
210 200 Script output follows
208
211
209 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
212 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
210 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
213 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
211 <head>
214 <head>
212 <link rel="icon" href="/static/hgicon.png" type="image/png" />
215 <link rel="icon" href="/static/hgicon.png" type="image/png" />
213 <meta name="robots" content="index, nofollow" />
216 <meta name="robots" content="index, nofollow" />
214 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
217 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
215
218
216 <title>test: a history</title>
219 <title>test: a history</title>
217 <link rel="alternate" type="application/atom+xml"
220 <link rel="alternate" type="application/atom+xml"
218 href="/atom-log/tip/a" title="Atom feed for test:a" />
221 href="/atom-log/tip/a" title="Atom feed for test:a" />
219 <link rel="alternate" type="application/rss+xml"
222 <link rel="alternate" type="application/rss+xml"
220 href="/rss-log/tip/a" title="RSS feed for test:a" />
223 href="/rss-log/tip/a" title="RSS feed for test:a" />
221 </head>
224 </head>
222 <body>
225 <body>
223
226
224 <div class="container">
227 <div class="container">
225 <div class="menu">
228 <div class="menu">
226 <div class="logo">
229 <div class="logo">
227 <a href="http://mercurial.selenic.com/">
230 <a href="http://mercurial.selenic.com/">
228 <img src="/static/hglogo.png" alt="mercurial" /></a>
231 <img src="/static/hglogo.png" alt="mercurial" /></a>
229 </div>
232 </div>
230 <ul>
233 <ul>
231 <li><a href="/shortlog/01de2d66a28d">log</a></li>
234 <li><a href="/shortlog/01de2d66a28d">log</a></li>
232 <li><a href="/graph/01de2d66a28d">graph</a></li>
235 <li><a href="/graph/01de2d66a28d">graph</a></li>
233 <li><a href="/tags">tags</a></li>
236 <li><a href="/tags">tags</a></li>
234 <li><a href="/branches">branches</a></li>
237 <li><a href="/branches">branches</a></li>
235 </ul>
238 </ul>
236 <ul>
239 <ul>
237 <li><a href="/rev/01de2d66a28d">changeset</a></li>
240 <li><a href="/rev/01de2d66a28d">changeset</a></li>
238 <li><a href="/file/01de2d66a28d">browse</a></li>
241 <li><a href="/file/01de2d66a28d">browse</a></li>
239 </ul>
242 </ul>
240 <ul>
243 <ul>
241 <li><a href="/file/01de2d66a28d/a">file</a></li>
244 <li><a href="/file/01de2d66a28d/a">file</a></li>
242 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
245 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
243 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
246 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
244 <li class="active">file log</li>
247 <li class="active">file log</li>
245 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
248 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
246 </ul>
249 </ul>
250 <ul>
251 <li><a href="/help">help</a></li>
252 </ul>
247 </div>
253 </div>
248
254
249 <div class="main">
255 <div class="main">
250 <h2><a href="/">test</a></h2>
256 <h2><a href="/">test</a></h2>
251 <h3>log a</h3>
257 <h3>log a</h3>
252
258
253 <form class="search" action="/log">
259 <form class="search" action="/log">
254
260
255 <p><input name="rev" id="search1" type="text" size="30" /></p>
261 <p><input name="rev" id="search1" type="text" size="30" /></p>
256 <div id="hint">find changesets by author, revision,
262 <div id="hint">find changesets by author, revision,
257 files, or words in the commit message</div>
263 files, or words in the commit message</div>
258 </form>
264 </form>
259
265
260 <div class="navigate">
266 <div class="navigate">
261 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
267 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
262 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
268 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
263 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
269 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
264
270
265 <table class="bigtable">
271 <table class="bigtable">
266 <tr>
272 <tr>
267 <th class="age">age</th>
273 <th class="age">age</th>
268 <th class="author">author</th>
274 <th class="author">author</th>
269 <th class="description">description</th>
275 <th class="description">description</th>
270 </tr>
276 </tr>
271 <tr class="parity0">
277 <tr class="parity0">
272 <td class="age">1970-01-01</td>
278 <td class="age">1970-01-01</td>
273 <td class="author">test</td>
279 <td class="author">test</td>
274 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
280 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
275 </tr>
281 </tr>
276 <tr class="parity1">
282 <tr class="parity1">
277 <td class="age">1970-01-01</td>
283 <td class="age">1970-01-01</td>
278 <td class="author">test</td>
284 <td class="author">test</td>
279 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
285 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
280 </tr>
286 </tr>
281
287
282 </table>
288 </table>
283
289
284 <div class="navigate">
290 <div class="navigate">
285 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
291 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
286 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
292 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
287 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
293 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
288 </div>
294 </div>
289
295
290 </div>
296 </div>
291 </div>
297 </div>
292
298
293
299
294
300
295 </body>
301 </body>
296 </html>
302 </html>
297
303
298
304
299 first deleted - one revision
305 first deleted - one revision
300
306
301 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/2/a')
307 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/2/a')
302 200 Script output follows
308 200 Script output follows
303
309
304 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
310 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
305 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
311 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
306 <head>
312 <head>
307 <link rel="icon" href="/static/hgicon.png" type="image/png" />
313 <link rel="icon" href="/static/hgicon.png" type="image/png" />
308 <meta name="robots" content="index, nofollow" />
314 <meta name="robots" content="index, nofollow" />
309 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
315 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
310
316
311 <title>test: a history</title>
317 <title>test: a history</title>
312 <link rel="alternate" type="application/atom+xml"
318 <link rel="alternate" type="application/atom+xml"
313 href="/atom-log/tip/a" title="Atom feed for test:a" />
319 href="/atom-log/tip/a" title="Atom feed for test:a" />
314 <link rel="alternate" type="application/rss+xml"
320 <link rel="alternate" type="application/rss+xml"
315 href="/rss-log/tip/a" title="RSS feed for test:a" />
321 href="/rss-log/tip/a" title="RSS feed for test:a" />
316 </head>
322 </head>
317 <body>
323 <body>
318
324
319 <div class="container">
325 <div class="container">
320 <div class="menu">
326 <div class="menu">
321 <div class="logo">
327 <div class="logo">
322 <a href="http://mercurial.selenic.com/">
328 <a href="http://mercurial.selenic.com/">
323 <img src="/static/hglogo.png" alt="mercurial" /></a>
329 <img src="/static/hglogo.png" alt="mercurial" /></a>
324 </div>
330 </div>
325 <ul>
331 <ul>
326 <li><a href="/shortlog/5ed941583260">log</a></li>
332 <li><a href="/shortlog/5ed941583260">log</a></li>
327 <li><a href="/graph/5ed941583260">graph</a></li>
333 <li><a href="/graph/5ed941583260">graph</a></li>
328 <li><a href="/tags">tags</a></li>
334 <li><a href="/tags">tags</a></li>
329 <li><a href="/branches">branches</a></li>
335 <li><a href="/branches">branches</a></li>
330 </ul>
336 </ul>
331 <ul>
337 <ul>
332 <li><a href="/rev/5ed941583260">changeset</a></li>
338 <li><a href="/rev/5ed941583260">changeset</a></li>
333 <li><a href="/file/5ed941583260">browse</a></li>
339 <li><a href="/file/5ed941583260">browse</a></li>
334 </ul>
340 </ul>
335 <ul>
341 <ul>
336 <li><a href="/file/5ed941583260/a">file</a></li>
342 <li><a href="/file/5ed941583260/a">file</a></li>
337 <li><a href="/diff/5ed941583260/a">diff</a></li>
343 <li><a href="/diff/5ed941583260/a">diff</a></li>
338 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
344 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
339 <li class="active">file log</li>
345 <li class="active">file log</li>
340 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
346 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
341 </ul>
347 </ul>
348 <ul>
349 <li><a href="/help">help</a></li>
350 </ul>
342 </div>
351 </div>
343
352
344 <div class="main">
353 <div class="main">
345 <h2><a href="/">test</a></h2>
354 <h2><a href="/">test</a></h2>
346 <h3>log a</h3>
355 <h3>log a</h3>
347
356
348 <form class="search" action="/log">
357 <form class="search" action="/log">
349
358
350 <p><input name="rev" id="search1" type="text" size="30" /></p>
359 <p><input name="rev" id="search1" type="text" size="30" /></p>
351 <div id="hint">find changesets by author, revision,
360 <div id="hint">find changesets by author, revision,
352 files, or words in the commit message</div>
361 files, or words in the commit message</div>
353 </form>
362 </form>
354
363
355 <div class="navigate">
364 <div class="navigate">
356 <a href="/log/5ed941583260/a?revcount=30">less</a>
365 <a href="/log/5ed941583260/a?revcount=30">less</a>
357 <a href="/log/5ed941583260/a?revcount=120">more</a>
366 <a href="/log/5ed941583260/a?revcount=120">more</a>
358 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
367 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
359
368
360 <table class="bigtable">
369 <table class="bigtable">
361 <tr>
370 <tr>
362 <th class="age">age</th>
371 <th class="age">age</th>
363 <th class="author">author</th>
372 <th class="author">author</th>
364 <th class="description">description</th>
373 <th class="description">description</th>
365 </tr>
374 </tr>
366 <tr class="parity0">
375 <tr class="parity0">
367 <td class="age">1970-01-01</td>
376 <td class="age">1970-01-01</td>
368 <td class="author">test</td>
377 <td class="author">test</td>
369 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
378 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
370 </tr>
379 </tr>
371
380
372 </table>
381 </table>
373
382
374 <div class="navigate">
383 <div class="navigate">
375 <a href="/log/5ed941583260/a?revcount=30">less</a>
384 <a href="/log/5ed941583260/a?revcount=30">less</a>
376 <a href="/log/5ed941583260/a?revcount=120">more</a>
385 <a href="/log/5ed941583260/a?revcount=120">more</a>
377 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
386 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
378 </div>
387 </div>
379
388
380 </div>
389 </div>
381 </div>
390 </div>
382
391
383
392
384
393
385 </body>
394 </body>
386 </html>
395 </html>
387
396
388
397
389 first version - one revision
398 first version - one revision
390
399
391 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/1/a')
400 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/1/a')
392 200 Script output follows
401 200 Script output follows
393
402
394 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
403 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
395 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
404 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
396 <head>
405 <head>
397 <link rel="icon" href="/static/hgicon.png" type="image/png" />
406 <link rel="icon" href="/static/hgicon.png" type="image/png" />
398 <meta name="robots" content="index, nofollow" />
407 <meta name="robots" content="index, nofollow" />
399 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
408 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
400
409
401 <title>test: a history</title>
410 <title>test: a history</title>
402 <link rel="alternate" type="application/atom+xml"
411 <link rel="alternate" type="application/atom+xml"
403 href="/atom-log/tip/a" title="Atom feed for test:a" />
412 href="/atom-log/tip/a" title="Atom feed for test:a" />
404 <link rel="alternate" type="application/rss+xml"
413 <link rel="alternate" type="application/rss+xml"
405 href="/rss-log/tip/a" title="RSS feed for test:a" />
414 href="/rss-log/tip/a" title="RSS feed for test:a" />
406 </head>
415 </head>
407 <body>
416 <body>
408
417
409 <div class="container">
418 <div class="container">
410 <div class="menu">
419 <div class="menu">
411 <div class="logo">
420 <div class="logo">
412 <a href="http://mercurial.selenic.com/">
421 <a href="http://mercurial.selenic.com/">
413 <img src="/static/hglogo.png" alt="mercurial" /></a>
422 <img src="/static/hglogo.png" alt="mercurial" /></a>
414 </div>
423 </div>
415 <ul>
424 <ul>
416 <li><a href="/shortlog/5ed941583260">log</a></li>
425 <li><a href="/shortlog/5ed941583260">log</a></li>
417 <li><a href="/graph/5ed941583260">graph</a></li>
426 <li><a href="/graph/5ed941583260">graph</a></li>
418 <li><a href="/tags">tags</a></li>
427 <li><a href="/tags">tags</a></li>
419 <li><a href="/branches">branches</a></li>
428 <li><a href="/branches">branches</a></li>
420 </ul>
429 </ul>
421 <ul>
430 <ul>
422 <li><a href="/rev/5ed941583260">changeset</a></li>
431 <li><a href="/rev/5ed941583260">changeset</a></li>
423 <li><a href="/file/5ed941583260">browse</a></li>
432 <li><a href="/file/5ed941583260">browse</a></li>
424 </ul>
433 </ul>
425 <ul>
434 <ul>
426 <li><a href="/file/5ed941583260/a">file</a></li>
435 <li><a href="/file/5ed941583260/a">file</a></li>
427 <li><a href="/diff/5ed941583260/a">diff</a></li>
436 <li><a href="/diff/5ed941583260/a">diff</a></li>
428 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
437 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
429 <li class="active">file log</li>
438 <li class="active">file log</li>
430 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
439 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
431 </ul>
440 </ul>
441 <ul>
442 <li><a href="/help">help</a></li>
443 </ul>
432 </div>
444 </div>
433
445
434 <div class="main">
446 <div class="main">
435 <h2><a href="/">test</a></h2>
447 <h2><a href="/">test</a></h2>
436 <h3>log a</h3>
448 <h3>log a</h3>
437
449
438 <form class="search" action="/log">
450 <form class="search" action="/log">
439
451
440 <p><input name="rev" id="search1" type="text" size="30" /></p>
452 <p><input name="rev" id="search1" type="text" size="30" /></p>
441 <div id="hint">find changesets by author, revision,
453 <div id="hint">find changesets by author, revision,
442 files, or words in the commit message</div>
454 files, or words in the commit message</div>
443 </form>
455 </form>
444
456
445 <div class="navigate">
457 <div class="navigate">
446 <a href="/log/5ed941583260/a?revcount=30">less</a>
458 <a href="/log/5ed941583260/a?revcount=30">less</a>
447 <a href="/log/5ed941583260/a?revcount=120">more</a>
459 <a href="/log/5ed941583260/a?revcount=120">more</a>
448 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
460 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
449
461
450 <table class="bigtable">
462 <table class="bigtable">
451 <tr>
463 <tr>
452 <th class="age">age</th>
464 <th class="age">age</th>
453 <th class="author">author</th>
465 <th class="author">author</th>
454 <th class="description">description</th>
466 <th class="description">description</th>
455 </tr>
467 </tr>
456 <tr class="parity0">
468 <tr class="parity0">
457 <td class="age">1970-01-01</td>
469 <td class="age">1970-01-01</td>
458 <td class="author">test</td>
470 <td class="author">test</td>
459 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
471 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
460 </tr>
472 </tr>
461
473
462 </table>
474 </table>
463
475
464 <div class="navigate">
476 <div class="navigate">
465 <a href="/log/5ed941583260/a?revcount=30">less</a>
477 <a href="/log/5ed941583260/a?revcount=30">less</a>
466 <a href="/log/5ed941583260/a?revcount=120">more</a>
478 <a href="/log/5ed941583260/a?revcount=120">more</a>
467 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
479 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
468 </div>
480 </div>
469
481
470 </div>
482 </div>
471 </div>
483 </div>
472
484
473
485
474
486
475 </body>
487 </body>
476 </html>
488 </html>
477
489
478
490
479 before addition - error
491 before addition - error
480
492
481 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/0/a')
493 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/0/a')
482 404 Not Found
494 404 Not Found
483
495
484 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
496 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
485 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
497 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
486 <head>
498 <head>
487 <link rel="icon" href="/static/hgicon.png" type="image/png" />
499 <link rel="icon" href="/static/hgicon.png" type="image/png" />
488 <meta name="robots" content="index, nofollow" />
500 <meta name="robots" content="index, nofollow" />
489 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
501 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
490
502
491 <title>test: error</title>
503 <title>test: error</title>
492 </head>
504 </head>
493 <body>
505 <body>
494
506
495 <div class="container">
507 <div class="container">
496 <div class="menu">
508 <div class="menu">
497 <div class="logo">
509 <div class="logo">
498 <a href="http://mercurial.selenic.com/">
510 <a href="http://mercurial.selenic.com/">
499 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
511 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
500 </div>
512 </div>
501 <ul>
513 <ul>
502 <li><a href="/shortlog">log</a></li>
514 <li><a href="/shortlog">log</a></li>
503 <li><a href="/graph">graph</a></li>
515 <li><a href="/graph">graph</a></li>
504 <li><a href="/tags">tags</a></li>
516 <li><a href="/tags">tags</a></li>
505 <li><a href="/branches">branches</a></li>
517 <li><a href="/branches">branches</a></li>
518 <li><a href="/help">help</a></li>
506 </ul>
519 </ul>
507 </div>
520 </div>
508
521
509 <div class="main">
522 <div class="main">
510
523
511 <h2><a href="/">test</a></h2>
524 <h2><a href="/">test</a></h2>
512 <h3>error</h3>
525 <h3>error</h3>
513
526
514 <form class="search" action="/log">
527 <form class="search" action="/log">
515
528
516 <p><input name="rev" id="search1" type="text" size="30"></p>
529 <p><input name="rev" id="search1" type="text" size="30"></p>
517 <div id="hint">find changesets by author, revision,
530 <div id="hint">find changesets by author, revision,
518 files, or words in the commit message</div>
531 files, or words in the commit message</div>
519 </form>
532 </form>
520
533
521 <div class="description">
534 <div class="description">
522 <p>
535 <p>
523 An error occurred while processing your request:
536 An error occurred while processing your request:
524 </p>
537 </p>
525 <p>
538 <p>
526 a@6563da9dcf87: not found in manifest
539 a@6563da9dcf87: not found in manifest
527 </p>
540 </p>
528 </div>
541 </div>
529 </div>
542 </div>
530 </div>
543 </div>
531
544
532
545
533
546
534 </body>
547 </body>
535 </html>
548 </html>
536
549
537 [1]
550 [1]
538
551
539 should show base link, use spartan because it shows it
552 should show base link, use spartan because it shows it
540
553
541 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/c?style=spartan')
554 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/c?style=spartan')
542 200 Script output follows
555 200 Script output follows
543
556
544 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
557 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
545 <html>
558 <html>
546 <head>
559 <head>
547 <link rel="icon" href="/static/hgicon.png" type="image/png">
560 <link rel="icon" href="/static/hgicon.png" type="image/png">
548 <meta name="robots" content="index, nofollow" />
561 <meta name="robots" content="index, nofollow" />
549 <link rel="stylesheet" href="/static/style.css" type="text/css" />
562 <link rel="stylesheet" href="/static/style.css" type="text/css" />
550
563
551 <title>test: c history</title>
564 <title>test: c history</title>
552 <link rel="alternate" type="application/atom+xml"
565 <link rel="alternate" type="application/atom+xml"
553 href="/atom-log/tip/c" title="Atom feed for test:c">
566 href="/atom-log/tip/c" title="Atom feed for test:c">
554 <link rel="alternate" type="application/rss+xml"
567 <link rel="alternate" type="application/rss+xml"
555 href="/rss-log/tip/c" title="RSS feed for test:c">
568 href="/rss-log/tip/c" title="RSS feed for test:c">
556 </head>
569 </head>
557 <body>
570 <body>
558
571
559 <div class="buttons">
572 <div class="buttons">
560 <a href="/log?style=spartan">changelog</a>
573 <a href="/log?style=spartan">changelog</a>
561 <a href="/shortlog?style=spartan">shortlog</a>
574 <a href="/shortlog?style=spartan">shortlog</a>
562 <a href="/graph?style=spartan">graph</a>
575 <a href="/graph?style=spartan">graph</a>
563 <a href="/tags?style=spartan">tags</a>
576 <a href="/tags?style=spartan">tags</a>
564 <a href="/branches?style=spartan">branches</a>
577 <a href="/branches?style=spartan">branches</a>
565 <a href="/file/b7682196df1c/c?style=spartan">file</a>
578 <a href="/file/b7682196df1c/c?style=spartan">file</a>
566 <a href="/annotate/b7682196df1c/c?style=spartan">annotate</a>
579 <a href="/annotate/b7682196df1c/c?style=spartan">annotate</a>
580 <a href="/help?style=spartan">help</a>
567 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
581 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
568 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
582 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
569 </div>
583 </div>
570
584
571 <h2>c revision history</h2>
585 <h2>c revision history</h2>
572
586
573 <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>
587 <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>
574
588
575 <table class="logEntry parity0">
589 <table class="logEntry parity0">
576 <tr>
590 <tr>
577 <th class="age">1970-01-01:</th>
591 <th class="age">1970-01-01:</th>
578 <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
592 <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
579 </tr>
593 </tr>
580 <tr>
594 <tr>
581 <th class="revision">revision 1:</td>
595 <th class="revision">revision 1:</td>
582 <td class="node">
596 <td class="node">
583 <a href="/file/b7682196df1c/c?style=spartan">b7682196df1c</a>
597 <a href="/file/b7682196df1c/c?style=spartan">b7682196df1c</a>
584 <a href="/diff/b7682196df1c/c?style=spartan">(diff)</a>
598 <a href="/diff/b7682196df1c/c?style=spartan">(diff)</a>
585 <a href="/annotate/b7682196df1c/c?style=spartan">(annotate)</a>
599 <a href="/annotate/b7682196df1c/c?style=spartan">(annotate)</a>
586 </td>
600 </td>
587 </tr>
601 </tr>
588
602
589 <tr>
603 <tr>
590 <th class="author">author:</th>
604 <th class="author">author:</th>
591 <td class="author">&#116;&#101;&#115;&#116;</td>
605 <td class="author">&#116;&#101;&#115;&#116;</td>
592 </tr>
606 </tr>
593 <tr>
607 <tr>
594 <th class="date">date:</th>
608 <th class="date">date:</th>
595 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
609 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
596 </tr>
610 </tr>
597 </table>
611 </table>
598
612
599
613
600 <table class="logEntry parity1">
614 <table class="logEntry parity1">
601 <tr>
615 <tr>
602 <th class="age">1970-01-01:</th>
616 <th class="age">1970-01-01:</th>
603 <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
617 <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
604 </tr>
618 </tr>
605 <tr>
619 <tr>
606 <th class="revision">revision 0:</td>
620 <th class="revision">revision 0:</td>
607 <td class="node">
621 <td class="node">
608 <a href="/file/1a6696706df2/c?style=spartan">1a6696706df2</a>
622 <a href="/file/1a6696706df2/c?style=spartan">1a6696706df2</a>
609 <a href="/diff/1a6696706df2/c?style=spartan">(diff)</a>
623 <a href="/diff/1a6696706df2/c?style=spartan">(diff)</a>
610 <a href="/annotate/1a6696706df2/c?style=spartan">(annotate)</a>
624 <a href="/annotate/1a6696706df2/c?style=spartan">(annotate)</a>
611 </td>
625 </td>
612 </tr>
626 </tr>
613
627
614 <tr>
628 <tr>
615 <th>base:</th>
629 <th>base:</th>
616 <td>
630 <td>
617 <a href="/file/1e88685f5dde/b?style=spartan">
631 <a href="/file/1e88685f5dde/b?style=spartan">
618 b@1e88685f5dde
632 b@1e88685f5dde
619 </a>
633 </a>
620 </td>
634 </td>
621 </tr>
635 </tr>
622 <tr>
636 <tr>
623 <th class="author">author:</th>
637 <th class="author">author:</th>
624 <td class="author">&#116;&#101;&#115;&#116;</td>
638 <td class="author">&#116;&#101;&#115;&#116;</td>
625 </tr>
639 </tr>
626 <tr>
640 <tr>
627 <th class="date">date:</th>
641 <th class="date">date:</th>
628 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
642 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
629 </tr>
643 </tr>
630 </table>
644 </table>
631
645
632
646
633
647
634
648
635
649
636 <div class="logo">
650 <div class="logo">
637 <a href="http://mercurial.selenic.com/">
651 <a href="http://mercurial.selenic.com/">
638 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
652 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
639 </div>
653 </div>
640
654
641 </body>
655 </body>
642 </html>
656 </html>
643
657
644
658
645 errors
659 errors
646
660
647 $ cat errors.log
661 $ cat errors.log
@@ -1,202 +1,204 b''
1 setting up repo
1 setting up repo
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo a > a
5 $ echo a > a
6 $ hg ci -Ama
6 $ hg ci -Ama
7 adding a
7 adding a
8 $ hg rm a
8 $ hg rm a
9 $ hg ci -mdel
9 $ hg ci -mdel
10
10
11 set up hgweb
11 set up hgweb
12
12
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
14 $ cat hg.pid >> $DAEMON_PIDS
14 $ cat hg.pid >> $DAEMON_PIDS
15
15
16 revision
16 revision
17
17
18 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/tip'
18 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/tip'
19 200 Script output follows
19 200 Script output follows
20
20
21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
23 <head>
23 <head>
24 <link rel="icon" href="/static/hgicon.png" type="image/png" />
24 <link rel="icon" href="/static/hgicon.png" type="image/png" />
25 <meta name="robots" content="index, nofollow" />
25 <meta name="robots" content="index, nofollow" />
26 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
26 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
27
27
28 <title>test: c78f6c5cbea9</title>
28 <title>test: c78f6c5cbea9</title>
29 </head>
29 </head>
30 <body>
30 <body>
31 <div class="container">
31 <div class="container">
32 <div class="menu">
32 <div class="menu">
33 <div class="logo">
33 <div class="logo">
34 <a href="http://mercurial.selenic.com/">
34 <a href="http://mercurial.selenic.com/">
35 <img src="/static/hglogo.png" alt="mercurial" /></a>
35 <img src="/static/hglogo.png" alt="mercurial" /></a>
36 </div>
36 </div>
37 <ul>
37 <ul>
38 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
38 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
39 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
39 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
40 <li><a href="/tags">tags</a></li>
40 <li><a href="/tags">tags</a></li>
41 <li><a href="/branches">branches</a></li>
41 <li><a href="/branches">branches</a></li>
42 <li><a href="/help">help</a></li>
43 </ul>
42 </ul>
44 <ul>
43 <ul>
45 <li class="active">changeset</li>
44 <li class="active">changeset</li>
46 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
45 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
47 <li><a href="/file/c78f6c5cbea9">browse</a></li>
46 <li><a href="/file/c78f6c5cbea9">browse</a></li>
48 </ul>
47 </ul>
49 <ul>
48 <ul>
50
49
51 </ul>
50 </ul>
52 <ul>
51 <ul>
53 <li><a href="/help">help</a></li>
52 <li><a href="/help">help</a></li>
54 </ul>
53 </ul>
55 </div>
54 </div>
56
55
57 <div class="main">
56 <div class="main">
58
57
59 <h2><a href="/">test</a></h2>
58 <h2><a href="/">test</a></h2>
60 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
59 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
61
60
62 <form class="search" action="/log">
61 <form class="search" action="/log">
63
62
64 <p><input name="rev" id="search1" type="text" size="30" /></p>
63 <p><input name="rev" id="search1" type="text" size="30" /></p>
65 <div id="hint">find changesets by author, revision,
64 <div id="hint">find changesets by author, revision,
66 files, or words in the commit message</div>
65 files, or words in the commit message</div>
67 </form>
66 </form>
68
67
69 <div class="description">del</div>
68 <div class="description">del</div>
70
69
71 <table id="changesetEntry">
70 <table id="changesetEntry">
72 <tr>
71 <tr>
73 <th class="author">author</th>
72 <th class="author">author</th>
74 <td class="author">&#116;&#101;&#115;&#116;</td>
73 <td class="author">&#116;&#101;&#115;&#116;</td>
75 </tr>
74 </tr>
76 <tr>
75 <tr>
77 <th class="date">date</th>
76 <th class="date">date</th>
78 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
77 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
79 <tr>
78 <tr>
80 <th class="author">parents</th>
79 <th class="author">parents</th>
81 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
80 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
82 </tr>
81 </tr>
83 <tr>
82 <tr>
84 <th class="author">children</th>
83 <th class="author">children</th>
85 <td class="author"></td>
84 <td class="author"></td>
86 </tr>
85 </tr>
87 <tr>
86 <tr>
88 <th class="files">files</th>
87 <th class="files">files</th>
89 <td class="files">a </td>
88 <td class="files">a </td>
90 </tr>
89 </tr>
91 </table>
90 </table>
92
91
93 <div class="overflow">
92 <div class="overflow">
94 <div class="sourcefirst"> line diff</div>
93 <div class="sourcefirst"> line diff</div>
95
94
96 <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
95 <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
97 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
96 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
98 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
97 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
99 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
98 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
100 </span></pre></div>
99 </span></pre></div>
101 </div>
100 </div>
102
101
103 </div>
102 </div>
104 </div>
103 </div>
105
104
106
105
107 </body>
106 </body>
108 </html>
107 </html>
109
108
110
109
111 diff removed file
110 diff removed file
112
111
113 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
112 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
114 200 Script output follows
113 200 Script output follows
115
114
116 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
115 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
117 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
116 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
118 <head>
117 <head>
119 <link rel="icon" href="/static/hgicon.png" type="image/png" />
118 <link rel="icon" href="/static/hgicon.png" type="image/png" />
120 <meta name="robots" content="index, nofollow" />
119 <meta name="robots" content="index, nofollow" />
121 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
120 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
122
121
123 <title>test: a diff</title>
122 <title>test: a diff</title>
124 </head>
123 </head>
125 <body>
124 <body>
126
125
127 <div class="container">
126 <div class="container">
128 <div class="menu">
127 <div class="menu">
129 <div class="logo">
128 <div class="logo">
130 <a href="http://mercurial.selenic.com/">
129 <a href="http://mercurial.selenic.com/">
131 <img src="/static/hglogo.png" alt="mercurial" /></a>
130 <img src="/static/hglogo.png" alt="mercurial" /></a>
132 </div>
131 </div>
133 <ul>
132 <ul>
134 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
133 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
135 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
134 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
136 <li><a href="/tags">tags</a></li>
135 <li><a href="/tags">tags</a></li>
137 <li><a href="/branches">branches</a></li>
136 <li><a href="/branches">branches</a></li>
138 </ul>
137 </ul>
139 <ul>
138 <ul>
140 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
139 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
141 <li><a href="/file/c78f6c5cbea9">browse</a></li>
140 <li><a href="/file/c78f6c5cbea9">browse</a></li>
142 </ul>
141 </ul>
143 <ul>
142 <ul>
144 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
143 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
145 <li><a href="/file/tip/a">latest</a></li>
144 <li><a href="/file/tip/a">latest</a></li>
146 <li class="active">diff</li>
145 <li class="active">diff</li>
147 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
146 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
148 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
147 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
149 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
148 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
150 </ul>
149 </ul>
150 <ul>
151 <li><a href="/help">help</a></li>
152 </ul>
151 </div>
153 </div>
152
154
153 <div class="main">
155 <div class="main">
154 <h2><a href="/">test</a></h2>
156 <h2><a href="/">test</a></h2>
155 <h3>diff a @ 1:c78f6c5cbea9</h3>
157 <h3>diff a @ 1:c78f6c5cbea9</h3>
156
158
157 <form class="search" action="/log">
159 <form class="search" action="/log">
158 <p></p>
160 <p></p>
159 <p><input name="rev" id="search1" type="text" size="30" /></p>
161 <p><input name="rev" id="search1" type="text" size="30" /></p>
160 <div id="hint">find changesets by author, revision,
162 <div id="hint">find changesets by author, revision,
161 files, or words in the commit message</div>
163 files, or words in the commit message</div>
162 </form>
164 </form>
163
165
164 <div class="description">del</div>
166 <div class="description">del</div>
165
167
166 <table id="changesetEntry">
168 <table id="changesetEntry">
167 <tr>
169 <tr>
168 <th>author</th>
170 <th>author</th>
169 <td>&#116;&#101;&#115;&#116;</td>
171 <td>&#116;&#101;&#115;&#116;</td>
170 </tr>
172 </tr>
171 <tr>
173 <tr>
172 <th>date</th>
174 <th>date</th>
173 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
175 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
174 </tr>
176 </tr>
175 <tr>
177 <tr>
176 <th>parents</th>
178 <th>parents</th>
177 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
179 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
178 </tr>
180 </tr>
179 <tr>
181 <tr>
180 <th>children</th>
182 <th>children</th>
181 <td></td>
183 <td></td>
182 </tr>
184 </tr>
183
185
184 </table>
186 </table>
185
187
186 <div class="overflow">
188 <div class="overflow">
187 <div class="sourcefirst"> line diff</div>
189 <div class="sourcefirst"> line diff</div>
188
190
189 <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
191 <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
190 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
192 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
191 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
193 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
192 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
194 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
193 </span></pre></div>
195 </span></pre></div>
194 </div>
196 </div>
195 </div>
197 </div>
196 </div>
198 </div>
197
199
198
200
199
201
200 </body>
202 </body>
201 </html>
203 </html>
202
204
@@ -1,429 +1,433 b''
1 Some tests for hgweb. Tests static files, plain files and different 404's.
1 Some tests for hgweb. Tests static files, plain files and different 404's.
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ mkdir da
5 $ mkdir da
6 $ echo foo > da/foo
6 $ echo foo > da/foo
7 $ echo foo > foo
7 $ echo foo > foo
8 $ hg ci -Ambase
8 $ hg ci -Ambase
9 adding da/foo
9 adding da/foo
10 adding foo
10 adding foo
11 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
11 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
12 $ cat hg.pid >> $DAEMON_PIDS
12 $ cat hg.pid >> $DAEMON_PIDS
13
13
14 manifest
14 manifest
15
15
16 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=raw')
16 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=raw')
17 200 Script output follows
17 200 Script output follows
18
18
19
19
20 drwxr-xr-x da
20 drwxr-xr-x da
21 -rw-r--r-- 4 foo
21 -rw-r--r-- 4 foo
22
22
23
23
24 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/da?style=raw')
24 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/da?style=raw')
25 200 Script output follows
25 200 Script output follows
26
26
27
27
28 -rw-r--r-- 4 foo
28 -rw-r--r-- 4 foo
29
29
30
30
31
31
32 plain file
32 plain file
33
33
34 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?style=raw'
34 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?style=raw'
35 200 Script output follows
35 200 Script output follows
36
36
37 foo
37 foo
38
38
39 should give a 404 - static file that does not exist
39 should give a 404 - static file that does not exist
40
40
41 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/static/bogus'
41 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/static/bogus'
42 404 Not Found
42 404 Not Found
43
43
44 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
44 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
45 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
45 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
46 <head>
46 <head>
47 <link rel="icon" href="/static/hgicon.png" type="image/png" />
47 <link rel="icon" href="/static/hgicon.png" type="image/png" />
48 <meta name="robots" content="index, nofollow" />
48 <meta name="robots" content="index, nofollow" />
49 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
49 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
50
50
51 <title>test: error</title>
51 <title>test: error</title>
52 </head>
52 </head>
53 <body>
53 <body>
54
54
55 <div class="container">
55 <div class="container">
56 <div class="menu">
56 <div class="menu">
57 <div class="logo">
57 <div class="logo">
58 <a href="http://mercurial.selenic.com/">
58 <a href="http://mercurial.selenic.com/">
59 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
59 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
60 </div>
60 </div>
61 <ul>
61 <ul>
62 <li><a href="/shortlog">log</a></li>
62 <li><a href="/shortlog">log</a></li>
63 <li><a href="/graph">graph</a></li>
63 <li><a href="/graph">graph</a></li>
64 <li><a href="/tags">tags</a></li>
64 <li><a href="/tags">tags</a></li>
65 <li><a href="/branches">branches</a></li>
65 <li><a href="/branches">branches</a></li>
66 <li><a href="/help">help</a></li>
66 </ul>
67 </ul>
67 </div>
68 </div>
68
69
69 <div class="main">
70 <div class="main">
70
71
71 <h2><a href="/">test</a></h2>
72 <h2><a href="/">test</a></h2>
72 <h3>error</h3>
73 <h3>error</h3>
73
74
74 <form class="search" action="/log">
75 <form class="search" action="/log">
75
76
76 <p><input name="rev" id="search1" type="text" size="30"></p>
77 <p><input name="rev" id="search1" type="text" size="30"></p>
77 <div id="hint">find changesets by author, revision,
78 <div id="hint">find changesets by author, revision,
78 files, or words in the commit message</div>
79 files, or words in the commit message</div>
79 </form>
80 </form>
80
81
81 <div class="description">
82 <div class="description">
82 <p>
83 <p>
83 An error occurred while processing your request:
84 An error occurred while processing your request:
84 </p>
85 </p>
85 <p>
86 <p>
86 Not Found
87 Not Found
87 </p>
88 </p>
88 </div>
89 </div>
89 </div>
90 </div>
90 </div>
91 </div>
91
92
92
93
93
94
94 </body>
95 </body>
95 </html>
96 </html>
96
97
97 [1]
98 [1]
98
99
99 should give a 404 - bad revision
100 should give a 404 - bad revision
100
101
101 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/spam/foo?style=raw'
102 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/spam/foo?style=raw'
102 404 Not Found
103 404 Not Found
103
104
104
105
105 error: revision not found: spam
106 error: revision not found: spam
106 [1]
107 [1]
107
108
108 should give a 400 - bad command
109 should give a 400 - bad command
109
110
110 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?cmd=spam&style=raw'
111 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?cmd=spam&style=raw'
111 400* (glob)
112 400* (glob)
112
113
113
114
114 error: no such method: spam
115 error: no such method: spam
115 [1]
116 [1]
116
117
117 should give a 404 - file does not exist
118 should give a 404 - file does not exist
118
119
119 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork?style=raw'
120 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork?style=raw'
120 404 Not Found
121 404 Not Found
121
122
122
123
123 error: bork@2ef0ac749a14: not found in manifest
124 error: bork@2ef0ac749a14: not found in manifest
124 [1]
125 [1]
125 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork'
126 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork'
126 404 Not Found
127 404 Not Found
127
128
128 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
129 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
129 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
130 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
130 <head>
131 <head>
131 <link rel="icon" href="/static/hgicon.png" type="image/png" />
132 <link rel="icon" href="/static/hgicon.png" type="image/png" />
132 <meta name="robots" content="index, nofollow" />
133 <meta name="robots" content="index, nofollow" />
133 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
134 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
134
135
135 <title>test: error</title>
136 <title>test: error</title>
136 </head>
137 </head>
137 <body>
138 <body>
138
139
139 <div class="container">
140 <div class="container">
140 <div class="menu">
141 <div class="menu">
141 <div class="logo">
142 <div class="logo">
142 <a href="http://mercurial.selenic.com/">
143 <a href="http://mercurial.selenic.com/">
143 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
144 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
144 </div>
145 </div>
145 <ul>
146 <ul>
146 <li><a href="/shortlog">log</a></li>
147 <li><a href="/shortlog">log</a></li>
147 <li><a href="/graph">graph</a></li>
148 <li><a href="/graph">graph</a></li>
148 <li><a href="/tags">tags</a></li>
149 <li><a href="/tags">tags</a></li>
149 <li><a href="/branches">branches</a></li>
150 <li><a href="/branches">branches</a></li>
151 <li><a href="/help">help</a></li>
150 </ul>
152 </ul>
151 </div>
153 </div>
152
154
153 <div class="main">
155 <div class="main">
154
156
155 <h2><a href="/">test</a></h2>
157 <h2><a href="/">test</a></h2>
156 <h3>error</h3>
158 <h3>error</h3>
157
159
158 <form class="search" action="/log">
160 <form class="search" action="/log">
159
161
160 <p><input name="rev" id="search1" type="text" size="30"></p>
162 <p><input name="rev" id="search1" type="text" size="30"></p>
161 <div id="hint">find changesets by author, revision,
163 <div id="hint">find changesets by author, revision,
162 files, or words in the commit message</div>
164 files, or words in the commit message</div>
163 </form>
165 </form>
164
166
165 <div class="description">
167 <div class="description">
166 <p>
168 <p>
167 An error occurred while processing your request:
169 An error occurred while processing your request:
168 </p>
170 </p>
169 <p>
171 <p>
170 bork@2ef0ac749a14: not found in manifest
172 bork@2ef0ac749a14: not found in manifest
171 </p>
173 </p>
172 </div>
174 </div>
173 </div>
175 </div>
174 </div>
176 </div>
175
177
176
178
177
179
178 </body>
180 </body>
179 </html>
181 </html>
180
182
181 [1]
183 [1]
182 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/bork?style=raw'
184 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/bork?style=raw'
183 404 Not Found
185 404 Not Found
184
186
185
187
186 error: bork@2ef0ac749a14: not found in manifest
188 error: bork@2ef0ac749a14: not found in manifest
187 [1]
189 [1]
188
190
189 try bad style
191 try bad style
190
192
191 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=foobar')
193 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=foobar')
192 200 Script output follows
194 200 Script output follows
193
195
194 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
196 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
195 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
197 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
196 <head>
198 <head>
197 <link rel="icon" href="/static/hgicon.png" type="image/png" />
199 <link rel="icon" href="/static/hgicon.png" type="image/png" />
198 <meta name="robots" content="index, nofollow" />
200 <meta name="robots" content="index, nofollow" />
199 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
201 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
200
202
201 <title>test: 2ef0ac749a14 /</title>
203 <title>test: 2ef0ac749a14 /</title>
202 </head>
204 </head>
203 <body>
205 <body>
204
206
205 <div class="container">
207 <div class="container">
206 <div class="menu">
208 <div class="menu">
207 <div class="logo">
209 <div class="logo">
208 <a href="http://mercurial.selenic.com/">
210 <a href="http://mercurial.selenic.com/">
209 <img src="/static/hglogo.png" alt="mercurial" /></a>
211 <img src="/static/hglogo.png" alt="mercurial" /></a>
210 </div>
212 </div>
211 <ul>
213 <ul>
212 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
214 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
213 <li><a href="/graph/2ef0ac749a14">graph</a></li>
215 <li><a href="/graph/2ef0ac749a14">graph</a></li>
214 <li><a href="/tags">tags</a></li>
216 <li><a href="/tags">tags</a></li>
215 <li><a href="/branches">branches</a></li>
217 <li><a href="/branches">branches</a></li>
216 <li><a href="/help">help</a></li>
217 </ul>
218 </ul>
218 <ul>
219 <ul>
219 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
220 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
220 <li class="active">browse</li>
221 <li class="active">browse</li>
221 </ul>
222 </ul>
222 <ul>
223 <ul>
223
224
224 </ul>
225 </ul>
225 <ul>
226 <ul>
226 <li><a href="/help">help</a></li>
227 <li><a href="/help">help</a></li>
227 </ul>
228 </ul>
229 <ul>
230 <li><a href="/help">help</a></li>
231 </ul>
228 </div>
232 </div>
229
233
230 <div class="main">
234 <div class="main">
231 <h2><a href="/">test</a></h2>
235 <h2><a href="/">test</a></h2>
232 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
236 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
233
237
234 <form class="search" action="/log">
238 <form class="search" action="/log">
235
239
236 <p><input name="rev" id="search1" type="text" size="30" /></p>
240 <p><input name="rev" id="search1" type="text" size="30" /></p>
237 <div id="hint">find changesets by author, revision,
241 <div id="hint">find changesets by author, revision,
238 files, or words in the commit message</div>
242 files, or words in the commit message</div>
239 </form>
243 </form>
240
244
241 <table class="bigtable">
245 <table class="bigtable">
242 <tr>
246 <tr>
243 <th class="name">name</th>
247 <th class="name">name</th>
244 <th class="size">size</th>
248 <th class="size">size</th>
245 <th class="permissions">permissions</th>
249 <th class="permissions">permissions</th>
246 </tr>
250 </tr>
247 <tr class="fileline parity0">
251 <tr class="fileline parity0">
248 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
252 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
249 <td class="size"></td>
253 <td class="size"></td>
250 <td class="permissions">drwxr-xr-x</td>
254 <td class="permissions">drwxr-xr-x</td>
251 </tr>
255 </tr>
252
256
253 <tr class="fileline parity1">
257 <tr class="fileline parity1">
254 <td class="name">
258 <td class="name">
255 <a href="/file/2ef0ac749a14/da">
259 <a href="/file/2ef0ac749a14/da">
256 <img src="/static/coal-folder.png" alt="dir."/> da/
260 <img src="/static/coal-folder.png" alt="dir."/> da/
257 </a>
261 </a>
258 <a href="/file/2ef0ac749a14/da/">
262 <a href="/file/2ef0ac749a14/da/">
259
263
260 </a>
264 </a>
261 </td>
265 </td>
262 <td class="size"></td>
266 <td class="size"></td>
263 <td class="permissions">drwxr-xr-x</td>
267 <td class="permissions">drwxr-xr-x</td>
264 </tr>
268 </tr>
265
269
266 <tr class="fileline parity0">
270 <tr class="fileline parity0">
267 <td class="filename">
271 <td class="filename">
268 <a href="/file/2ef0ac749a14/foo">
272 <a href="/file/2ef0ac749a14/foo">
269 <img src="/static/coal-file.png" alt="file"/> foo
273 <img src="/static/coal-file.png" alt="file"/> foo
270 </a>
274 </a>
271 </td>
275 </td>
272 <td class="size">4</td>
276 <td class="size">4</td>
273 <td class="permissions">-rw-r--r--</td>
277 <td class="permissions">-rw-r--r--</td>
274 </tr>
278 </tr>
275 </table>
279 </table>
276 </div>
280 </div>
277 </div>
281 </div>
278
282
279
283
280 </body>
284 </body>
281 </html>
285 </html>
282
286
283
287
284 stop and restart
288 stop and restart
285
289
286 $ "$TESTDIR/killdaemons.py"
290 $ "$TESTDIR/killdaemons.py"
287 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
291 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
288 $ cat hg.pid >> $DAEMON_PIDS
292 $ cat hg.pid >> $DAEMON_PIDS
289
293
290 Test the access/error files are opened in append mode
294 Test the access/error files are opened in append mode
291
295
292 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
296 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
293 10 log lines written
297 10 log lines written
294
298
295 static file
299 static file
296
300
297 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT '/static/style-gitweb.css'
301 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT '/static/style-gitweb.css'
298 200 Script output follows
302 200 Script output follows
299
303
300 body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
304 body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
301 a { color:#0000cc; }
305 a { color:#0000cc; }
302 a:hover, a:visited, a:active { color:#880000; }
306 a:hover, a:visited, a:active { color:#880000; }
303 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
307 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
304 div.page_header a:visited { color:#0000cc; }
308 div.page_header a:visited { color:#0000cc; }
305 div.page_header a:hover { color:#880000; }
309 div.page_header a:hover { color:#880000; }
306 div.page_nav { padding:8px; }
310 div.page_nav { padding:8px; }
307 div.page_nav a:visited { color:#0000cc; }
311 div.page_nav a:visited { color:#0000cc; }
308 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
312 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
309 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
313 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
310 div.page_footer_text { float:left; color:#555555; font-style:italic; }
314 div.page_footer_text { float:left; color:#555555; font-style:italic; }
311 div.page_body { padding:8px; }
315 div.page_body { padding:8px; }
312 div.title, a.title {
316 div.title, a.title {
313 display:block; padding:6px 8px;
317 display:block; padding:6px 8px;
314 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
318 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
315 }
319 }
316 a.title:hover { background-color: #d9d8d1; }
320 a.title:hover { background-color: #d9d8d1; }
317 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
321 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
318 div.log_body { padding:8px 8px 8px 150px; }
322 div.log_body { padding:8px 8px 8px 150px; }
319 .age { white-space:nowrap; }
323 .age { white-space:nowrap; }
320 span.age { position:relative; float:left; width:142px; font-style:italic; }
324 span.age { position:relative; float:left; width:142px; font-style:italic; }
321 div.log_link {
325 div.log_link {
322 padding:0px 8px;
326 padding:0px 8px;
323 font-size:10px; font-family:sans-serif; font-style:normal;
327 font-size:10px; font-family:sans-serif; font-style:normal;
324 position:relative; float:left; width:136px;
328 position:relative; float:left; width:136px;
325 }
329 }
326 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
330 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
327 a.list { text-decoration:none; color:#000000; }
331 a.list { text-decoration:none; color:#000000; }
328 a.list:hover { text-decoration:underline; color:#880000; }
332 a.list:hover { text-decoration:underline; color:#880000; }
329 table { padding:8px 4px; }
333 table { padding:8px 4px; }
330 th { padding:2px 5px; font-size:12px; text-align:left; }
334 th { padding:2px 5px; font-size:12px; text-align:left; }
331 tr.light:hover, .parity0:hover { background-color:#edece6; }
335 tr.light:hover, .parity0:hover { background-color:#edece6; }
332 tr.dark, .parity1 { background-color:#f6f6f0; }
336 tr.dark, .parity1 { background-color:#f6f6f0; }
333 tr.dark:hover, .parity1:hover { background-color:#edece6; }
337 tr.dark:hover, .parity1:hover { background-color:#edece6; }
334 td { padding:2px 5px; font-size:12px; vertical-align:top; }
338 td { padding:2px 5px; font-size:12px; vertical-align:top; }
335 td.closed { background-color: #99f; }
339 td.closed { background-color: #99f; }
336 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
340 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
337 td.indexlinks { white-space: nowrap; }
341 td.indexlinks { white-space: nowrap; }
338 td.indexlinks a {
342 td.indexlinks a {
339 padding: 2px 5px; line-height: 10px;
343 padding: 2px 5px; line-height: 10px;
340 border: 1px solid;
344 border: 1px solid;
341 color: #ffffff; background-color: #7777bb;
345 color: #ffffff; background-color: #7777bb;
342 border-color: #aaaadd #333366 #333366 #aaaadd;
346 border-color: #aaaadd #333366 #333366 #aaaadd;
343 font-weight: bold; text-align: center; text-decoration: none;
347 font-weight: bold; text-align: center; text-decoration: none;
344 font-size: 10px;
348 font-size: 10px;
345 }
349 }
346 td.indexlinks a:hover { background-color: #6666aa; }
350 td.indexlinks a:hover { background-color: #6666aa; }
347 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
351 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
348 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
352 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
349 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
353 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
350 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
354 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
351 .linenr { color:#999999; text-decoration:none }
355 .linenr { color:#999999; text-decoration:none }
352 div.rss_logo { float: right; white-space: nowrap; }
356 div.rss_logo { float: right; white-space: nowrap; }
353 div.rss_logo a {
357 div.rss_logo a {
354 padding:3px 6px; line-height:10px;
358 padding:3px 6px; line-height:10px;
355 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
359 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
356 color:#ffffff; background-color:#ff6600;
360 color:#ffffff; background-color:#ff6600;
357 font-weight:bold; font-family:sans-serif; font-size:10px;
361 font-weight:bold; font-family:sans-serif; font-size:10px;
358 text-align:center; text-decoration:none;
362 text-align:center; text-decoration:none;
359 }
363 }
360 div.rss_logo a:hover { background-color:#ee5500; }
364 div.rss_logo a:hover { background-color:#ee5500; }
361 pre { margin: 0; }
365 pre { margin: 0; }
362 span.logtags span {
366 span.logtags span {
363 padding: 0px 4px;
367 padding: 0px 4px;
364 font-size: 10px;
368 font-size: 10px;
365 font-weight: normal;
369 font-weight: normal;
366 border: 1px solid;
370 border: 1px solid;
367 background-color: #ffaaff;
371 background-color: #ffaaff;
368 border-color: #ffccff #ff00ee #ff00ee #ffccff;
372 border-color: #ffccff #ff00ee #ff00ee #ffccff;
369 }
373 }
370 span.logtags span.tagtag {
374 span.logtags span.tagtag {
371 background-color: #ffffaa;
375 background-color: #ffffaa;
372 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
376 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
373 }
377 }
374 span.logtags span.branchtag {
378 span.logtags span.branchtag {
375 background-color: #aaffaa;
379 background-color: #aaffaa;
376 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
380 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
377 }
381 }
378 span.logtags span.inbranchtag {
382 span.logtags span.inbranchtag {
379 background-color: #d5dde6;
383 background-color: #d5dde6;
380 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
384 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
381 }
385 }
382
386
383 /* Graph */
387 /* Graph */
384 div#wrapper {
388 div#wrapper {
385 position: relative;
389 position: relative;
386 margin: 0;
390 margin: 0;
387 padding: 0;
391 padding: 0;
388 margin-top: 3px;
392 margin-top: 3px;
389 }
393 }
390
394
391 canvas {
395 canvas {
392 position: absolute;
396 position: absolute;
393 z-index: 5;
397 z-index: 5;
394 top: -0.9em;
398 top: -0.9em;
395 margin: 0;
399 margin: 0;
396 }
400 }
397
401
398 ul#nodebgs {
402 ul#nodebgs {
399 list-style: none inside none;
403 list-style: none inside none;
400 padding: 0;
404 padding: 0;
401 margin: 0;
405 margin: 0;
402 top: -0.7em;
406 top: -0.7em;
403 }
407 }
404
408
405 ul#graphnodes li, ul#nodebgs li {
409 ul#graphnodes li, ul#nodebgs li {
406 height: 39px;
410 height: 39px;
407 }
411 }
408
412
409 ul#graphnodes {
413 ul#graphnodes {
410 position: absolute;
414 position: absolute;
411 z-index: 10;
415 z-index: 10;
412 top: -0.8em;
416 top: -0.8em;
413 list-style: none inside none;
417 list-style: none inside none;
414 padding: 0;
418 padding: 0;
415 }
419 }
416
420
417 ul#graphnodes li .info {
421 ul#graphnodes li .info {
418 display: block;
422 display: block;
419 font-size: 100%;
423 font-size: 100%;
420 position: relative;
424 position: relative;
421 top: -3px;
425 top: -3px;
422 font-style: italic;
426 font-style: italic;
423 }
427 }
424 304 Not Modified
428 304 Not Modified
425
429
426
430
427 errors
431 errors
428
432
429 $ cat errors.log
433 $ cat errors.log
@@ -1,598 +1,604 b''
1
1
2 $ "$TESTDIR/hghave" pygments || exit 80
2 $ "$TESTDIR/hghave" pygments || exit 80
3 $ cat <<EOF >> $HGRCPATH
3 $ cat <<EOF >> $HGRCPATH
4 > [extensions]
4 > [extensions]
5 > highlight =
5 > highlight =
6 > [web]
6 > [web]
7 > pygments_style = friendly
7 > pygments_style = friendly
8 > EOF
8 > EOF
9 $ hg init test
9 $ hg init test
10 $ cd test
10 $ cd test
11
11
12 create random Python file to exercise Pygments
12 create random Python file to exercise Pygments
13
13
14 $ cat <<EOF > primes.py
14 $ cat <<EOF > primes.py
15 > #!/usr/bin/env python
15 > #!/usr/bin/env python
16 >
16 >
17 > """Fun with generators. Corresponding Haskell implementation:
17 > """Fun with generators. Corresponding Haskell implementation:
18 >
18 >
19 > primes = 2 : sieve [3, 5..]
19 > primes = 2 : sieve [3, 5..]
20 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
20 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
21 > """
21 > """
22 >
22 >
23 > from itertools import dropwhile, ifilter, islice, count, chain
23 > from itertools import dropwhile, ifilter, islice, count, chain
24 >
24 >
25 > def primes():
25 > def primes():
26 > """Generate all primes."""
26 > """Generate all primes."""
27 > def sieve(ns):
27 > def sieve(ns):
28 > p = ns.next()
28 > p = ns.next()
29 > # It is important to yield *here* in order to stop the
29 > # It is important to yield *here* in order to stop the
30 > # infinite recursion.
30 > # infinite recursion.
31 > yield p
31 > yield p
32 > ns = ifilter(lambda n: n % p != 0, ns)
32 > ns = ifilter(lambda n: n % p != 0, ns)
33 > for n in sieve(ns):
33 > for n in sieve(ns):
34 > yield n
34 > yield n
35 >
35 >
36 > odds = ifilter(lambda i: i % 2 == 1, count())
36 > odds = ifilter(lambda i: i % 2 == 1, count())
37 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
37 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
38 >
38 >
39 > if __name__ == "__main__":
39 > if __name__ == "__main__":
40 > import sys
40 > import sys
41 > try:
41 > try:
42 > n = int(sys.argv[1])
42 > n = int(sys.argv[1])
43 > except (ValueError, IndexError):
43 > except (ValueError, IndexError):
44 > n = 10
44 > n = 10
45 > p = primes()
45 > p = primes()
46 > print "The first %d primes: %s" % (n, list(islice(p, n)))
46 > print "The first %d primes: %s" % (n, list(islice(p, n)))
47 > EOF
47 > EOF
48 $ hg ci -Ama
48 $ hg ci -Ama
49 adding primes.py
49 adding primes.py
50
50
51 hg serve
51 hg serve
52
52
53 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
53 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
54 $ cat hg.pid >> $DAEMON_PIDS
54 $ cat hg.pid >> $DAEMON_PIDS
55
55
56 hgweb filerevision, html
56 hgweb filerevision, html
57
57
58 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \
58 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \
59 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
59 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
60 200 Script output follows
60 200 Script output follows
61
61
62 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
62 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
63 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
63 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
64 <head>
64 <head>
65 <link rel="icon" href="/static/hgicon.png" type="image/png" />
65 <link rel="icon" href="/static/hgicon.png" type="image/png" />
66 <meta name="robots" content="index, nofollow" />
66 <meta name="robots" content="index, nofollow" />
67 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
67 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
68
68
69 <link rel="stylesheet" href="/highlightcss" type="text/css" />
69 <link rel="stylesheet" href="/highlightcss" type="text/css" />
70 <title>test: 853dcd4de2a6 primes.py</title>
70 <title>test: 853dcd4de2a6 primes.py</title>
71 </head>
71 </head>
72 <body>
72 <body>
73
73
74 <div class="container">
74 <div class="container">
75 <div class="menu">
75 <div class="menu">
76 <div class="logo">
76 <div class="logo">
77 <a href="http://mercurial.selenic.com/">
77 <a href="http://mercurial.selenic.com/">
78 <img src="/static/hglogo.png" alt="mercurial" /></a>
78 <img src="/static/hglogo.png" alt="mercurial" /></a>
79 </div>
79 </div>
80 <ul>
80 <ul>
81 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
81 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
82 <li><a href="/graph/853dcd4de2a6">graph</a></li>
82 <li><a href="/graph/853dcd4de2a6">graph</a></li>
83 <li><a href="/tags">tags</a></li>
83 <li><a href="/tags">tags</a></li>
84 <li><a href="/branches">branches</a></li>
84 <li><a href="/branches">branches</a></li>
85 </ul>
85 </ul>
86 <ul>
86 <ul>
87 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
87 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
88 <li><a href="/file/853dcd4de2a6/">browse</a></li>
88 <li><a href="/file/853dcd4de2a6/">browse</a></li>
89 </ul>
89 </ul>
90 <ul>
90 <ul>
91 <li class="active">file</li>
91 <li class="active">file</li>
92 <li><a href="/file/tip/primes.py">latest</a></li>
92 <li><a href="/file/tip/primes.py">latest</a></li>
93 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
93 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
94 <li><a href="/annotate/853dcd4de2a6/primes.py">annotate</a></li>
94 <li><a href="/annotate/853dcd4de2a6/primes.py">annotate</a></li>
95 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
95 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
96 <li><a href="/raw-file/853dcd4de2a6/primes.py">raw</a></li>
96 <li><a href="/raw-file/853dcd4de2a6/primes.py">raw</a></li>
97 </ul>
97 </ul>
98 <ul>
99 <li><a href="/help">help</a></li>
100 </ul>
98 </div>
101 </div>
99
102
100 <div class="main">
103 <div class="main">
101 <h2><a href="/">test</a></h2>
104 <h2><a href="/">test</a></h2>
102 <h3>view primes.py @ 0:853dcd4de2a6</h3>
105 <h3>view primes.py @ 0:853dcd4de2a6</h3>
103
106
104 <form class="search" action="/log">
107 <form class="search" action="/log">
105
108
106 <p><input name="rev" id="search1" type="text" size="30" /></p>
109 <p><input name="rev" id="search1" type="text" size="30" /></p>
107 <div id="hint">find changesets by author, revision,
110 <div id="hint">find changesets by author, revision,
108 files, or words in the commit message</div>
111 files, or words in the commit message</div>
109 </form>
112 </form>
110
113
111 <div class="description">a</div>
114 <div class="description">a</div>
112
115
113 <table id="changesetEntry">
116 <table id="changesetEntry">
114 <tr>
117 <tr>
115 <th class="author">author</th>
118 <th class="author">author</th>
116 <td class="author">&#116;&#101;&#115;&#116;</td>
119 <td class="author">&#116;&#101;&#115;&#116;</td>
117 </tr>
120 </tr>
118 <tr>
121 <tr>
119 <th class="date">date</th>
122 <th class="date">date</th>
120 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
123 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
121 </tr>
124 </tr>
122 <tr>
125 <tr>
123 <th class="author">parents</th>
126 <th class="author">parents</th>
124 <td class="author"></td>
127 <td class="author"></td>
125 </tr>
128 </tr>
126 <tr>
129 <tr>
127 <th class="author">children</th>
130 <th class="author">children</th>
128 <td class="author"></td>
131 <td class="author"></td>
129 </tr>
132 </tr>
130
133
131 </table>
134 </table>
132
135
133 <div class="overflow">
136 <div class="overflow">
134 <div class="sourcefirst"> line source</div>
137 <div class="sourcefirst"> line source</div>
135
138
136 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
139 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
137 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
140 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
138 <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>
141 <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>
139 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
142 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
140 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
143 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
141 <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>
144 <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>
142 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
145 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
143 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
146 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
144 <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>
147 <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>
145 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
148 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
146 <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>
149 <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>
147 <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>
150 <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>
148 <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>
151 <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>
149 <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>
152 <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>
150 <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>
153 <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>
151 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
154 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
152 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
155 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
153 <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>
156 <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>
154 <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>
157 <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>
155 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
158 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
156 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
159 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
157 <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>
160 <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>
158 <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>
161 <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>
159 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
162 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
160 <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>
163 <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>
161 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
164 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
162 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
165 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
163 <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>
166 <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>
164 <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>
167 <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>
165 <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>
168 <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>
166 <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>
169 <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>
167 <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>
170 <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>
168 <div class="sourcelast"></div>
171 <div class="sourcelast"></div>
169 </div>
172 </div>
170 </div>
173 </div>
171 </div>
174 </div>
172
175
173
176
174
177
175 </body>
178 </body>
176 </html>
179 </html>
177
180
178
181
179 hgweb fileannotate, html
182 hgweb fileannotate, html
180
183
181 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \
184 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \
182 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
185 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
183 200 Script output follows
186 200 Script output follows
184
187
185 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
188 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
186 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
189 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
187 <head>
190 <head>
188 <link rel="icon" href="/static/hgicon.png" type="image/png" />
191 <link rel="icon" href="/static/hgicon.png" type="image/png" />
189 <meta name="robots" content="index, nofollow" />
192 <meta name="robots" content="index, nofollow" />
190 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
193 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
191
194
192 <link rel="stylesheet" href="/highlightcss" type="text/css" />
195 <link rel="stylesheet" href="/highlightcss" type="text/css" />
193 <title>test: primes.py annotate</title>
196 <title>test: primes.py annotate</title>
194 </head>
197 </head>
195 <body>
198 <body>
196
199
197 <div class="container">
200 <div class="container">
198 <div class="menu">
201 <div class="menu">
199 <div class="logo">
202 <div class="logo">
200 <a href="http://mercurial.selenic.com/">
203 <a href="http://mercurial.selenic.com/">
201 <img src="/static/hglogo.png" alt="mercurial" /></a>
204 <img src="/static/hglogo.png" alt="mercurial" /></a>
202 </div>
205 </div>
203 <ul>
206 <ul>
204 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
207 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
205 <li><a href="/graph/853dcd4de2a6">graph</a></li>
208 <li><a href="/graph/853dcd4de2a6">graph</a></li>
206 <li><a href="/tags">tags</a></li>
209 <li><a href="/tags">tags</a></li>
207 <li><a href="/branches">branches</a></li>
210 <li><a href="/branches">branches</a></li>
208 </ul>
211 </ul>
209
212
210 <ul>
213 <ul>
211 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
214 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
212 <li><a href="/file/853dcd4de2a6/">browse</a></li>
215 <li><a href="/file/853dcd4de2a6/">browse</a></li>
213 </ul>
216 </ul>
214 <ul>
217 <ul>
215 <li><a href="/file/853dcd4de2a6/primes.py">file</a></li>
218 <li><a href="/file/853dcd4de2a6/primes.py">file</a></li>
216 <li><a href="/file/tip/primes.py">latest</a></li>
219 <li><a href="/file/tip/primes.py">latest</a></li>
217 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
220 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
218 <li class="active">annotate</li>
221 <li class="active">annotate</li>
219 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
222 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
220 <li><a href="/raw-annotate/853dcd4de2a6/primes.py">raw</a></li>
223 <li><a href="/raw-annotate/853dcd4de2a6/primes.py">raw</a></li>
221 </ul>
224 </ul>
225 <ul>
226 <li><a href="/help">help</a></li>
227 </ul>
222 </div>
228 </div>
223
229
224 <div class="main">
230 <div class="main">
225 <h2><a href="/">test</a></h2>
231 <h2><a href="/">test</a></h2>
226 <h3>annotate primes.py @ 0:853dcd4de2a6</h3>
232 <h3>annotate primes.py @ 0:853dcd4de2a6</h3>
227
233
228 <form class="search" action="/log">
234 <form class="search" action="/log">
229
235
230 <p><input name="rev" id="search1" type="text" size="30" /></p>
236 <p><input name="rev" id="search1" type="text" size="30" /></p>
231 <div id="hint">find changesets by author, revision,
237 <div id="hint">find changesets by author, revision,
232 files, or words in the commit message</div>
238 files, or words in the commit message</div>
233 </form>
239 </form>
234
240
235 <div class="description">a</div>
241 <div class="description">a</div>
236
242
237 <table id="changesetEntry">
243 <table id="changesetEntry">
238 <tr>
244 <tr>
239 <th class="author">author</th>
245 <th class="author">author</th>
240 <td class="author">&#116;&#101;&#115;&#116;</td>
246 <td class="author">&#116;&#101;&#115;&#116;</td>
241 </tr>
247 </tr>
242 <tr>
248 <tr>
243 <th class="date">date</th>
249 <th class="date">date</th>
244 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
250 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
245 </tr>
251 </tr>
246 <tr>
252 <tr>
247 <th class="author">parents</th>
253 <th class="author">parents</th>
248 <td class="author"></td>
254 <td class="author"></td>
249 </tr>
255 </tr>
250 <tr>
256 <tr>
251 <th class="author">children</th>
257 <th class="author">children</th>
252 <td class="author"></td>
258 <td class="author"></td>
253 </tr>
259 </tr>
254
260
255 </table>
261 </table>
256
262
257 <div class="overflow">
263 <div class="overflow">
258 <table class="bigtable">
264 <table class="bigtable">
259 <tr>
265 <tr>
260 <th class="annotate">rev</th>
266 <th class="annotate">rev</th>
261 <th class="line">&nbsp;&nbsp;line source</th>
267 <th class="line">&nbsp;&nbsp;line source</th>
262 </tr>
268 </tr>
263
269
264 <tr class="parity0">
270 <tr class="parity0">
265 <td class="annotate">
271 <td class="annotate">
266 <a href="/annotate/853dcd4de2a6/primes.py#1"
272 <a href="/annotate/853dcd4de2a6/primes.py#1"
267 title="853dcd4de2a6: a">test@0</a>
273 title="853dcd4de2a6: a">test@0</a>
268 </td>
274 </td>
269 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
275 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
270 </tr>
276 </tr>
271 <tr class="parity1">
277 <tr class="parity1">
272 <td class="annotate">
278 <td class="annotate">
273 <a href="/annotate/853dcd4de2a6/primes.py#2"
279 <a href="/annotate/853dcd4de2a6/primes.py#2"
274 title="853dcd4de2a6: a">test@0</a>
280 title="853dcd4de2a6: a">test@0</a>
275 </td>
281 </td>
276 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
282 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
277 </tr>
283 </tr>
278 <tr class="parity0">
284 <tr class="parity0">
279 <td class="annotate">
285 <td class="annotate">
280 <a href="/annotate/853dcd4de2a6/primes.py#3"
286 <a href="/annotate/853dcd4de2a6/primes.py#3"
281 title="853dcd4de2a6: a">test@0</a>
287 title="853dcd4de2a6: a">test@0</a>
282 </td>
288 </td>
283 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
289 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
284 </tr>
290 </tr>
285 <tr class="parity1">
291 <tr class="parity1">
286 <td class="annotate">
292 <td class="annotate">
287 <a href="/annotate/853dcd4de2a6/primes.py#4"
293 <a href="/annotate/853dcd4de2a6/primes.py#4"
288 title="853dcd4de2a6: a">test@0</a>
294 title="853dcd4de2a6: a">test@0</a>
289 </td>
295 </td>
290 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
296 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
291 </tr>
297 </tr>
292 <tr class="parity0">
298 <tr class="parity0">
293 <td class="annotate">
299 <td class="annotate">
294 <a href="/annotate/853dcd4de2a6/primes.py#5"
300 <a href="/annotate/853dcd4de2a6/primes.py#5"
295 title="853dcd4de2a6: a">test@0</a>
301 title="853dcd4de2a6: a">test@0</a>
296 </td>
302 </td>
297 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
303 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
298 </tr>
304 </tr>
299 <tr class="parity1">
305 <tr class="parity1">
300 <td class="annotate">
306 <td class="annotate">
301 <a href="/annotate/853dcd4de2a6/primes.py#6"
307 <a href="/annotate/853dcd4de2a6/primes.py#6"
302 title="853dcd4de2a6: a">test@0</a>
308 title="853dcd4de2a6: a">test@0</a>
303 </td>
309 </td>
304 <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>
310 <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>
305 </tr>
311 </tr>
306 <tr class="parity0">
312 <tr class="parity0">
307 <td class="annotate">
313 <td class="annotate">
308 <a href="/annotate/853dcd4de2a6/primes.py#7"
314 <a href="/annotate/853dcd4de2a6/primes.py#7"
309 title="853dcd4de2a6: a">test@0</a>
315 title="853dcd4de2a6: a">test@0</a>
310 </td>
316 </td>
311 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
317 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
312 </tr>
318 </tr>
313 <tr class="parity1">
319 <tr class="parity1">
314 <td class="annotate">
320 <td class="annotate">
315 <a href="/annotate/853dcd4de2a6/primes.py#8"
321 <a href="/annotate/853dcd4de2a6/primes.py#8"
316 title="853dcd4de2a6: a">test@0</a>
322 title="853dcd4de2a6: a">test@0</a>
317 </td>
323 </td>
318 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
324 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
319 </tr>
325 </tr>
320 <tr class="parity0">
326 <tr class="parity0">
321 <td class="annotate">
327 <td class="annotate">
322 <a href="/annotate/853dcd4de2a6/primes.py#9"
328 <a href="/annotate/853dcd4de2a6/primes.py#9"
323 title="853dcd4de2a6: a">test@0</a>
329 title="853dcd4de2a6: a">test@0</a>
324 </td>
330 </td>
325 <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>
331 <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>
326 </tr>
332 </tr>
327 <tr class="parity1">
333 <tr class="parity1">
328 <td class="annotate">
334 <td class="annotate">
329 <a href="/annotate/853dcd4de2a6/primes.py#10"
335 <a href="/annotate/853dcd4de2a6/primes.py#10"
330 title="853dcd4de2a6: a">test@0</a>
336 title="853dcd4de2a6: a">test@0</a>
331 </td>
337 </td>
332 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
338 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
333 </tr>
339 </tr>
334 <tr class="parity0">
340 <tr class="parity0">
335 <td class="annotate">
341 <td class="annotate">
336 <a href="/annotate/853dcd4de2a6/primes.py#11"
342 <a href="/annotate/853dcd4de2a6/primes.py#11"
337 title="853dcd4de2a6: a">test@0</a>
343 title="853dcd4de2a6: a">test@0</a>
338 </td>
344 </td>
339 <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>
345 <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>
340 </tr>
346 </tr>
341 <tr class="parity1">
347 <tr class="parity1">
342 <td class="annotate">
348 <td class="annotate">
343 <a href="/annotate/853dcd4de2a6/primes.py#12"
349 <a href="/annotate/853dcd4de2a6/primes.py#12"
344 title="853dcd4de2a6: a">test@0</a>
350 title="853dcd4de2a6: a">test@0</a>
345 </td>
351 </td>
346 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
352 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
347 </tr>
353 </tr>
348 <tr class="parity0">
354 <tr class="parity0">
349 <td class="annotate">
355 <td class="annotate">
350 <a href="/annotate/853dcd4de2a6/primes.py#13"
356 <a href="/annotate/853dcd4de2a6/primes.py#13"
351 title="853dcd4de2a6: a">test@0</a>
357 title="853dcd4de2a6: a">test@0</a>
352 </td>
358 </td>
353 <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>
359 <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>
354 </tr>
360 </tr>
355 <tr class="parity1">
361 <tr class="parity1">
356 <td class="annotate">
362 <td class="annotate">
357 <a href="/annotate/853dcd4de2a6/primes.py#14"
363 <a href="/annotate/853dcd4de2a6/primes.py#14"
358 title="853dcd4de2a6: a">test@0</a>
364 title="853dcd4de2a6: a">test@0</a>
359 </td>
365 </td>
360 <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>
366 <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>
361 </tr>
367 </tr>
362 <tr class="parity0">
368 <tr class="parity0">
363 <td class="annotate">
369 <td class="annotate">
364 <a href="/annotate/853dcd4de2a6/primes.py#15"
370 <a href="/annotate/853dcd4de2a6/primes.py#15"
365 title="853dcd4de2a6: a">test@0</a>
371 title="853dcd4de2a6: a">test@0</a>
366 </td>
372 </td>
367 <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>
373 <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>
368 </tr>
374 </tr>
369 <tr class="parity1">
375 <tr class="parity1">
370 <td class="annotate">
376 <td class="annotate">
371 <a href="/annotate/853dcd4de2a6/primes.py#16"
377 <a href="/annotate/853dcd4de2a6/primes.py#16"
372 title="853dcd4de2a6: a">test@0</a>
378 title="853dcd4de2a6: a">test@0</a>
373 </td>
379 </td>
374 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
380 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
375 </tr>
381 </tr>
376 <tr class="parity0">
382 <tr class="parity0">
377 <td class="annotate">
383 <td class="annotate">
378 <a href="/annotate/853dcd4de2a6/primes.py#17"
384 <a href="/annotate/853dcd4de2a6/primes.py#17"
379 title="853dcd4de2a6: a">test@0</a>
385 title="853dcd4de2a6: a">test@0</a>
380 </td>
386 </td>
381 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
387 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
382 </tr>
388 </tr>
383 <tr class="parity1">
389 <tr class="parity1">
384 <td class="annotate">
390 <td class="annotate">
385 <a href="/annotate/853dcd4de2a6/primes.py#18"
391 <a href="/annotate/853dcd4de2a6/primes.py#18"
386 title="853dcd4de2a6: a">test@0</a>
392 title="853dcd4de2a6: a">test@0</a>
387 </td>
393 </td>
388 <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>
394 <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>
389 </tr>
395 </tr>
390 <tr class="parity0">
396 <tr class="parity0">
391 <td class="annotate">
397 <td class="annotate">
392 <a href="/annotate/853dcd4de2a6/primes.py#19"
398 <a href="/annotate/853dcd4de2a6/primes.py#19"
393 title="853dcd4de2a6: a">test@0</a>
399 title="853dcd4de2a6: a">test@0</a>
394 </td>
400 </td>
395 <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>
401 <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>
396 </tr>
402 </tr>
397 <tr class="parity1">
403 <tr class="parity1">
398 <td class="annotate">
404 <td class="annotate">
399 <a href="/annotate/853dcd4de2a6/primes.py#20"
405 <a href="/annotate/853dcd4de2a6/primes.py#20"
400 title="853dcd4de2a6: a">test@0</a>
406 title="853dcd4de2a6: a">test@0</a>
401 </td>
407 </td>
402 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
408 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
403 </tr>
409 </tr>
404 <tr class="parity0">
410 <tr class="parity0">
405 <td class="annotate">
411 <td class="annotate">
406 <a href="/annotate/853dcd4de2a6/primes.py#21"
412 <a href="/annotate/853dcd4de2a6/primes.py#21"
407 title="853dcd4de2a6: a">test@0</a>
413 title="853dcd4de2a6: a">test@0</a>
408 </td>
414 </td>
409 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
415 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
410 </tr>
416 </tr>
411 <tr class="parity1">
417 <tr class="parity1">
412 <td class="annotate">
418 <td class="annotate">
413 <a href="/annotate/853dcd4de2a6/primes.py#22"
419 <a href="/annotate/853dcd4de2a6/primes.py#22"
414 title="853dcd4de2a6: a">test@0</a>
420 title="853dcd4de2a6: a">test@0</a>
415 </td>
421 </td>
416 <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>
422 <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>
417 </tr>
423 </tr>
418 <tr class="parity0">
424 <tr class="parity0">
419 <td class="annotate">
425 <td class="annotate">
420 <a href="/annotate/853dcd4de2a6/primes.py#23"
426 <a href="/annotate/853dcd4de2a6/primes.py#23"
421 title="853dcd4de2a6: a">test@0</a>
427 title="853dcd4de2a6: a">test@0</a>
422 </td>
428 </td>
423 <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>
429 <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>
424 </tr>
430 </tr>
425 <tr class="parity1">
431 <tr class="parity1">
426 <td class="annotate">
432 <td class="annotate">
427 <a href="/annotate/853dcd4de2a6/primes.py#24"
433 <a href="/annotate/853dcd4de2a6/primes.py#24"
428 title="853dcd4de2a6: a">test@0</a>
434 title="853dcd4de2a6: a">test@0</a>
429 </td>
435 </td>
430 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
436 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
431 </tr>
437 </tr>
432 <tr class="parity0">
438 <tr class="parity0">
433 <td class="annotate">
439 <td class="annotate">
434 <a href="/annotate/853dcd4de2a6/primes.py#25"
440 <a href="/annotate/853dcd4de2a6/primes.py#25"
435 title="853dcd4de2a6: a">test@0</a>
441 title="853dcd4de2a6: a">test@0</a>
436 </td>
442 </td>
437 <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>
443 <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>
438 </tr>
444 </tr>
439 <tr class="parity1">
445 <tr class="parity1">
440 <td class="annotate">
446 <td class="annotate">
441 <a href="/annotate/853dcd4de2a6/primes.py#26"
447 <a href="/annotate/853dcd4de2a6/primes.py#26"
442 title="853dcd4de2a6: a">test@0</a>
448 title="853dcd4de2a6: a">test@0</a>
443 </td>
449 </td>
444 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
450 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
445 </tr>
451 </tr>
446 <tr class="parity0">
452 <tr class="parity0">
447 <td class="annotate">
453 <td class="annotate">
448 <a href="/annotate/853dcd4de2a6/primes.py#27"
454 <a href="/annotate/853dcd4de2a6/primes.py#27"
449 title="853dcd4de2a6: a">test@0</a>
455 title="853dcd4de2a6: a">test@0</a>
450 </td>
456 </td>
451 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
457 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
452 </tr>
458 </tr>
453 <tr class="parity1">
459 <tr class="parity1">
454 <td class="annotate">
460 <td class="annotate">
455 <a href="/annotate/853dcd4de2a6/primes.py#28"
461 <a href="/annotate/853dcd4de2a6/primes.py#28"
456 title="853dcd4de2a6: a">test@0</a>
462 title="853dcd4de2a6: a">test@0</a>
457 </td>
463 </td>
458 <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>
464 <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>
459 </tr>
465 </tr>
460 <tr class="parity0">
466 <tr class="parity0">
461 <td class="annotate">
467 <td class="annotate">
462 <a href="/annotate/853dcd4de2a6/primes.py#29"
468 <a href="/annotate/853dcd4de2a6/primes.py#29"
463 title="853dcd4de2a6: a">test@0</a>
469 title="853dcd4de2a6: a">test@0</a>
464 </td>
470 </td>
465 <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>
471 <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>
466 </tr>
472 </tr>
467 <tr class="parity1">
473 <tr class="parity1">
468 <td class="annotate">
474 <td class="annotate">
469 <a href="/annotate/853dcd4de2a6/primes.py#30"
475 <a href="/annotate/853dcd4de2a6/primes.py#30"
470 title="853dcd4de2a6: a">test@0</a>
476 title="853dcd4de2a6: a">test@0</a>
471 </td>
477 </td>
472 <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>
478 <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>
473 </tr>
479 </tr>
474 <tr class="parity0">
480 <tr class="parity0">
475 <td class="annotate">
481 <td class="annotate">
476 <a href="/annotate/853dcd4de2a6/primes.py#31"
482 <a href="/annotate/853dcd4de2a6/primes.py#31"
477 title="853dcd4de2a6: a">test@0</a>
483 title="853dcd4de2a6: a">test@0</a>
478 </td>
484 </td>
479 <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>
485 <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>
480 </tr>
486 </tr>
481 <tr class="parity1">
487 <tr class="parity1">
482 <td class="annotate">
488 <td class="annotate">
483 <a href="/annotate/853dcd4de2a6/primes.py#32"
489 <a href="/annotate/853dcd4de2a6/primes.py#32"
484 title="853dcd4de2a6: a">test@0</a>
490 title="853dcd4de2a6: a">test@0</a>
485 </td>
491 </td>
486 <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>
492 <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>
487 </tr>
493 </tr>
488 </table>
494 </table>
489 </div>
495 </div>
490 </div>
496 </div>
491 </div>
497 </div>
492
498
493
499
494
500
495 </body>
501 </body>
496 </html>
502 </html>
497
503
498
504
499 hgweb fileannotate, raw
505 hgweb fileannotate, raw
500
506
501 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \
507 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \
502 > | sed "s/test@//" > a
508 > | sed "s/test@//" > a
503 $ echo "200 Script output follows" > b
509 $ echo "200 Script output follows" > b
504 $ echo "" >> b
510 $ echo "" >> b
505 $ echo "" >> b
511 $ echo "" >> b
506 $ hg annotate "primes.py" >> b
512 $ hg annotate "primes.py" >> b
507 $ echo "" >> b
513 $ echo "" >> b
508 $ echo "" >> b
514 $ echo "" >> b
509 $ echo "" >> b
515 $ echo "" >> b
510 $ echo "" >> b
516 $ echo "" >> b
511 $ diff -u b a
517 $ diff -u b a
512 $ echo
518 $ echo
513
519
514
520
515 hgweb filerevision, raw
521 hgweb filerevision, raw
516
522
517 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \
523 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \
518 > > a
524 > > a
519 $ echo "200 Script output follows" > b
525 $ echo "200 Script output follows" > b
520 $ echo "" >> b
526 $ echo "" >> b
521 $ hg cat primes.py >> b
527 $ hg cat primes.py >> b
522 $ diff -u b a
528 $ diff -u b a
523 $ echo
529 $ echo
524
530
525
531
526 hgweb highlightcss friendly
532 hgweb highlightcss friendly
527
533
528 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
534 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
529 $ head -n 4 out
535 $ head -n 4 out
530 200 Script output follows
536 200 Script output follows
531
537
532 /* pygments_style = friendly */
538 /* pygments_style = friendly */
533
539
534 $ rm out
540 $ rm out
535
541
536 errors encountered
542 errors encountered
537
543
538 $ cat errors.log
544 $ cat errors.log
539 $ "$TESTDIR/killdaemons.py"
545 $ "$TESTDIR/killdaemons.py"
540
546
541 Change the pygments style
547 Change the pygments style
542
548
543 $ cat > .hg/hgrc <<EOF
549 $ cat > .hg/hgrc <<EOF
544 > [web]
550 > [web]
545 > pygments_style = fruity
551 > pygments_style = fruity
546 > EOF
552 > EOF
547
553
548 hg serve again
554 hg serve again
549
555
550 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
556 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
551 $ cat hg.pid >> $DAEMON_PIDS
557 $ cat hg.pid >> $DAEMON_PIDS
552
558
553 hgweb highlightcss fruity
559 hgweb highlightcss fruity
554
560
555 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
561 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out
556 $ head -n 4 out
562 $ head -n 4 out
557 200 Script output follows
563 200 Script output follows
558
564
559 /* pygments_style = fruity */
565 /* pygments_style = fruity */
560
566
561 $ rm out
567 $ rm out
562
568
563 errors encountered
569 errors encountered
564
570
565 $ cat errors.log
571 $ cat errors.log
566 $ cd ..
572 $ cd ..
567 $ hg init eucjp
573 $ hg init eucjp
568 $ cd eucjp
574 $ cd eucjp
569 $ python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
575 $ python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
570 $ hg ci -Ama
576 $ hg ci -Ama
571 adding eucjp.txt
577 adding eucjp.txt
572 $ hgserveget () {
578 $ hgserveget () {
573 > "$TESTDIR/killdaemons.py"
579 > "$TESTDIR/killdaemons.py"
574 > echo % HGENCODING="$1" hg serve
580 > echo % HGENCODING="$1" hg serve
575 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
581 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
576 > cat hg.pid >> $DAEMON_PIDS
582 > cat hg.pid >> $DAEMON_PIDS
577 >
583 >
578 > echo % hgweb filerevision, html
584 > echo % hgweb filerevision, html
579 > "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \
585 > "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \
580 > | grep '<div class="parity0 source">' | $TESTDIR/printrepr.py
586 > | grep '<div class="parity0 source">' | $TESTDIR/printrepr.py
581 > echo % errors encountered
587 > echo % errors encountered
582 > cat errors.log
588 > cat errors.log
583 > }
589 > }
584 $ hgserveget euc-jp eucjp.txt
590 $ hgserveget euc-jp eucjp.txt
585 % HGENCODING=euc-jp hg serve
591 % HGENCODING=euc-jp hg serve
586 % hgweb filerevision, html
592 % hgweb filerevision, html
587 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div>
593 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div>
588 % errors encountered
594 % errors encountered
589 $ hgserveget utf-8 eucjp.txt
595 $ hgserveget utf-8 eucjp.txt
590 % HGENCODING=utf-8 hg serve
596 % HGENCODING=utf-8 hg serve
591 % hgweb filerevision, html
597 % hgweb filerevision, html
592 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div>
598 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div>
593 % errors encountered
599 % errors encountered
594 $ hgserveget us-ascii eucjp.txt
600 $ hgserveget us-ascii eucjp.txt
595 % HGENCODING=us-ascii hg serve
601 % HGENCODING=us-ascii hg serve
596 % hgweb filerevision, html
602 % hgweb filerevision, html
597 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
603 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
598 % errors encountered
604 % errors encountered
General Comments 0
You need to be logged in to leave comments. Login now