##// END OF EJS Templates
hgweb: add bookmark labels to gitweb theme (based on 270f57d35525)
Yuya Nishihara -
r13863:b602ac02 stable
parent child Browse files
Show More
@@ -1,14 +1,14
1 <div>
1 <div>
2 <a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|age}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a>
2 <a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|age}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
3 </div>
3 </div>
4 <div class="title_text">
4 <div class="title_text">
5 <div class="log_link">
5 <div class="log_link">
6 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
6 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
7 </div>
7 </div>
8 <i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
8 <i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
9 </div>
9 </div>
10 <div class="log_body">
10 <div class="log_body">
11 {desc|strip|escape|addbreaks|nonempty}
11 {desc|strip|escape|addbreaks|nonempty}
12 <br/>
12 <br/>
13 <br/>
13 <br/>
14 </div>
14 </div>
@@ -1,52 +1,52
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
20 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
21 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
22 changeset |
22 changeset |
23 <a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry} |
23 <a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry} |
24 <a href="{url}help{sessionvars%urlparameter}">help</a>
24 <a href="{url}help{sessionvars%urlparameter}">help</a>
25 <br/>
25 <br/>
26 </div>
26 </div>
27
27
28 <div>
28 <div>
29 <a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a>
29 <a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
30 </div>
30 </div>
31 <div class="title_text">
31 <div class="title_text">
32 <table cellspacing="0">
32 <table cellspacing="0">
33 <tr><td>author</td><td>{author|obfuscate}</td></tr>
33 <tr><td>author</td><td>{author|obfuscate}</td></tr>
34 <tr><td></td><td>{date|date} ({date|age})</td></tr>
34 <tr><td></td><td>{date|date} ({date|age})</td></tr>
35 {branch%changesetbranch}
35 {branch%changesetbranch}
36 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
36 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
37 {parent%changesetparent}
37 {parent%changesetparent}
38 {child%changesetchild}
38 {child%changesetchild}
39 </table></div>
39 </table></div>
40
40
41 <div class="page_body">
41 <div class="page_body">
42 {desc|strip|escape|addbreaks|nonempty}
42 {desc|strip|escape|addbreaks|nonempty}
43 </div>
43 </div>
44 <div class="list_head"></div>
44 <div class="list_head"></div>
45 <div class="title_text">
45 <div class="title_text">
46 <table cellspacing="0">
46 <table cellspacing="0">
47 {files}
47 {files}
48 </table></div>
48 </table></div>
49
49
50 <div class="page_body">{diff}</div>
50 <div class="page_body">{diff}</div>
51
51
52 {footer}
52 {footer}
@@ -1,122 +1,128
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-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 <!--[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="page_header">
11 <div class="page_header">
12 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph
12 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph
13 </div>
13 </div>
14
14
15 <form action="{url}log">
15 <form action="{url}log">
16 {sessionvars%hiddenformentry}
16 {sessionvars%hiddenformentry}
17 <div class="search">
17 <div class="search">
18 <input type="text" name="rev" />
18 <input type="text" name="rev" />
19 </div>
19 </div>
20 </form>
20 </form>
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/{rev}{sessionvars%urlparameter}">changelog</a> |
24 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
25 graph |
25 graph |
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> |
28 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
29 <a href="{url}help{sessionvars%urlparameter}">help</a>
29 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <br/>
30 <br/>
31 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
31 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
32 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
32 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
33 | {changenav%navgraph}<br/>
33 | {changenav%navgraph}<br/>
34 </div>
34 </div>
35
35
36 <div class="title">&nbsp;</div>
36 <div class="title">&nbsp;</div>
37
37
38 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
38 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
39
39
40 <div id="wrapper">
40 <div id="wrapper">
41 <ul id="nodebgs"></ul>
41 <ul id="nodebgs"></ul>
42 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
42 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
43 <ul id="graphnodes"></ul>
43 <ul id="graphnodes"></ul>
44 </div>
44 </div>
45
45
46 <script type="text/javascript" src="{staticurl}graph.js"></script>
46 <script type="text/javascript" src="{staticurl}graph.js"></script>
47 <script>
47 <script>
48 <!-- hide script content
48 <!-- hide script content
49
49
50 var data = {jsdata|json};
50 var data = {jsdata|json};
51 var graph = new Graph();
51 var graph = new Graph();
52 graph.scale({bg_height});
52 graph.scale({bg_height});
53
53
54 graph.edge = function(x0, y0, x1, y1, color) \{
54 graph.edge = function(x0, y0, x1, y1, color) \{
55
55
56 this.setColor(color, 0.0, 0.65);
56 this.setColor(color, 0.0, 0.65);
57 this.ctx.beginPath();
57 this.ctx.beginPath();
58 this.ctx.moveTo(x0, y0);
58 this.ctx.moveTo(x0, y0);
59 this.ctx.lineTo(x1, y1);
59 this.ctx.lineTo(x1, y1);
60 this.ctx.stroke();
60 this.ctx.stroke();
61
61
62 }
62 }
63
63
64 var revlink = '<li style="_STYLE"><span class="desc">';
64 var revlink = '<li style="_STYLE"><span class="desc">';
65 revlink += '<a class="list" href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID"><b>_DESC</b></a>';
65 revlink += '<a class="list" href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID"><b>_DESC</b></a>';
66 revlink += '</span> _TAGS';
66 revlink += '</span> _TAGS';
67 revlink += '<span class="info">_DATE, by _USER</span></li>';
67 revlink += '<span class="info">_DATE, by _USER</span></li>';
68
68
69 graph.vertex = function(x, y, color, parity, cur) \{
69 graph.vertex = function(x, y, color, parity, cur) \{
70
70
71 this.ctx.beginPath();
71 this.ctx.beginPath();
72 color = this.setColor(color, 0.25, 0.75);
72 color = this.setColor(color, 0.25, 0.75);
73 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
73 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
74 this.ctx.fill();
74 this.ctx.fill();
75
75
76 var bg = '<li class="bg parity' + parity + '"></li>';
76 var bg = '<li class="bg parity' + parity + '"></li>';
77 var left = (this.columns + 1) * this.bg_height;
77 var left = (this.columns + 1) * this.bg_height;
78 var nstyle = 'padding-left: ' + left + 'px;';
78 var nstyle = 'padding-left: ' + left + 'px;';
79 var item = revlink.replace(/_STYLE/, nstyle);
79 var item = revlink.replace(/_STYLE/, nstyle);
80 item = item.replace(/_PARITY/, 'parity' + parity);
80 item = item.replace(/_PARITY/, 'parity' + parity);
81 item = item.replace(/_NODEID/, cur[0]);
81 item = item.replace(/_NODEID/, cur[0]);
82 item = item.replace(/_NODEID/, cur[0]);
82 item = item.replace(/_NODEID/, cur[0]);
83 item = item.replace(/_DESC/, cur[3]);
83 item = item.replace(/_DESC/, cur[3]);
84 item = item.replace(/_USER/, cur[4]);
84 item = item.replace(/_USER/, cur[4]);
85 item = item.replace(/_DATE/, cur[5]);
85 item = item.replace(/_DATE/, cur[5]);
86
86
87 var tagspan = '';
87 var tagspan = '';
88 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) \{
88 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) \{
89 tagspan = '<span class="logtags">';
89 tagspan = '<span class="logtags">';
90 if (cur[6][1]) \{
90 if (cur[6][1]) \{
91 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
91 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
92 tagspan += cur[6][0] + '</span> ';
92 tagspan += cur[6][0] + '</span> ';
93 } else if (!cur[6][1] && cur[6][0] != 'default') \{
93 } else if (!cur[6][1] && cur[6][0] != 'default') \{
94 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
94 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
95 tagspan += cur[6][0] + '</span> ';
95 tagspan += cur[6][0] + '</span> ';
96 }
96 }
97 if (cur[7].length) \{
97 if (cur[7].length) \{
98 for (var t in cur[7]) \{
98 for (var t in cur[7]) \{
99 var tag = cur[7][t];
99 var tag = cur[7][t];
100 tagspan += '<span class="tagtag">' + tag + '</span> ';
100 tagspan += '<span class="tagtag">' + tag + '</span> ';
101 }
101 }
102 }
102 }
103 if (cur[8].length) \{
104 for (var t in cur[8]) \{
105 var bookmark = cur[8][t];
106 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
107 }
108 }
103 tagspan += '</span>';
109 tagspan += '</span>';
104 }
110 }
105
111
106 item = item.replace(/_TAGS/, tagspan);
112 item = item.replace(/_TAGS/, tagspan);
107 return [bg, item];
113 return [bg, item];
108
114
109 }
115 }
110
116
111 graph.render(data);
117 graph.render(data);
112
118
113 // stop hiding script -->
119 // stop hiding script -->
114 </script>
120 </script>
115
121
116 <div class="page_nav">
122 <div class="page_nav">
117 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
123 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
118 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
124 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
119 | {changenav%navgraph}
125 | {changenav%navgraph}
120 </div>
126 </div>
121
127
122 {footer}
128 {footer}
@@ -1,40 +1,40
1 {header}
1 {header}
2 <title>{repo|escape}: files</title>
2 <title>{repo|escape}: files</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> / files
11 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files
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 files |
21 files |
22 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> {archives%archiveentry} |
22 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> {archives%archiveentry} |
23 <a href="{url}help{sessionvars%urlparameter}">help</a>
23 <a href="{url}help{sessionvars%urlparameter}">help</a>
24 <br/>
24 <br/>
25 </div>
25 </div>
26
26
27 <div class="title">{path|escape} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></div>
27 <div class="title">{path|escape} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></div>
28 <table cellspacing="0">
28 <table cellspacing="0">
29 <tr class="parity{upparity}">
29 <tr class="parity{upparity}">
30 <td style="font-family:monospace">drwxr-xr-x</td>
30 <td style="font-family:monospace">drwxr-xr-x</td>
31 <td style="font-family:monospace"></td>
31 <td style="font-family:monospace"></td>
32 <td style="font-family:monospace"></td>
32 <td style="font-family:monospace"></td>
33 <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
33 <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
34 <td class="link">&nbsp;</td>
34 <td class="link">&nbsp;</td>
35 </tr>
35 </tr>
36 {dentries%direntry}
36 {dentries%direntry}
37 {fentries%fileentry}
37 {fentries%fileentry}
38 </table>
38 </table>
39
39
40 {footer}
40 {footer}
@@ -1,260 +1,261
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15
15
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 filenodelink = '
21 filenodelink = '
22 <tr class="parity{parity}">
22 <tr class="parity{parity}">
23 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
23 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
24 <td></td>
24 <td></td>
25 <td class="link">
25 <td class="link">
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
30 </td>
30 </td>
31 </tr>'
31 </tr>'
32 filenolink = '
32 filenolink = '
33 <tr class="parity{parity}">
33 <tr class="parity{parity}">
34 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
34 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
35 <td></td>
35 <td></td>
36 <td class="link">
36 <td class="link">
37 file |
37 file |
38 annotate |
38 annotate |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
41 </td>
41 </td>
42 </tr>'
42 </tr>'
43
43
44 nav = '{before%naventry} {after%naventry}'
44 nav = '{before%naventry} {after%naventry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
48
48
49 fileellipses = '...'
49 fileellipses = '...'
50 changelogentry = changelogentry.tmpl
50 changelogentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
52 changeset = changeset.tmpl
52 changeset = changeset.tmpl
53 manifest = manifest.tmpl
53 manifest = manifest.tmpl
54 direntry = '
54 direntry = '
55 <tr class="parity{parity}">
55 <tr class="parity{parity}">
56 <td style="font-family:monospace">drwxr-xr-x</td>
56 <td style="font-family:monospace">drwxr-xr-x</td>
57 <td style="font-family:monospace"></td>
57 <td style="font-family:monospace"></td>
58 <td style="font-family:monospace"></td>
58 <td style="font-family:monospace"></td>
59 <td>
59 <td>
60 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
60 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
61 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
61 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
62 </td>
62 </td>
63 <td class="link">
63 <td class="link">
64 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
64 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
65 </td>
65 </td>
66 </tr>'
66 </tr>'
67 fileentry = '
67 fileentry = '
68 <tr class="parity{parity}">
68 <tr class="parity{parity}">
69 <td style="font-family:monospace">{permissions|permissions}</td>
69 <td style="font-family:monospace">{permissions|permissions}</td>
70 <td style="font-family:monospace" align=right>{date|isodate}</td>
70 <td style="font-family:monospace" align=right>{date|isodate}</td>
71 <td style="font-family:monospace" align=right>{size}</td>
71 <td style="font-family:monospace" align=right>{size}</td>
72 <td class="list">
72 <td class="list">
73 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
73 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
74 </td>
74 </td>
75 <td class="link">
75 <td class="link">
76 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
76 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
77 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
77 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
78 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
78 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
79 </td>
79 </td>
80 </tr>'
80 </tr>'
81 filerevision = filerevision.tmpl
81 filerevision = filerevision.tmpl
82 fileannotate = fileannotate.tmpl
82 fileannotate = fileannotate.tmpl
83 filediff = filediff.tmpl
83 filediff = filediff.tmpl
84 filelog = filelog.tmpl
84 filelog = filelog.tmpl
85 fileline = '
85 fileline = '
86 <div style="font-family:monospace" class="parity{parity}">
86 <div style="font-family:monospace" class="parity{parity}">
87 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
87 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
88 </div>'
88 </div>'
89 annotateline = '
89 annotateline = '
90 <tr style="font-family:monospace" class="parity{parity}">
90 <tr style="font-family:monospace" class="parity{parity}">
91 <td class="linenr" style="text-align: right;">
91 <td class="linenr" style="text-align: right;">
92 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
92 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
93 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
93 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
94 </td>
94 </td>
95 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
95 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
96 <td><pre>{line|escape}</pre></td>
96 <td><pre>{line|escape}</pre></td>
97 </tr>'
97 </tr>'
98 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
98 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
99 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
99 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
100 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
100 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
101 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
101 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
102 changelogparent = '
102 changelogparent = '
103 <tr>
103 <tr>
104 <th class="parent">parent {rev}:</th>
104 <th class="parent">parent {rev}:</th>
105 <td class="parent">
105 <td class="parent">
106 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
106 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
107 </td>
107 </td>
108 </tr>'
108 </tr>'
109 changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
109 changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
110 changesetparent = '
110 changesetparent = '
111 <tr>
111 <tr>
112 <td>parent {rev}</td>
112 <td>parent {rev}</td>
113 <td style="font-family:monospace">
113 <td style="font-family:monospace">
114 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
114 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
115 </td>
115 </td>
116 </tr>'
116 </tr>'
117 filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
117 filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
118 filerevparent = '
118 filerevparent = '
119 <tr>
119 <tr>
120 <td>parent {rev}</td>
120 <td>parent {rev}</td>
121 <td style="font-family:monospace">
121 <td style="font-family:monospace">
122 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
122 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
123 {rename%filerename}{node|short}
123 {rename%filerename}{node|short}
124 </a>
124 </a>
125 </td>
125 </td>
126 </tr>'
126 </tr>'
127 filerename = '{file|escape}@'
127 filerename = '{file|escape}@'
128 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
128 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
129 fileannotateparent = '
129 fileannotateparent = '
130 <tr>
130 <tr>
131 <td>parent {rev}</td>
131 <td>parent {rev}</td>
132 <td style="font-family:monospace">
132 <td style="font-family:monospace">
133 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
133 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
134 {rename%filerename}{node|short}
134 {rename%filerename}{node|short}
135 </a>
135 </a>
136 </td>
136 </td>
137 </tr>'
137 </tr>'
138 changelogchild = '
138 changelogchild = '
139 <tr>
139 <tr>
140 <th class="child">child {rev}:</th>
140 <th class="child">child {rev}:</th>
141 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
141 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
142 </tr>'
142 </tr>'
143 changesetchild = '
143 changesetchild = '
144 <tr>
144 <tr>
145 <td>child {rev}</td>
145 <td>child {rev}</td>
146 <td style="font-family:monospace">
146 <td style="font-family:monospace">
147 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
147 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
148 </td>
148 </td>
149 </tr>'
149 </tr>'
150 filerevchild = '
150 filerevchild = '
151 <tr>
151 <tr>
152 <td>child {rev}</td>
152 <td>child {rev}</td>
153 <td style="font-family:monospace">
153 <td style="font-family:monospace">
154 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
154 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
155 </tr>'
155 </tr>'
156 fileannotatechild = '
156 fileannotatechild = '
157 <tr>
157 <tr>
158 <td>child {rev}</td>
158 <td>child {rev}</td>
159 <td style="font-family:monospace">
159 <td style="font-family:monospace">
160 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
160 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
161 </tr>'
161 </tr>'
162 tags = tags.tmpl
162 tags = tags.tmpl
163 tagentry = '
163 tagentry = '
164 <tr class="parity{parity}">
164 <tr class="parity{parity}">
165 <td class="age"><i>{date|age}</i></td>
165 <td class="age"><i>{date|age}</i></td>
166 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
166 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
167 <td class="link">
167 <td class="link">
168 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
168 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
169 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
169 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
170 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
170 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
171 </td>
171 </td>
172 </tr>'
172 </tr>'
173 branches = branches.tmpl
173 branches = branches.tmpl
174 branchentry = '
174 branchentry = '
175 <tr class="parity{parity}">
175 <tr class="parity{parity}">
176 <td class="age"><i>{date|age}</i></td>
176 <td class="age"><i>{date|age}</i></td>
177 <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
177 <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
178 <td class="{status}">{branch|escape}</td>
178 <td class="{status}">{branch|escape}</td>
179 <td class="link">
179 <td class="link">
180 <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
180 <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
181 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
181 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
182 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
182 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
183 </td>
183 </td>
184 </tr>'
184 </tr>'
185 diffblock = '<pre>{lines}</pre>'
185 diffblock = '<pre>{lines}</pre>'
186 filediffparent = '
186 filediffparent = '
187 <tr>
187 <tr>
188 <td>parent {rev}</td>
188 <td>parent {rev}</td>
189 <td style="font-family:monospace">
189 <td style="font-family:monospace">
190 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
190 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
191 {node|short}
191 {node|short}
192 </a>
192 </a>
193 </td>
193 </td>
194 </tr>'
194 </tr>'
195 filelogparent = '
195 filelogparent = '
196 <tr>
196 <tr>
197 <td align="right">parent {rev}:&nbsp;</td>
197 <td align="right">parent {rev}:&nbsp;</td>
198 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
198 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
199 </tr>'
199 </tr>'
200 filediffchild = '
200 filediffchild = '
201 <tr>
201 <tr>
202 <td>child {rev}</td>
202 <td>child {rev}</td>
203 <td style="font-family:monospace">
203 <td style="font-family:monospace">
204 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
204 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
205 </td>
205 </td>
206 </tr>'
206 </tr>'
207 filelogchild = '
207 filelogchild = '
208 <tr>
208 <tr>
209 <td align="right">child {rev}:&nbsp;</td>
209 <td align="right">child {rev}:&nbsp;</td>
210 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
210 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
211 </tr>'
211 </tr>'
212 shortlog = shortlog.tmpl
212 shortlog = shortlog.tmpl
213 graph = graph.tmpl
213 graph = graph.tmpl
214 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
214 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
215 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
215 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
216 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
216 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
217 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
217 shortlogentry = '
218 shortlogentry = '
218 <tr class="parity{parity}">
219 <tr class="parity{parity}">
219 <td class="age"><i>{date|age}</i></td>
220 <td class="age"><i>{date|age}</i></td>
220 <td><i>{author|person}</i></td>
221 <td><i>{author|person}</i></td>
221 <td>
222 <td>
222 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
223 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
223 <b>{desc|strip|firstline|escape|nonempty}</b>
224 <b>{desc|strip|firstline|escape|nonempty}</b>
224 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span>
225 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
225 </a>
226 </a>
226 </td>
227 </td>
227 <td class="link" nowrap>
228 <td class="link" nowrap>
228 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
229 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
229 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
230 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
230 </td>
231 </td>
231 </tr>'
232 </tr>'
232 filelogentry = '
233 filelogentry = '
233 <tr class="parity{parity}">
234 <tr class="parity{parity}">
234 <td class="age"><i>{date|age}</i></td>
235 <td class="age"><i>{date|age}</i></td>
235 <td>
236 <td>
236 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
237 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
237 <b>{desc|strip|firstline|escape|nonempty}</b>
238 <b>{desc|strip|firstline|escape|nonempty}</b>
238 </a>
239 </a>
239 </td>
240 </td>
240 <td class="link">
241 <td class="link">
241 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
242 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
242 </tr>'
243 </tr>'
243 archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
244 archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
244 indexentry = '
245 indexentry = '
245 <tr class="parity{parity}">
246 <tr class="parity{parity}">
246 <td>
247 <td>
247 <a class="list" href="{url}{sessionvars%urlparameter}">
248 <a class="list" href="{url}{sessionvars%urlparameter}">
248 <b>{name|escape}</b>
249 <b>{name|escape}</b>
249 </a>
250 </a>
250 </td>
251 </td>
251 <td>{description}</td>
252 <td>{description}</td>
252 <td>{contact|obfuscate}</td>
253 <td>{contact|obfuscate}</td>
253 <td class="age">{lastchange|age}</td>
254 <td class="age">{lastchange|age}</td>
254 <td class="indexlinks">{archives%indexarchiveentry}</td>
255 <td class="indexlinks">{archives%indexarchiveentry}</td>
255 <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
256 <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
256 </tr>\n'
257 </tr>\n'
257 indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
258 indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
258 index = index.tmpl
259 index = index.tmpl
259 urlparameter = '{separator}{name}={value|urlescape}'
260 urlparameter = '{separator}{name}={value|urlescape}'
260 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
261 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,124 +1,128
1 body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
1 body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
2 a { color:#0000cc; }
2 a { color:#0000cc; }
3 a:hover, a:visited, a:active { color:#880000; }
3 a:hover, a:visited, a:active { color:#880000; }
4 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
4 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
5 div.page_header a:visited { color:#0000cc; }
5 div.page_header a:visited { color:#0000cc; }
6 div.page_header a:hover { color:#880000; }
6 div.page_header a:hover { color:#880000; }
7 div.page_nav { padding:8px; }
7 div.page_nav { padding:8px; }
8 div.page_nav a:visited { color:#0000cc; }
8 div.page_nav a:visited { color:#0000cc; }
9 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
9 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
10 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
10 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
11 div.page_footer_text { float:left; color:#555555; font-style:italic; }
11 div.page_footer_text { float:left; color:#555555; font-style:italic; }
12 div.page_body { padding:8px; }
12 div.page_body { padding:8px; }
13 div.title, a.title {
13 div.title, a.title {
14 display:block; padding:6px 8px;
14 display:block; padding:6px 8px;
15 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
15 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
16 }
16 }
17 a.title:hover { background-color: #d9d8d1; }
17 a.title:hover { background-color: #d9d8d1; }
18 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
18 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
19 div.log_body { padding:8px 8px 8px 150px; }
19 div.log_body { padding:8px 8px 8px 150px; }
20 .age { white-space:nowrap; }
20 .age { white-space:nowrap; }
21 span.age { position:relative; float:left; width:142px; font-style:italic; }
21 span.age { position:relative; float:left; width:142px; font-style:italic; }
22 div.log_link {
22 div.log_link {
23 padding:0px 8px;
23 padding:0px 8px;
24 font-size:10px; font-family:sans-serif; font-style:normal;
24 font-size:10px; font-family:sans-serif; font-style:normal;
25 position:relative; float:left; width:136px;
25 position:relative; float:left; width:136px;
26 }
26 }
27 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
27 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
28 a.list { text-decoration:none; color:#000000; }
28 a.list { text-decoration:none; color:#000000; }
29 a.list:hover { text-decoration:underline; color:#880000; }
29 a.list:hover { text-decoration:underline; color:#880000; }
30 table { padding:8px 4px; }
30 table { padding:8px 4px; }
31 th { padding:2px 5px; font-size:12px; text-align:left; }
31 th { padding:2px 5px; font-size:12px; text-align:left; }
32 tr.light:hover, .parity0:hover { background-color:#edece6; }
32 tr.light:hover, .parity0:hover { background-color:#edece6; }
33 tr.dark, .parity1 { background-color:#f6f6f0; }
33 tr.dark, .parity1 { background-color:#f6f6f0; }
34 tr.dark:hover, .parity1:hover { background-color:#edece6; }
34 tr.dark:hover, .parity1:hover { background-color:#edece6; }
35 td { padding:2px 5px; font-size:12px; vertical-align:top; }
35 td { padding:2px 5px; font-size:12px; vertical-align:top; }
36 td.closed { background-color: #99f; }
36 td.closed { background-color: #99f; }
37 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
37 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
38 td.indexlinks { white-space: nowrap; }
38 td.indexlinks { white-space: nowrap; }
39 td.indexlinks a {
39 td.indexlinks a {
40 padding: 2px 5px; line-height: 10px;
40 padding: 2px 5px; line-height: 10px;
41 border: 1px solid;
41 border: 1px solid;
42 color: #ffffff; background-color: #7777bb;
42 color: #ffffff; background-color: #7777bb;
43 border-color: #aaaadd #333366 #333366 #aaaadd;
43 border-color: #aaaadd #333366 #333366 #aaaadd;
44 font-weight: bold; text-align: center; text-decoration: none;
44 font-weight: bold; text-align: center; text-decoration: none;
45 font-size: 10px;
45 font-size: 10px;
46 }
46 }
47 td.indexlinks a:hover { background-color: #6666aa; }
47 td.indexlinks a:hover { background-color: #6666aa; }
48 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
48 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
49 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
49 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
50 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
50 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
51 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
51 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
52 .linenr { color:#999999; text-decoration:none }
52 .linenr { color:#999999; text-decoration:none }
53 div.rss_logo { float: right; white-space: nowrap; }
53 div.rss_logo { float: right; white-space: nowrap; }
54 div.rss_logo a {
54 div.rss_logo a {
55 padding:3px 6px; line-height:10px;
55 padding:3px 6px; line-height:10px;
56 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
56 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
57 color:#ffffff; background-color:#ff6600;
57 color:#ffffff; background-color:#ff6600;
58 font-weight:bold; font-family:sans-serif; font-size:10px;
58 font-weight:bold; font-family:sans-serif; font-size:10px;
59 text-align:center; text-decoration:none;
59 text-align:center; text-decoration:none;
60 }
60 }
61 div.rss_logo a:hover { background-color:#ee5500; }
61 div.rss_logo a:hover { background-color:#ee5500; }
62 pre { margin: 0; }
62 pre { margin: 0; }
63 span.logtags span {
63 span.logtags span {
64 padding: 0px 4px;
64 padding: 0px 4px;
65 font-size: 10px;
65 font-size: 10px;
66 font-weight: normal;
66 font-weight: normal;
67 border: 1px solid;
67 border: 1px solid;
68 background-color: #ffaaff;
68 background-color: #ffaaff;
69 border-color: #ffccff #ff00ee #ff00ee #ffccff;
69 border-color: #ffccff #ff00ee #ff00ee #ffccff;
70 }
70 }
71 span.logtags span.tagtag {
71 span.logtags span.tagtag {
72 background-color: #ffffaa;
72 background-color: #ffffaa;
73 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
73 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
74 }
74 }
75 span.logtags span.branchtag {
75 span.logtags span.branchtag {
76 background-color: #aaffaa;
76 background-color: #aaffaa;
77 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
77 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
78 }
78 }
79 span.logtags span.inbranchtag {
79 span.logtags span.inbranchtag {
80 background-color: #d5dde6;
80 background-color: #d5dde6;
81 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
81 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
82 }
82 }
83 span.logtags span.bookmarktag {
84 background-color: #afdffa;
85 border-color: #ccecff #46ace6 #46ace6 #ccecff;
86 }
83
87
84 /* Graph */
88 /* Graph */
85 div#wrapper {
89 div#wrapper {
86 position: relative;
90 position: relative;
87 margin: 0;
91 margin: 0;
88 padding: 0;
92 padding: 0;
89 margin-top: 3px;
93 margin-top: 3px;
90 }
94 }
91
95
92 canvas {
96 canvas {
93 position: absolute;
97 position: absolute;
94 z-index: 5;
98 z-index: 5;
95 top: -0.9em;
99 top: -0.9em;
96 margin: 0;
100 margin: 0;
97 }
101 }
98
102
99 ul#nodebgs {
103 ul#nodebgs {
100 list-style: none inside none;
104 list-style: none inside none;
101 padding: 0;
105 padding: 0;
102 margin: 0;
106 margin: 0;
103 top: -0.7em;
107 top: -0.7em;
104 }
108 }
105
109
106 ul#graphnodes li, ul#nodebgs li {
110 ul#graphnodes li, ul#nodebgs li {
107 height: 39px;
111 height: 39px;
108 }
112 }
109
113
110 ul#graphnodes {
114 ul#graphnodes {
111 position: absolute;
115 position: absolute;
112 z-index: 10;
116 z-index: 10;
113 top: -0.8em;
117 top: -0.8em;
114 list-style: none inside none;
118 list-style: none inside none;
115 padding: 0;
119 padding: 0;
116 }
120 }
117
121
118 ul#graphnodes li .info {
122 ul#graphnodes li .info {
119 display: block;
123 display: block;
120 font-size: 100%;
124 font-size: 100%;
121 position: relative;
125 position: relative;
122 top: -3px;
126 top: -3px;
123 font-style: italic;
127 font-style: italic;
124 }
128 }
@@ -1,1081 +1,1087
1 An attempt at more fully testing the hgweb web interface.
1 An attempt at more fully testing the hgweb web interface.
2 The following things are tested elsewhere and are therefore omitted:
2 The following things are tested elsewhere and are therefore omitted:
3 - archive, tested in test-archive
3 - archive, tested in test-archive
4 - unbundle, tested in test-push-http
4 - unbundle, tested in test-push-http
5 - changegroupsubset, tested in test-pull
5 - changegroupsubset, tested in test-pull
6
6
7 Set up the repo
7 Set up the repo
8
8
9 $ hg init test
9 $ hg init test
10 $ cd test
10 $ cd test
11 $ mkdir da
11 $ mkdir da
12 $ echo foo > da/foo
12 $ echo foo > da/foo
13 $ echo foo > foo
13 $ echo foo > foo
14 $ hg ci -Ambase
14 $ hg ci -Ambase
15 adding da/foo
15 adding da/foo
16 adding foo
16 adding foo
17 $ hg tag 1.0
17 $ hg tag 1.0
18 $ hg bookmark something
18 $ hg bookmark something
19 $ echo another > foo
19 $ echo another > foo
20 $ hg branch stable
20 $ hg branch stable
21 marked working directory as branch stable
21 marked working directory as branch stable
22 $ hg ci -Ambranch
22 $ hg ci -Ambranch
23 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
23 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
24 $ cat hg.pid >> $DAEMON_PIDS
24 $ cat hg.pid >> $DAEMON_PIDS
25
25
26 Logs and changes
26 Logs and changes
27
27
28 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
28 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
29 200 Script output follows
29 200 Script output follows
30
30
31 <?xml version="1.0" encoding="ascii"?>
31 <?xml version="1.0" encoding="ascii"?>
32 <feed xmlns="http://www.w3.org/2005/Atom">
32 <feed xmlns="http://www.w3.org/2005/Atom">
33 <!-- Changelog -->
33 <!-- Changelog -->
34 <id>http://*:$HGPORT/</id> (glob)
34 <id>http://*:$HGPORT/</id> (glob)
35 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
35 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
36 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
36 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
37 <title>test Changelog</title>
37 <title>test Changelog</title>
38 <updated>1970-01-01T00:00:00+00:00</updated>
38 <updated>1970-01-01T00:00:00+00:00</updated>
39
39
40 <entry>
40 <entry>
41 <title>branch</title>
41 <title>branch</title>
42 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
42 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
43 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
43 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
44 <author>
44 <author>
45 <name>test</name>
45 <name>test</name>
46 <email>&#116;&#101;&#115;&#116;</email>
46 <email>&#116;&#101;&#115;&#116;</email>
47 </author>
47 </author>
48 <updated>1970-01-01T00:00:00+00:00</updated>
48 <updated>1970-01-01T00:00:00+00:00</updated>
49 <published>1970-01-01T00:00:00+00:00</published>
49 <published>1970-01-01T00:00:00+00:00</published>
50 <content type="xhtml">
50 <content type="xhtml">
51 <div xmlns="http://www.w3.org/1999/xhtml">
51 <div xmlns="http://www.w3.org/1999/xhtml">
52 <pre xml:space="preserve">branch</pre>
52 <pre xml:space="preserve">branch</pre>
53 </div>
53 </div>
54 </content>
54 </content>
55 </entry>
55 </entry>
56 <entry>
56 <entry>
57 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
57 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
58 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
58 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
59 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
59 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
60 <author>
60 <author>
61 <name>test</name>
61 <name>test</name>
62 <email>&#116;&#101;&#115;&#116;</email>
62 <email>&#116;&#101;&#115;&#116;</email>
63 </author>
63 </author>
64 <updated>1970-01-01T00:00:00+00:00</updated>
64 <updated>1970-01-01T00:00:00+00:00</updated>
65 <published>1970-01-01T00:00:00+00:00</published>
65 <published>1970-01-01T00:00:00+00:00</published>
66 <content type="xhtml">
66 <content type="xhtml">
67 <div xmlns="http://www.w3.org/1999/xhtml">
67 <div xmlns="http://www.w3.org/1999/xhtml">
68 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
68 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
69 </div>
69 </div>
70 </content>
70 </content>
71 </entry>
71 </entry>
72 <entry>
72 <entry>
73 <title>base</title>
73 <title>base</title>
74 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
74 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
75 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
75 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
76 <author>
76 <author>
77 <name>test</name>
77 <name>test</name>
78 <email>&#116;&#101;&#115;&#116;</email>
78 <email>&#116;&#101;&#115;&#116;</email>
79 </author>
79 </author>
80 <updated>1970-01-01T00:00:00+00:00</updated>
80 <updated>1970-01-01T00:00:00+00:00</updated>
81 <published>1970-01-01T00:00:00+00:00</published>
81 <published>1970-01-01T00:00:00+00:00</published>
82 <content type="xhtml">
82 <content type="xhtml">
83 <div xmlns="http://www.w3.org/1999/xhtml">
83 <div xmlns="http://www.w3.org/1999/xhtml">
84 <pre xml:space="preserve">base</pre>
84 <pre xml:space="preserve">base</pre>
85 </div>
85 </div>
86 </content>
86 </content>
87 </entry>
87 </entry>
88
88
89 </feed>
89 </feed>
90 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
90 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
91 200 Script output follows
91 200 Script output follows
92
92
93 <?xml version="1.0" encoding="ascii"?>
93 <?xml version="1.0" encoding="ascii"?>
94 <feed xmlns="http://www.w3.org/2005/Atom">
94 <feed xmlns="http://www.w3.org/2005/Atom">
95 <!-- Changelog -->
95 <!-- Changelog -->
96 <id>http://*:$HGPORT/</id> (glob)
96 <id>http://*:$HGPORT/</id> (glob)
97 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
97 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
98 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
98 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
99 <title>test Changelog</title>
99 <title>test Changelog</title>
100 <updated>1970-01-01T00:00:00+00:00</updated>
100 <updated>1970-01-01T00:00:00+00:00</updated>
101
101
102 <entry>
102 <entry>
103 <title>branch</title>
103 <title>branch</title>
104 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
104 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
105 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
105 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
106 <author>
106 <author>
107 <name>test</name>
107 <name>test</name>
108 <email>&#116;&#101;&#115;&#116;</email>
108 <email>&#116;&#101;&#115;&#116;</email>
109 </author>
109 </author>
110 <updated>1970-01-01T00:00:00+00:00</updated>
110 <updated>1970-01-01T00:00:00+00:00</updated>
111 <published>1970-01-01T00:00:00+00:00</published>
111 <published>1970-01-01T00:00:00+00:00</published>
112 <content type="xhtml">
112 <content type="xhtml">
113 <div xmlns="http://www.w3.org/1999/xhtml">
113 <div xmlns="http://www.w3.org/1999/xhtml">
114 <pre xml:space="preserve">branch</pre>
114 <pre xml:space="preserve">branch</pre>
115 </div>
115 </div>
116 </content>
116 </content>
117 </entry>
117 </entry>
118 <entry>
118 <entry>
119 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
119 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
120 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
120 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
121 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
121 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
122 <author>
122 <author>
123 <name>test</name>
123 <name>test</name>
124 <email>&#116;&#101;&#115;&#116;</email>
124 <email>&#116;&#101;&#115;&#116;</email>
125 </author>
125 </author>
126 <updated>1970-01-01T00:00:00+00:00</updated>
126 <updated>1970-01-01T00:00:00+00:00</updated>
127 <published>1970-01-01T00:00:00+00:00</published>
127 <published>1970-01-01T00:00:00+00:00</published>
128 <content type="xhtml">
128 <content type="xhtml">
129 <div xmlns="http://www.w3.org/1999/xhtml">
129 <div xmlns="http://www.w3.org/1999/xhtml">
130 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
130 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
131 </div>
131 </div>
132 </content>
132 </content>
133 </entry>
133 </entry>
134 <entry>
134 <entry>
135 <title>base</title>
135 <title>base</title>
136 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
136 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
137 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
137 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
138 <author>
138 <author>
139 <name>test</name>
139 <name>test</name>
140 <email>&#116;&#101;&#115;&#116;</email>
140 <email>&#116;&#101;&#115;&#116;</email>
141 </author>
141 </author>
142 <updated>1970-01-01T00:00:00+00:00</updated>
142 <updated>1970-01-01T00:00:00+00:00</updated>
143 <published>1970-01-01T00:00:00+00:00</published>
143 <published>1970-01-01T00:00:00+00:00</published>
144 <content type="xhtml">
144 <content type="xhtml">
145 <div xmlns="http://www.w3.org/1999/xhtml">
145 <div xmlns="http://www.w3.org/1999/xhtml">
146 <pre xml:space="preserve">base</pre>
146 <pre xml:space="preserve">base</pre>
147 </div>
147 </div>
148 </content>
148 </content>
149 </entry>
149 </entry>
150
150
151 </feed>
151 </feed>
152 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
152 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
153 200 Script output follows
153 200 Script output follows
154
154
155 <?xml version="1.0" encoding="ascii"?>
155 <?xml version="1.0" encoding="ascii"?>
156 <feed xmlns="http://www.w3.org/2005/Atom">
156 <feed xmlns="http://www.w3.org/2005/Atom">
157 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
157 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
158 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
158 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
159 <title>test: foo history</title>
159 <title>test: foo history</title>
160 <updated>1970-01-01T00:00:00+00:00</updated>
160 <updated>1970-01-01T00:00:00+00:00</updated>
161
161
162 <entry>
162 <entry>
163 <title>base</title>
163 <title>base</title>
164 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
164 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
165 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
165 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
166 <author>
166 <author>
167 <name>test</name>
167 <name>test</name>
168 <email>&#116;&#101;&#115;&#116;</email>
168 <email>&#116;&#101;&#115;&#116;</email>
169 </author>
169 </author>
170 <updated>1970-01-01T00:00:00+00:00</updated>
170 <updated>1970-01-01T00:00:00+00:00</updated>
171 <published>1970-01-01T00:00:00+00:00</published>
171 <published>1970-01-01T00:00:00+00:00</published>
172 <content type="xhtml">
172 <content type="xhtml">
173 <div xmlns="http://www.w3.org/1999/xhtml">
173 <div xmlns="http://www.w3.org/1999/xhtml">
174 <pre xml:space="preserve">base</pre>
174 <pre xml:space="preserve">base</pre>
175 </div>
175 </div>
176 </content>
176 </content>
177 </entry>
177 </entry>
178
178
179 </feed>
179 </feed>
180 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
180 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
181 200 Script output follows
181 200 Script output follows
182
182
183 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
183 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
184 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
184 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
185 <head>
185 <head>
186 <link rel="icon" href="/static/hgicon.png" type="image/png" />
186 <link rel="icon" href="/static/hgicon.png" type="image/png" />
187 <meta name="robots" content="index, nofollow" />
187 <meta name="robots" content="index, nofollow" />
188 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
188 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
189
189
190 <title>test: log</title>
190 <title>test: log</title>
191 <link rel="alternate" type="application/atom+xml"
191 <link rel="alternate" type="application/atom+xml"
192 href="/atom-log" title="Atom feed for test" />
192 href="/atom-log" title="Atom feed for test" />
193 <link rel="alternate" type="application/rss+xml"
193 <link rel="alternate" type="application/rss+xml"
194 href="/rss-log" title="RSS feed for test" />
194 href="/rss-log" title="RSS feed for test" />
195 </head>
195 </head>
196 <body>
196 <body>
197
197
198 <div class="container">
198 <div class="container">
199 <div class="menu">
199 <div class="menu">
200 <div class="logo">
200 <div class="logo">
201 <a href="http://mercurial.selenic.com/">
201 <a href="http://mercurial.selenic.com/">
202 <img src="/static/hglogo.png" alt="mercurial" /></a>
202 <img src="/static/hglogo.png" alt="mercurial" /></a>
203 </div>
203 </div>
204 <ul>
204 <ul>
205 <li class="active">log</li>
205 <li class="active">log</li>
206 <li><a href="/graph/1d22e65f027e">graph</a></li>
206 <li><a href="/graph/1d22e65f027e">graph</a></li>
207 <li><a href="/tags">tags</a></li>
207 <li><a href="/tags">tags</a></li>
208 <li><a href="/bookmarks">bookmarks</a></li>
208 <li><a href="/bookmarks">bookmarks</a></li>
209 <li><a href="/branches">branches</a></li>
209 <li><a href="/branches">branches</a></li>
210 </ul>
210 </ul>
211 <ul>
211 <ul>
212 <li><a href="/rev/1d22e65f027e">changeset</a></li>
212 <li><a href="/rev/1d22e65f027e">changeset</a></li>
213 <li><a href="/file/1d22e65f027e">browse</a></li>
213 <li><a href="/file/1d22e65f027e">browse</a></li>
214 </ul>
214 </ul>
215 <ul>
215 <ul>
216
216
217 </ul>
217 </ul>
218 <ul>
218 <ul>
219 <li><a href="/help">help</a></li>
219 <li><a href="/help">help</a></li>
220 </ul>
220 </ul>
221 </div>
221 </div>
222
222
223 <div class="main">
223 <div class="main">
224 <h2><a href="/">test</a></h2>
224 <h2><a href="/">test</a></h2>
225 <h3>log</h3>
225 <h3>log</h3>
226
226
227 <form class="search" action="/log">
227 <form class="search" action="/log">
228
228
229 <p><input name="rev" id="search1" type="text" size="30" /></p>
229 <p><input name="rev" id="search1" type="text" size="30" /></p>
230 <div id="hint">find changesets by author, revision,
230 <div id="hint">find changesets by author, revision,
231 files, or words in the commit message</div>
231 files, or words in the commit message</div>
232 </form>
232 </form>
233
233
234 <div class="navigate">
234 <div class="navigate">
235 <a href="/shortlog/2?revcount=30">less</a>
235 <a href="/shortlog/2?revcount=30">less</a>
236 <a href="/shortlog/2?revcount=120">more</a>
236 <a href="/shortlog/2?revcount=120">more</a>
237 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
237 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
238 </div>
238 </div>
239
239
240 <table class="bigtable">
240 <table class="bigtable">
241 <tr>
241 <tr>
242 <th class="age">age</th>
242 <th class="age">age</th>
243 <th class="author">author</th>
243 <th class="author">author</th>
244 <th class="description">description</th>
244 <th class="description">description</th>
245 </tr>
245 </tr>
246 <tr class="parity0">
246 <tr class="parity0">
247 <td class="age">1970-01-01</td>
247 <td class="age">1970-01-01</td>
248 <td class="author">test</td>
248 <td class="author">test</td>
249 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> <span class="tag">something</span> </td>
249 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> <span class="tag">something</span> </td>
250 </tr>
250 </tr>
251 <tr class="parity1">
251 <tr class="parity1">
252 <td class="age">1970-01-01</td>
252 <td class="age">1970-01-01</td>
253 <td class="author">test</td>
253 <td class="author">test</td>
254 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
254 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
255 </tr>
255 </tr>
256 <tr class="parity0">
256 <tr class="parity0">
257 <td class="age">1970-01-01</td>
257 <td class="age">1970-01-01</td>
258 <td class="author">test</td>
258 <td class="author">test</td>
259 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
259 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
260 </tr>
260 </tr>
261
261
262 </table>
262 </table>
263
263
264 <div class="navigate">
264 <div class="navigate">
265 <a href="/shortlog/2?revcount=30">less</a>
265 <a href="/shortlog/2?revcount=30">less</a>
266 <a href="/shortlog/2?revcount=120">more</a>
266 <a href="/shortlog/2?revcount=120">more</a>
267 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
267 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
268 </div>
268 </div>
269
269
270 </div>
270 </div>
271 </div>
271 </div>
272
272
273
273
274
274
275 </body>
275 </body>
276 </html>
276 </html>
277
277
278 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
278 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
279 200 Script output follows
279 200 Script output follows
280
280
281 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
281 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
282 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
282 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
283 <head>
283 <head>
284 <link rel="icon" href="/static/hgicon.png" type="image/png" />
284 <link rel="icon" href="/static/hgicon.png" type="image/png" />
285 <meta name="robots" content="index, nofollow" />
285 <meta name="robots" content="index, nofollow" />
286 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
286 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
287
287
288 <title>test: 2ef0ac749a14</title>
288 <title>test: 2ef0ac749a14</title>
289 </head>
289 </head>
290 <body>
290 <body>
291 <div class="container">
291 <div class="container">
292 <div class="menu">
292 <div class="menu">
293 <div class="logo">
293 <div class="logo">
294 <a href="http://mercurial.selenic.com/">
294 <a href="http://mercurial.selenic.com/">
295 <img src="/static/hglogo.png" alt="mercurial" /></a>
295 <img src="/static/hglogo.png" alt="mercurial" /></a>
296 </div>
296 </div>
297 <ul>
297 <ul>
298 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
298 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
299 <li><a href="/graph/2ef0ac749a14">graph</a></li>
299 <li><a href="/graph/2ef0ac749a14">graph</a></li>
300 <li><a href="/tags">tags</a></li>
300 <li><a href="/tags">tags</a></li>
301 <li><a href="/bookmarks">bookmarks</a></li>
301 <li><a href="/bookmarks">bookmarks</a></li>
302 <li><a href="/branches">branches</a></li>
302 <li><a href="/branches">branches</a></li>
303 </ul>
303 </ul>
304 <ul>
304 <ul>
305 <li class="active">changeset</li>
305 <li class="active">changeset</li>
306 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
306 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
307 <li><a href="/file/2ef0ac749a14">browse</a></li>
307 <li><a href="/file/2ef0ac749a14">browse</a></li>
308 </ul>
308 </ul>
309 <ul>
309 <ul>
310
310
311 </ul>
311 </ul>
312 <ul>
312 <ul>
313 <li><a href="/help">help</a></li>
313 <li><a href="/help">help</a></li>
314 </ul>
314 </ul>
315 </div>
315 </div>
316
316
317 <div class="main">
317 <div class="main">
318
318
319 <h2><a href="/">test</a></h2>
319 <h2><a href="/">test</a></h2>
320 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> </h3>
320 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> </h3>
321
321
322 <form class="search" action="/log">
322 <form class="search" action="/log">
323
323
324 <p><input name="rev" id="search1" type="text" size="30" /></p>
324 <p><input name="rev" id="search1" type="text" size="30" /></p>
325 <div id="hint">find changesets by author, revision,
325 <div id="hint">find changesets by author, revision,
326 files, or words in the commit message</div>
326 files, or words in the commit message</div>
327 </form>
327 </form>
328
328
329 <div class="description">base</div>
329 <div class="description">base</div>
330
330
331 <table id="changesetEntry">
331 <table id="changesetEntry">
332 <tr>
332 <tr>
333 <th class="author">author</th>
333 <th class="author">author</th>
334 <td class="author">&#116;&#101;&#115;&#116;</td>
334 <td class="author">&#116;&#101;&#115;&#116;</td>
335 </tr>
335 </tr>
336 <tr>
336 <tr>
337 <th class="date">date</th>
337 <th class="date">date</th>
338 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
338 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
339 <tr>
339 <tr>
340 <th class="author">parents</th>
340 <th class="author">parents</th>
341 <td class="author"></td>
341 <td class="author"></td>
342 </tr>
342 </tr>
343 <tr>
343 <tr>
344 <th class="author">children</th>
344 <th class="author">children</th>
345 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
345 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
346 </tr>
346 </tr>
347 <tr>
347 <tr>
348 <th class="files">files</th>
348 <th class="files">files</th>
349 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
349 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
350 </tr>
350 </tr>
351 </table>
351 </table>
352
352
353 <div class="overflow">
353 <div class="overflow">
354 <div class="sourcefirst"> line diff</div>
354 <div class="sourcefirst"> line diff</div>
355
355
356 <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 <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
357 </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.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/da/foo Thu Jan 01 00:00:00 1970 +0000
358 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
358 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
359 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
359 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
360 </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></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
361 </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.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
362 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
362 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
363 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
363 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
364 </span></pre></div>
364 </span></pre></div>
365 </div>
365 </div>
366
366
367 </div>
367 </div>
368 </div>
368 </div>
369
369
370
370
371 </body>
371 </body>
372 </html>
372 </html>
373
373
374 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
374 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
375 200 Script output follows
375 200 Script output follows
376
376
377
377
378 # HG changeset patch
378 # HG changeset patch
379 # User test
379 # User test
380 # Date 0 0
380 # Date 0 0
381 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
381 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
382 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
382 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
383 Added tag 1.0 for changeset 2ef0ac749a14
383 Added tag 1.0 for changeset 2ef0ac749a14
384
384
385 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
385 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
386 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
386 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
387 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
387 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
388 @@ -0,0 +1,1 @@
388 @@ -0,0 +1,1 @@
389 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
389 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
390
390
391 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
391 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
392 200 Script output follows
392 200 Script output follows
393
393
394 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
394 <!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">
395 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
396 <head>
396 <head>
397 <link rel="icon" href="/static/hgicon.png" type="image/png" />
397 <link rel="icon" href="/static/hgicon.png" type="image/png" />
398 <meta name="robots" content="index, nofollow" />
398 <meta name="robots" content="index, nofollow" />
399 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
399 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
400
400
401 <title>test: searching for base</title>
401 <title>test: searching for base</title>
402 </head>
402 </head>
403 <body>
403 <body>
404
404
405 <div class="container">
405 <div class="container">
406 <div class="menu">
406 <div class="menu">
407 <div class="logo">
407 <div class="logo">
408 <a href="http://mercurial.selenic.com/">
408 <a href="http://mercurial.selenic.com/">
409 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
409 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
410 </div>
410 </div>
411 <ul>
411 <ul>
412 <li><a href="/shortlog">log</a></li>
412 <li><a href="/shortlog">log</a></li>
413 <li><a href="/graph">graph</a></li>
413 <li><a href="/graph">graph</a></li>
414 <li><a href="/tags">tags</a></li>
414 <li><a href="/tags">tags</a></li>
415 <li><a href="/bookmarks">bookmarks</a></li>
415 <li><a href="/bookmarks">bookmarks</a></li>
416 <li><a href="/branches">branches</a></li>
416 <li><a href="/branches">branches</a></li>
417 <li><a href="/help">help</a></li>
417 <li><a href="/help">help</a></li>
418 </ul>
418 </ul>
419 </div>
419 </div>
420
420
421 <div class="main">
421 <div class="main">
422 <h2><a href="/">test</a></h2>
422 <h2><a href="/">test</a></h2>
423 <h3>searching for 'base'</h3>
423 <h3>searching for 'base'</h3>
424
424
425 <form class="search" action="/log">
425 <form class="search" action="/log">
426
426
427 <p><input name="rev" id="search1" type="text" size="30"></p>
427 <p><input name="rev" id="search1" type="text" size="30"></p>
428 <div id="hint">find changesets by author, revision,
428 <div id="hint">find changesets by author, revision,
429 files, or words in the commit message</div>
429 files, or words in the commit message</div>
430 </form>
430 </form>
431
431
432 <div class="navigate">
432 <div class="navigate">
433 <a href="/search/?rev=base&revcount=5">less</a>
433 <a href="/search/?rev=base&revcount=5">less</a>
434 <a href="/search/?rev=base&revcount=20">more</a>
434 <a href="/search/?rev=base&revcount=20">more</a>
435 </div>
435 </div>
436
436
437 <table class="bigtable">
437 <table class="bigtable">
438 <tr>
438 <tr>
439 <th class="age">age</th>
439 <th class="age">age</th>
440 <th class="author">author</th>
440 <th class="author">author</th>
441 <th class="description">description</th>
441 <th class="description">description</th>
442 </tr>
442 </tr>
443 <tr class="parity0">
443 <tr class="parity0">
444 <td class="age">1970-01-01</td>
444 <td class="age">1970-01-01</td>
445 <td class="author">test</td>
445 <td class="author">test</td>
446 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
446 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
447 </tr>
447 </tr>
448
448
449 </table>
449 </table>
450
450
451 <div class="navigate">
451 <div class="navigate">
452 <a href="/search/?rev=base&revcount=5">less</a>
452 <a href="/search/?rev=base&revcount=5">less</a>
453 <a href="/search/?rev=base&revcount=20">more</a>
453 <a href="/search/?rev=base&revcount=20">more</a>
454 </div>
454 </div>
455
455
456 </div>
456 </div>
457 </div>
457 </div>
458
458
459
459
460
460
461 </body>
461 </body>
462 </html>
462 </html>
463
463
464
464
465 File-related
465 File-related
466
466
467 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
467 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
468 200 Script output follows
468 200 Script output follows
469
469
470 foo
470 foo
471 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
471 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
472 200 Script output follows
472 200 Script output follows
473
473
474
474
475 test@0: foo
475 test@0: foo
476
476
477
477
478
478
479
479
480 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
480 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
481 200 Script output follows
481 200 Script output follows
482
482
483
483
484 drwxr-xr-x da
484 drwxr-xr-x da
485 -rw-r--r-- 45 .hgtags
485 -rw-r--r-- 45 .hgtags
486 -rw-r--r-- 4 foo
486 -rw-r--r-- 4 foo
487
487
488
488
489 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
489 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
490 200 Script output follows
490 200 Script output follows
491
491
492 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
492 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
493 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
493 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
494 <head>
494 <head>
495 <link rel="icon" href="/static/hgicon.png" type="image/png" />
495 <link rel="icon" href="/static/hgicon.png" type="image/png" />
496 <meta name="robots" content="index, nofollow" />
496 <meta name="robots" content="index, nofollow" />
497 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
497 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
498
498
499 <title>test: a4f92ed23982 foo</title>
499 <title>test: a4f92ed23982 foo</title>
500 </head>
500 </head>
501 <body>
501 <body>
502
502
503 <div class="container">
503 <div class="container">
504 <div class="menu">
504 <div class="menu">
505 <div class="logo">
505 <div class="logo">
506 <a href="http://mercurial.selenic.com/">
506 <a href="http://mercurial.selenic.com/">
507 <img src="/static/hglogo.png" alt="mercurial" /></a>
507 <img src="/static/hglogo.png" alt="mercurial" /></a>
508 </div>
508 </div>
509 <ul>
509 <ul>
510 <li><a href="/shortlog/a4f92ed23982">log</a></li>
510 <li><a href="/shortlog/a4f92ed23982">log</a></li>
511 <li><a href="/graph/a4f92ed23982">graph</a></li>
511 <li><a href="/graph/a4f92ed23982">graph</a></li>
512 <li><a href="/tags">tags</a></li>
512 <li><a href="/tags">tags</a></li>
513 <li><a href="/branches">branches</a></li>
513 <li><a href="/branches">branches</a></li>
514 </ul>
514 </ul>
515 <ul>
515 <ul>
516 <li><a href="/rev/a4f92ed23982">changeset</a></li>
516 <li><a href="/rev/a4f92ed23982">changeset</a></li>
517 <li><a href="/file/a4f92ed23982/">browse</a></li>
517 <li><a href="/file/a4f92ed23982/">browse</a></li>
518 </ul>
518 </ul>
519 <ul>
519 <ul>
520 <li class="active">file</li>
520 <li class="active">file</li>
521 <li><a href="/file/tip/foo">latest</a></li>
521 <li><a href="/file/tip/foo">latest</a></li>
522 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
522 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
523 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
523 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
524 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
524 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
525 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
525 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
526 </ul>
526 </ul>
527 <ul>
527 <ul>
528 <li><a href="/help">help</a></li>
528 <li><a href="/help">help</a></li>
529 </ul>
529 </ul>
530 </div>
530 </div>
531
531
532 <div class="main">
532 <div class="main">
533 <h2><a href="/">test</a></h2>
533 <h2><a href="/">test</a></h2>
534 <h3>view foo @ 1:a4f92ed23982</h3>
534 <h3>view foo @ 1:a4f92ed23982</h3>
535
535
536 <form class="search" action="/log">
536 <form class="search" action="/log">
537
537
538 <p><input name="rev" id="search1" type="text" size="30" /></p>
538 <p><input name="rev" id="search1" type="text" size="30" /></p>
539 <div id="hint">find changesets by author, revision,
539 <div id="hint">find changesets by author, revision,
540 files, or words in the commit message</div>
540 files, or words in the commit message</div>
541 </form>
541 </form>
542
542
543 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
543 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
544
544
545 <table id="changesetEntry">
545 <table id="changesetEntry">
546 <tr>
546 <tr>
547 <th class="author">author</th>
547 <th class="author">author</th>
548 <td class="author">&#116;&#101;&#115;&#116;</td>
548 <td class="author">&#116;&#101;&#115;&#116;</td>
549 </tr>
549 </tr>
550 <tr>
550 <tr>
551 <th class="date">date</th>
551 <th class="date">date</th>
552 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
552 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
553 </tr>
553 </tr>
554 <tr>
554 <tr>
555 <th class="author">parents</th>
555 <th class="author">parents</th>
556 <td class="author"></td>
556 <td class="author"></td>
557 </tr>
557 </tr>
558 <tr>
558 <tr>
559 <th class="author">children</th>
559 <th class="author">children</th>
560 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
560 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
561 </tr>
561 </tr>
562
562
563 </table>
563 </table>
564
564
565 <div class="overflow">
565 <div class="overflow">
566 <div class="sourcefirst"> line source</div>
566 <div class="sourcefirst"> line source</div>
567
567
568 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
568 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
569 </div>
569 </div>
570 <div class="sourcelast"></div>
570 <div class="sourcelast"></div>
571 </div>
571 </div>
572 </div>
572 </div>
573 </div>
573 </div>
574
574
575
575
576
576
577 </body>
577 </body>
578 </html>
578 </html>
579
579
580 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
580 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
581 200 Script output follows
581 200 Script output follows
582
582
583
583
584 diff -r 000000000000 -r a4f92ed23982 foo
584 diff -r 000000000000 -r a4f92ed23982 foo
585 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
585 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
586 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
586 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
587 @@ -0,0 +1,1 @@
587 @@ -0,0 +1,1 @@
588 +foo
588 +foo
589
589
590
590
591
591
592
592
593
593
594 Overviews
594 Overviews
595
595
596 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
596 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
597 200 Script output follows
597 200 Script output follows
598
598
599 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
599 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
600 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
600 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
601 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
601 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
602 200 Script output follows
602 200 Script output follows
603
603
604 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
604 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
605 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
605 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
606 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
606 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
607 200 Script output follows
607 200 Script output follows
608
608
609 <?xml version="1.0" encoding="ascii"?>
609 <?xml version="1.0" encoding="ascii"?>
610 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
610 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
611 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
611 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
612 <head>
612 <head>
613 <link rel="icon" href="/static/hgicon.png" type="image/png" />
613 <link rel="icon" href="/static/hgicon.png" type="image/png" />
614 <meta name="robots" content="index, nofollow"/>
614 <meta name="robots" content="index, nofollow"/>
615 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
615 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
616
616
617
617
618 <title>test: Summary</title>
618 <title>test: Summary</title>
619 <link rel="alternate" type="application/atom+xml"
619 <link rel="alternate" type="application/atom+xml"
620 href="/atom-log" title="Atom feed for test"/>
620 href="/atom-log" title="Atom feed for test"/>
621 <link rel="alternate" type="application/rss+xml"
621 <link rel="alternate" type="application/rss+xml"
622 href="/rss-log" title="RSS feed for test"/>
622 href="/rss-log" title="RSS feed for test"/>
623 </head>
623 </head>
624 <body>
624 <body>
625
625
626 <div class="page_header">
626 <div class="page_header">
627 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
627 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
628
628
629 <form action="/log">
629 <form action="/log">
630 <input type="hidden" name="style" value="gitweb" />
630 <input type="hidden" name="style" value="gitweb" />
631 <div class="search">
631 <div class="search">
632 <input type="text" name="rev" />
632 <input type="text" name="rev" />
633 </div>
633 </div>
634 </form>
634 </form>
635 </div>
635 </div>
636
636
637 <div class="page_nav">
637 <div class="page_nav">
638 summary |
638 summary |
639 <a href="/shortlog?style=gitweb">shortlog</a> |
639 <a href="/shortlog?style=gitweb">shortlog</a> |
640 <a href="/log?style=gitweb">changelog</a> |
640 <a href="/log?style=gitweb">changelog</a> |
641 <a href="/graph?style=gitweb">graph</a> |
641 <a href="/graph?style=gitweb">graph</a> |
642 <a href="/tags?style=gitweb">tags</a> |
642 <a href="/tags?style=gitweb">tags</a> |
643 <a href="/branches?style=gitweb">branches</a> |
643 <a href="/branches?style=gitweb">branches</a> |
644 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
644 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
645 <a href="/help?style=gitweb">help</a>
645 <a href="/help?style=gitweb">help</a>
646 <br/>
646 <br/>
647 </div>
647 </div>
648
648
649 <div class="title">&nbsp;</div>
649 <div class="title">&nbsp;</div>
650 <table cellspacing="0">
650 <table cellspacing="0">
651 <tr><td>description</td><td>unknown</td></tr>
651 <tr><td>description</td><td>unknown</td></tr>
652 <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>
652 <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>
653 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
653 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
654 </table>
654 </table>
655
655
656 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
656 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
657 <table cellspacing="0">
657 <table cellspacing="0">
658
658
659 <tr class="parity0">
659 <tr class="parity0">
660 <td class="age"><i>1970-01-01</i></td>
660 <td class="age"><i>1970-01-01</i></td>
661 <td><i>test</i></td>
661 <td><i>test</i></td>
662 <td>
662 <td>
663 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
663 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
664 <b>branch</b>
664 <b>branch</b>
665 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> </span>
665 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> <span class="bookmarktag" title="something">something</span> </span>
666 </a>
666 </a>
667 </td>
667 </td>
668 <td class="link" nowrap>
668 <td class="link" nowrap>
669 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
669 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
670 <a href="/file/1d22e65f027e?style=gitweb">files</a>
670 <a href="/file/1d22e65f027e?style=gitweb">files</a>
671 </td>
671 </td>
672 </tr>
672 </tr>
673 <tr class="parity1">
673 <tr class="parity1">
674 <td class="age"><i>1970-01-01</i></td>
674 <td class="age"><i>1970-01-01</i></td>
675 <td><i>test</i></td>
675 <td><i>test</i></td>
676 <td>
676 <td>
677 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
677 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
678 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
678 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
679 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
679 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
680 </a>
680 </a>
681 </td>
681 </td>
682 <td class="link" nowrap>
682 <td class="link" nowrap>
683 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
683 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
684 <a href="/file/a4f92ed23982?style=gitweb">files</a>
684 <a href="/file/a4f92ed23982?style=gitweb">files</a>
685 </td>
685 </td>
686 </tr>
686 </tr>
687 <tr class="parity0">
687 <tr class="parity0">
688 <td class="age"><i>1970-01-01</i></td>
688 <td class="age"><i>1970-01-01</i></td>
689 <td><i>test</i></td>
689 <td><i>test</i></td>
690 <td>
690 <td>
691 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
691 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
692 <b>base</b>
692 <b>base</b>
693 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> </span>
693 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> </span>
694 </a>
694 </a>
695 </td>
695 </td>
696 <td class="link" nowrap>
696 <td class="link" nowrap>
697 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
697 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
698 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
698 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
699 </td>
699 </td>
700 </tr>
700 </tr>
701 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
701 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
702 </table>
702 </table>
703
703
704 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
704 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
705 <table cellspacing="0">
705 <table cellspacing="0">
706
706
707 <tr class="parity0">
707 <tr class="parity0">
708 <td class="age"><i>1970-01-01</i></td>
708 <td class="age"><i>1970-01-01</i></td>
709 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
709 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
710 <td class="link">
710 <td class="link">
711 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
711 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
712 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
712 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
713 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
713 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
714 </td>
714 </td>
715 </tr>
715 </tr>
716 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
716 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
717 </table>
717 </table>
718
718
719 <div><a class="title" href="#">branches</a></div>
719 <div><a class="title" href="#">branches</a></div>
720 <table cellspacing="0">
720 <table cellspacing="0">
721
721
722 <tr class="parity0">
722 <tr class="parity0">
723 <td class="age"><i>1970-01-01</i></td>
723 <td class="age"><i>1970-01-01</i></td>
724 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
724 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
725 <td class="">stable</td>
725 <td class="">stable</td>
726 <td class="link">
726 <td class="link">
727 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
727 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
728 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
728 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
729 <a href="/file/1d22e65f027e?style=gitweb">files</a>
729 <a href="/file/1d22e65f027e?style=gitweb">files</a>
730 </td>
730 </td>
731 </tr>
731 </tr>
732 <tr class="parity1">
732 <tr class="parity1">
733 <td class="age"><i>1970-01-01</i></td>
733 <td class="age"><i>1970-01-01</i></td>
734 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
734 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
735 <td class="">default</td>
735 <td class="">default</td>
736 <td class="link">
736 <td class="link">
737 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
737 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
738 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
738 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
739 <a href="/file/a4f92ed23982?style=gitweb">files</a>
739 <a href="/file/a4f92ed23982?style=gitweb">files</a>
740 </td>
740 </td>
741 </tr>
741 </tr>
742 <tr class="light">
742 <tr class="light">
743 <td colspan="4"><a class="list" href="#">...</a></td>
743 <td colspan="4"><a class="list" href="#">...</a></td>
744 </tr>
744 </tr>
745 </table>
745 </table>
746 <div class="page_footer">
746 <div class="page_footer">
747 <div class="page_footer_text">test</div>
747 <div class="page_footer_text">test</div>
748 <div class="rss_logo">
748 <div class="rss_logo">
749 <a href="/rss-log">RSS</a>
749 <a href="/rss-log">RSS</a>
750 <a href="/atom-log">Atom</a>
750 <a href="/atom-log">Atom</a>
751 </div>
751 </div>
752 <br />
752 <br />
753
753
754 </div>
754 </div>
755 </body>
755 </body>
756 </html>
756 </html>
757
757
758 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
758 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
759 200 Script output follows
759 200 Script output follows
760
760
761 <?xml version="1.0" encoding="ascii"?>
761 <?xml version="1.0" encoding="ascii"?>
762 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
762 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
763 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
763 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
764 <head>
764 <head>
765 <link rel="icon" href="/static/hgicon.png" type="image/png" />
765 <link rel="icon" href="/static/hgicon.png" type="image/png" />
766 <meta name="robots" content="index, nofollow"/>
766 <meta name="robots" content="index, nofollow"/>
767 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
767 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
768
768
769
769
770 <title>test: Graph</title>
770 <title>test: Graph</title>
771 <link rel="alternate" type="application/atom+xml"
771 <link rel="alternate" type="application/atom+xml"
772 href="/atom-log" title="Atom feed for test"/>
772 href="/atom-log" title="Atom feed for test"/>
773 <link rel="alternate" type="application/rss+xml"
773 <link rel="alternate" type="application/rss+xml"
774 href="/rss-log" title="RSS feed for test"/>
774 href="/rss-log" title="RSS feed for test"/>
775 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
775 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
776 </head>
776 </head>
777 <body>
777 <body>
778
778
779 <div class="page_header">
779 <div class="page_header">
780 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
780 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
781 </div>
781 </div>
782
782
783 <form action="/log">
783 <form action="/log">
784 <input type="hidden" name="style" value="gitweb" />
784 <input type="hidden" name="style" value="gitweb" />
785 <div class="search">
785 <div class="search">
786 <input type="text" name="rev" />
786 <input type="text" name="rev" />
787 </div>
787 </div>
788 </form>
788 </form>
789 <div class="page_nav">
789 <div class="page_nav">
790 <a href="/summary?style=gitweb">summary</a> |
790 <a href="/summary?style=gitweb">summary</a> |
791 <a href="/shortlog?style=gitweb">shortlog</a> |
791 <a href="/shortlog?style=gitweb">shortlog</a> |
792 <a href="/log/2?style=gitweb">changelog</a> |
792 <a href="/log/2?style=gitweb">changelog</a> |
793 graph |
793 graph |
794 <a href="/tags?style=gitweb">tags</a> |
794 <a href="/tags?style=gitweb">tags</a> |
795 <a href="/branches?style=gitweb">branches</a> |
795 <a href="/branches?style=gitweb">branches</a> |
796 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
796 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
797 <a href="/help?style=gitweb">help</a>
797 <a href="/help?style=gitweb">help</a>
798 <br/>
798 <br/>
799 <a href="/graph/2?style=gitweb&revcount=30">less</a>
799 <a href="/graph/2?style=gitweb&revcount=30">less</a>
800 <a href="/graph/2?style=gitweb&revcount=120">more</a>
800 <a href="/graph/2?style=gitweb&revcount=120">more</a>
801 | <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/>
801 | <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/>
802 </div>
802 </div>
803
803
804 <div class="title">&nbsp;</div>
804 <div class="title">&nbsp;</div>
805
805
806 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
806 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
807
807
808 <div id="wrapper">
808 <div id="wrapper">
809 <ul id="nodebgs"></ul>
809 <ul id="nodebgs"></ul>
810 <canvas id="graph" width="480" height="129"></canvas>
810 <canvas id="graph" width="480" height="129"></canvas>
811 <ul id="graphnodes"></ul>
811 <ul id="graphnodes"></ul>
812 </div>
812 </div>
813
813
814 <script type="text/javascript" src="/static/graph.js"></script>
814 <script type="text/javascript" src="/static/graph.js"></script>
815 <script>
815 <script>
816 <!-- hide script content
816 <!-- hide script content
817
817
818 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], []]];
818 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], []]];
819 var graph = new Graph();
819 var graph = new Graph();
820 graph.scale(39);
820 graph.scale(39);
821
821
822 graph.edge = function(x0, y0, x1, y1, color) {
822 graph.edge = function(x0, y0, x1, y1, color) {
823
823
824 this.setColor(color, 0.0, 0.65);
824 this.setColor(color, 0.0, 0.65);
825 this.ctx.beginPath();
825 this.ctx.beginPath();
826 this.ctx.moveTo(x0, y0);
826 this.ctx.moveTo(x0, y0);
827 this.ctx.lineTo(x1, y1);
827 this.ctx.lineTo(x1, y1);
828 this.ctx.stroke();
828 this.ctx.stroke();
829
829
830 }
830 }
831
831
832 var revlink = '<li style="_STYLE"><span class="desc">';
832 var revlink = '<li style="_STYLE"><span class="desc">';
833 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
833 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
834 revlink += '</span> _TAGS';
834 revlink += '</span> _TAGS';
835 revlink += '<span class="info">_DATE, by _USER</span></li>';
835 revlink += '<span class="info">_DATE, by _USER</span></li>';
836
836
837 graph.vertex = function(x, y, color, parity, cur) {
837 graph.vertex = function(x, y, color, parity, cur) {
838
838
839 this.ctx.beginPath();
839 this.ctx.beginPath();
840 color = this.setColor(color, 0.25, 0.75);
840 color = this.setColor(color, 0.25, 0.75);
841 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
841 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
842 this.ctx.fill();
842 this.ctx.fill();
843
843
844 var bg = '<li class="bg parity' + parity + '"></li>';
844 var bg = '<li class="bg parity' + parity + '"></li>';
845 var left = (this.columns + 1) * this.bg_height;
845 var left = (this.columns + 1) * this.bg_height;
846 var nstyle = 'padding-left: ' + left + 'px;';
846 var nstyle = 'padding-left: ' + left + 'px;';
847 var item = revlink.replace(/_STYLE/, nstyle);
847 var item = revlink.replace(/_STYLE/, nstyle);
848 item = item.replace(/_PARITY/, 'parity' + parity);
848 item = item.replace(/_PARITY/, 'parity' + parity);
849 item = item.replace(/_NODEID/, cur[0]);
849 item = item.replace(/_NODEID/, cur[0]);
850 item = item.replace(/_NODEID/, cur[0]);
850 item = item.replace(/_NODEID/, cur[0]);
851 item = item.replace(/_DESC/, cur[3]);
851 item = item.replace(/_DESC/, cur[3]);
852 item = item.replace(/_USER/, cur[4]);
852 item = item.replace(/_USER/, cur[4]);
853 item = item.replace(/_DATE/, cur[5]);
853 item = item.replace(/_DATE/, cur[5]);
854
854
855 var tagspan = '';
855 var tagspan = '';
856 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
856 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
857 tagspan = '<span class="logtags">';
857 tagspan = '<span class="logtags">';
858 if (cur[6][1]) {
858 if (cur[6][1]) {
859 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
859 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
860 tagspan += cur[6][0] + '</span> ';
860 tagspan += cur[6][0] + '</span> ';
861 } else if (!cur[6][1] && cur[6][0] != 'default') {
861 } else if (!cur[6][1] && cur[6][0] != 'default') {
862 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
862 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
863 tagspan += cur[6][0] + '</span> ';
863 tagspan += cur[6][0] + '</span> ';
864 }
864 }
865 if (cur[7].length) {
865 if (cur[7].length) {
866 for (var t in cur[7]) {
866 for (var t in cur[7]) {
867 var tag = cur[7][t];
867 var tag = cur[7][t];
868 tagspan += '<span class="tagtag">' + tag + '</span> ';
868 tagspan += '<span class="tagtag">' + tag + '</span> ';
869 }
869 }
870 }
870 }
871 if (cur[8].length) {
872 for (var t in cur[8]) {
873 var bookmark = cur[8][t];
874 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
875 }
876 }
871 tagspan += '</span>';
877 tagspan += '</span>';
872 }
878 }
873
879
874 item = item.replace(/_TAGS/, tagspan);
880 item = item.replace(/_TAGS/, tagspan);
875 return [bg, item];
881 return [bg, item];
876
882
877 }
883 }
878
884
879 graph.render(data);
885 graph.render(data);
880
886
881 // stop hiding script -->
887 // stop hiding script -->
882 </script>
888 </script>
883
889
884 <div class="page_nav">
890 <div class="page_nav">
885 <a href="/graph/2?style=gitweb&revcount=30">less</a>
891 <a href="/graph/2?style=gitweb&revcount=30">less</a>
886 <a href="/graph/2?style=gitweb&revcount=120">more</a>
892 <a href="/graph/2?style=gitweb&revcount=120">more</a>
887 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
893 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
888 </div>
894 </div>
889
895
890 <div class="page_footer">
896 <div class="page_footer">
891 <div class="page_footer_text">test</div>
897 <div class="page_footer_text">test</div>
892 <div class="rss_logo">
898 <div class="rss_logo">
893 <a href="/rss-log">RSS</a>
899 <a href="/rss-log">RSS</a>
894 <a href="/atom-log">Atom</a>
900 <a href="/atom-log">Atom</a>
895 </div>
901 </div>
896 <br />
902 <br />
897
903
898 </div>
904 </div>
899 </body>
905 </body>
900 </html>
906 </html>
901
907
902
908
903 capabilities
909 capabilities
904
910
905 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
911 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
906 200 Script output follows
912 200 Script output follows
907
913
908 lookup changegroupsubset branchmap pushkey unbundle=HG10GZ,HG10BZ,HG10UN
914 lookup changegroupsubset branchmap pushkey unbundle=HG10GZ,HG10BZ,HG10UN
909
915
910 heads
916 heads
911
917
912 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
918 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
913 200 Script output follows
919 200 Script output follows
914
920
915 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
921 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
916
922
917 branches
923 branches
918
924
919 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
925 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
920 200 Script output follows
926 200 Script output follows
921
927
922 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
928 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
923
929
924 changegroup
930 changegroup
925
931
926 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
932 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
927 200 Script output follows
933 200 Script output follows
928
934
929 x\x9c\xbdTMHUA\x14\xbe\xa8\xf9\xec\xda&\x10\x11*\xb8\x88\x81\x99\xbef\xe6\xce\xbdw\xc6\xf2a\x16E\x1b\x11[%\x98\xcc\xaf\x8f\x8c\xf7\xc0\xf7\x82 (esc)
935 x\x9c\xbdTMHUA\x14\xbe\xa8\xf9\xec\xda&\x10\x11*\xb8\x88\x81\x99\xbef\xe6\xce\xbdw\xc6\xf2a\x16E\x1b\x11[%\x98\xcc\xaf\x8f\x8c\xf7\xc0\xf7\x82 (esc)
930 4\x11KP2m\x95\xad*\xabE\x05AP\xd0\xc22Z\x14\xf9\x03\xb9j\xa3\x9b$\xa4MJ\xb4\x90\xc0\x9a\x9bO0\x10\xdf\x13\xa2\x81\x0f\x869g\xe6|\xe7\x9c\xef\x8ceY\xf7\xa2KO\xd2\xb7K\x16~\\n\xe9\xad\x90w\x86\xab\x93W\x8e\xdf\xb0r\\Y\xee6(\xa2)\xf6\x95\xc6\x01\xe4\x1az\x80R\xe8kN\x98\xe7R\xa4\xa9K@\xe0!A\xb4k\xa7U*m\x03\x07\xd8\x92\x1d\xd2\xc9\xa4\x1d\xc2\xe6,\xa5\xcc+\x1f\xef\xafDgi\xef\xab\x1d\x1d\xb7\x9a\xe7[W\xfbc\x8f\xde-\xcd\xe7\xcaz\xb3\xbb\x19\xd3\x81\x10>c>\x08\x00"X\x11\xc2\x84@\xd2\xe7B*L\x00\x01P\x04R\xc3@\xbaB0\xdb8#\x83:\x83\xa2h\xbc=\xcd\xdaS\xe1Y,L\xd3\xa0\xf2\xa8\x94J:\xe6\xd8\x81Q\xe0\xe8d\xa7#\xe2,\xd1\xaeR*\xed \xa5\x01\x13\x01\xa6\x0cb\xe3;\xbe\xaf\xfcK[^wK\xe1N\xaf\xbbk\xe8B\xd1\xf4\xc1\x07\xb3\xab[\x10\xfdkmvwcB\xa6\xa4\xd4G\xc4D\xc2\x141\xad\x91\x10\x00\x08J\x81\xcb}\xee \xee+W\xba\x8a\x80\x90|\xd4\xa0\xd6\xa0\xd4T\xde\xe1\x9d,!\xe2\xb5\xa94\xe3\xe7\xd5\x9f\x06\x18\xcba\x03aP\xb8f\xcd\x04\x1a_\\9\xf1\xed\xe4\x9e\xe5\xa6\xd1\xd2\x9f\x03\xa7o\xae\x90H\xf3\xfb\xef\xffH3\xadk (esc)
936 4\x11KP2m\x95\xad*\xabE\x05AP\xd0\xc22Z\x14\xf9\x03\xb9j\xa3\x9b$\xa4MJ\xb4\x90\xc0\x9a\x9bO0\x10\xdf\x13\xa2\x81\x0f\x869g\xe6|\xe7\x9c\xef\x8ceY\xf7\xa2KO\xd2\xb7K\x16~\\n\xe9\xad\x90w\x86\xab\x93W\x8e\xdf\xb0r\\Y\xee6(\xa2)\xf6\x95\xc6\x01\xe4\x1az\x80R\xe8kN\x98\xe7R\xa4\xa9K@\xe0!A\xb4k\xa7U*m\x03\x07\xd8\x92\x1d\xd2\xc9\xa4\x1d\xc2\xe6,\xa5\xcc+\x1f\xef\xafDgi\xef\xab\x1d\x1d\xb7\x9a\xe7[W\xfbc\x8f\xde-\xcd\xe7\xcaz\xb3\xbb\x19\xd3\x81\x10>c>\x08\x00"X\x11\xc2\x84@\xd2\xe7B*L\x00\x01P\x04R\xc3@\xbaB0\xdb8#\x83:\x83\xa2h\xbc=\xcd\xdaS\xe1Y,L\xd3\xa0\xf2\xa8\x94J:\xe6\xd8\x81Q\xe0\xe8d\xa7#\xe2,\xd1\xaeR*\xed \xa5\x01\x13\x01\xa6\x0cb\xe3;\xbe\xaf\xfcK[^wK\xe1N\xaf\xbbk\xe8B\xd1\xf4\xc1\x07\xb3\xab[\x10\xfdkmvwcB\xa6\xa4\xd4G\xc4D\xc2\x141\xad\x91\x10\x00\x08J\x81\xcb}\xee \xee+W\xba\x8a\x80\x90|\xd4\xa0\xd6\xa0\xd4T\xde\xe1\x9d,!\xe2\xb5\xa94\xe3\xe7\xd5\x9f\x06\x18\xcba\x03aP\xb8f\xcd\x04\x1a_\\9\xf1\xed\xe4\x9e\xe5\xa6\xd1\xd2\x9f\x03\xa7o\xae\x90H\xf3\xfb\xef\xffH3\xadk (esc)
931 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3'\x859 (esc)
937 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3'\x859 (esc)
932 \xa8\x80\x84S \xa5\xbd-g\x13`\xe4\xdc\xc3H^\xdf\xe2\xc0TM\xc7\xf4BO\xcf\xde\xae\xe5\xae#\x1frM(K\x97`F\x19\x16s\x05GD\xb9\x01\xc1\x00+\x8c|\x9fp\xc11\xf0\x14\x00\x9cJ\x82<\xe0\x12\x9f\xc1\x90\xd0\xf5\xc8\x19>Pr\xaa\xeaW\xf5\xc4\xae\xd1\xfc\x17\xcf'\x13u\xb1\x9e\xcdHnC\x0e\xcc`\xc8\xa0&\xac\x0e\xf1|\x8c\x10$\xc4\x8c\xa2p\x05`\xdc\x08 \x80\xc4\xd7Rr-\x94\x10\x102\xedi;\xf3f\xf1z\x16\x86\xdb\xd8d\xe5\xe7\x8b\xf5\x8d\rzp\xb2\xfe\xac\xf5\xf2\xd3\xfe\xfckws\xedt\x96b\xd5l\x1c\x0b\x85\xb5\x170\x8f\x11\x84\xb0\x8f\x19\xa0\x00 _\x07\x1ac\xa2\xc3\x89Z\xe7\x96\xf9 \xccNFg\xc7F\xaa\x8a+\x9a\x9cc_\x17\x1b\x17\x9e]z38<\x97+\xb5,",\xc8\xc8?\\\x91\xff\x17.~U\x96\x97\xf5%\xdeN<\x8e\xf5\x97%\xe7^\xcfL\xed~\xda\x96k\xdc->\x86\x02\x83"\x96H\xa6\xe3\xaas=-\xeb7\xe5\xda\x8f\xbc (no-eol) (esc)
938 \xa8\x80\x84S \xa5\xbd-g\x13`\xe4\xdc\xc3H^\xdf\xe2\xc0TM\xc7\xf4BO\xcf\xde\xae\xe5\xae#\x1frM(K\x97`F\x19\x16s\x05GD\xb9\x01\xc1\x00+\x8c|\x9fp\xc11\xf0\x14\x00\x9cJ\x82<\xe0\x12\x9f\xc1\x90\xd0\xf5\xc8\x19>Pr\xaa\xeaW\xf5\xc4\xae\xd1\xfc\x17\xcf'\x13u\xb1\x9e\xcdHnC\x0e\xcc`\xc8\xa0&\xac\x0e\xf1|\x8c\x10$\xc4\x8c\xa2p\x05`\xdc\x08 \x80\xc4\xd7Rr-\x94\x10\x102\xedi;\xf3f\xf1z\x16\x86\xdb\xd8d\xe5\xe7\x8b\xf5\x8d\rzp\xb2\xfe\xac\xf5\xf2\xd3\xfe\xfckws\xedt\x96b\xd5l\x1c\x0b\x85\xb5\x170\x8f\x11\x84\xb0\x8f\x19\xa0\x00 _\x07\x1ac\xa2\xc3\x89Z\xe7\x96\xf9 \xccNFg\xc7F\xaa\x8a+\x9a\x9cc_\x17\x1b\x17\x9e]z38<\x97+\xb5,",\xc8\xc8?\\\x91\xff\x17.~U\x96\x97\xf5%\xdeN<\x8e\xf5\x97%\xe7^\xcfL\xed~\xda\x96k\xdc->\x86\x02\x83"\x96H\xa6\xe3\xaas=-\xeb7\xe5\xda\x8f\xbc (no-eol) (esc)
933
939
934 stream_out
940 stream_out
935
941
936 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
942 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
937 200 Script output follows
943 200 Script output follows
938
944
939 1
945 1
940
946
941 failing unbundle, requires POST request
947 failing unbundle, requires POST request
942
948
943 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
949 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
944 405 push requires POST request
950 405 push requires POST request
945
951
946 0
952 0
947 push requires POST request
953 push requires POST request
948 [1]
954 [1]
949
955
950 Static files
956 Static files
951
957
952 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
958 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
953 200 Script output follows
959 200 Script output follows
954
960
955 a { text-decoration:none; }
961 a { text-decoration:none; }
956 .age { white-space:nowrap; }
962 .age { white-space:nowrap; }
957 .date { white-space:nowrap; }
963 .date { white-space:nowrap; }
958 .indexlinks { white-space:nowrap; }
964 .indexlinks { white-space:nowrap; }
959 .parity0 { background-color: #ddd; }
965 .parity0 { background-color: #ddd; }
960 .parity1 { background-color: #eee; }
966 .parity1 { background-color: #eee; }
961 .lineno { width: 60px; color: #aaa; font-size: smaller;
967 .lineno { width: 60px; color: #aaa; font-size: smaller;
962 text-align: right; }
968 text-align: right; }
963 .plusline { color: green; }
969 .plusline { color: green; }
964 .minusline { color: red; }
970 .minusline { color: red; }
965 .atline { color: purple; }
971 .atline { color: purple; }
966 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
972 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
967 .buttons a {
973 .buttons a {
968 background-color: #666;
974 background-color: #666;
969 padding: 2pt;
975 padding: 2pt;
970 color: white;
976 color: white;
971 font-family: sans;
977 font-family: sans;
972 font-weight: bold;
978 font-weight: bold;
973 }
979 }
974 .navigate a {
980 .navigate a {
975 background-color: #ccc;
981 background-color: #ccc;
976 padding: 2pt;
982 padding: 2pt;
977 font-family: sans;
983 font-family: sans;
978 color: black;
984 color: black;
979 }
985 }
980
986
981 .metatag {
987 .metatag {
982 background-color: #888;
988 background-color: #888;
983 color: white;
989 color: white;
984 text-align: right;
990 text-align: right;
985 }
991 }
986
992
987 /* Common */
993 /* Common */
988 pre { margin: 0; }
994 pre { margin: 0; }
989
995
990 .logo {
996 .logo {
991 float: right;
997 float: right;
992 clear: right;
998 clear: right;
993 }
999 }
994
1000
995 /* Changelog/Filelog entries */
1001 /* Changelog/Filelog entries */
996 .logEntry { width: 100%; }
1002 .logEntry { width: 100%; }
997 .logEntry .age { width: 15%; }
1003 .logEntry .age { width: 15%; }
998 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
1004 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
999 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
1005 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
1000 .logEntry th.firstline { text-align: left; width: inherit; }
1006 .logEntry th.firstline { text-align: left; width: inherit; }
1001
1007
1002 /* Shortlog entries */
1008 /* Shortlog entries */
1003 .slogEntry { width: 100%; }
1009 .slogEntry { width: 100%; }
1004 .slogEntry .age { width: 8em; }
1010 .slogEntry .age { width: 8em; }
1005 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1011 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1006 .slogEntry td.author { width: 15em; }
1012 .slogEntry td.author { width: 15em; }
1007
1013
1008 /* Tag entries */
1014 /* Tag entries */
1009 #tagEntries { list-style: none; margin: 0; padding: 0; }
1015 #tagEntries { list-style: none; margin: 0; padding: 0; }
1010 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1016 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1011
1017
1012 /* Changeset entry */
1018 /* Changeset entry */
1013 #changesetEntry { }
1019 #changesetEntry { }
1014 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1020 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1015 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1021 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1016
1022
1017 /* File diff view */
1023 /* File diff view */
1018 #filediffEntry { }
1024 #filediffEntry { }
1019 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1025 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1020
1026
1021 /* Graph */
1027 /* Graph */
1022 div#wrapper {
1028 div#wrapper {
1023 position: relative;
1029 position: relative;
1024 margin: 0;
1030 margin: 0;
1025 padding: 0;
1031 padding: 0;
1026 }
1032 }
1027
1033
1028 canvas {
1034 canvas {
1029 position: absolute;
1035 position: absolute;
1030 z-index: 5;
1036 z-index: 5;
1031 top: -0.6em;
1037 top: -0.6em;
1032 margin: 0;
1038 margin: 0;
1033 }
1039 }
1034
1040
1035 ul#nodebgs {
1041 ul#nodebgs {
1036 list-style: none inside none;
1042 list-style: none inside none;
1037 padding: 0;
1043 padding: 0;
1038 margin: 0;
1044 margin: 0;
1039 top: -0.7em;
1045 top: -0.7em;
1040 }
1046 }
1041
1047
1042 ul#graphnodes li, ul#nodebgs li {
1048 ul#graphnodes li, ul#nodebgs li {
1043 height: 39px;
1049 height: 39px;
1044 }
1050 }
1045
1051
1046 ul#graphnodes {
1052 ul#graphnodes {
1047 position: absolute;
1053 position: absolute;
1048 z-index: 10;
1054 z-index: 10;
1049 top: -0.85em;
1055 top: -0.85em;
1050 list-style: none inside none;
1056 list-style: none inside none;
1051 padding: 0;
1057 padding: 0;
1052 }
1058 }
1053
1059
1054 ul#graphnodes li .info {
1060 ul#graphnodes li .info {
1055 display: block;
1061 display: block;
1056 font-size: 70%;
1062 font-size: 70%;
1057 position: relative;
1063 position: relative;
1058 top: -1px;
1064 top: -1px;
1059 }
1065 }
1060
1066
1061 Stop and restart with HGENCODING=cp932
1067 Stop and restart with HGENCODING=cp932
1062
1068
1063 $ "$TESTDIR/killdaemons.py"
1069 $ "$TESTDIR/killdaemons.py"
1064 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1070 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1065 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1071 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1066 $ cat hg.pid >> $DAEMON_PIDS
1072 $ cat hg.pid >> $DAEMON_PIDS
1067
1073
1068 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1074 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1069
1075
1070 $ echo foo >> foo
1076 $ echo foo >> foo
1071 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1077 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1072
1078
1073 Graph json escape of multibyte character
1079 Graph json escape of multibyte character
1074
1080
1075 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1081 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1076 > | grep '^var data ='
1082 > | grep '^var data ='
1077 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", false], [], []], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], []]];
1083 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", false], [], []], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], []]];
1078
1084
1079 ERRORS ENCOUNTERED
1085 ERRORS ENCOUNTERED
1080
1086
1081 $ cat errors.log
1087 $ cat errors.log
@@ -1,433 +1,437
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="/bookmarks">bookmarks</a></li>
65 <li><a href="/bookmarks">bookmarks</a></li>
66 <li><a href="/branches">branches</a></li>
66 <li><a href="/branches">branches</a></li>
67 <li><a href="/help">help</a></li>
67 <li><a href="/help">help</a></li>
68 </ul>
68 </ul>
69 </div>
69 </div>
70
70
71 <div class="main">
71 <div class="main">
72
72
73 <h2><a href="/">test</a></h2>
73 <h2><a href="/">test</a></h2>
74 <h3>error</h3>
74 <h3>error</h3>
75
75
76 <form class="search" action="/log">
76 <form class="search" action="/log">
77
77
78 <p><input name="rev" id="search1" type="text" size="30"></p>
78 <p><input name="rev" id="search1" type="text" size="30"></p>
79 <div id="hint">find changesets by author, revision,
79 <div id="hint">find changesets by author, revision,
80 files, or words in the commit message</div>
80 files, or words in the commit message</div>
81 </form>
81 </form>
82
82
83 <div class="description">
83 <div class="description">
84 <p>
84 <p>
85 An error occurred while processing your request:
85 An error occurred while processing your request:
86 </p>
86 </p>
87 <p>
87 <p>
88 Not Found
88 Not Found
89 </p>
89 </p>
90 </div>
90 </div>
91 </div>
91 </div>
92 </div>
92 </div>
93
93
94
94
95
95
96 </body>
96 </body>
97 </html>
97 </html>
98
98
99 [1]
99 [1]
100
100
101 should give a 404 - bad revision
101 should give a 404 - bad revision
102
102
103 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/spam/foo?style=raw'
103 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/spam/foo?style=raw'
104 404 Not Found
104 404 Not Found
105
105
106
106
107 error: revision not found: spam
107 error: revision not found: spam
108 [1]
108 [1]
109
109
110 should give a 400 - bad command
110 should give a 400 - bad command
111
111
112 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?cmd=spam&style=raw'
112 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?cmd=spam&style=raw'
113 400* (glob)
113 400* (glob)
114
114
115
115
116 error: no such method: spam
116 error: no such method: spam
117 [1]
117 [1]
118
118
119 should give a 404 - file does not exist
119 should give a 404 - file does not exist
120
120
121 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork?style=raw'
121 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork?style=raw'
122 404 Not Found
122 404 Not Found
123
123
124
124
125 error: bork@2ef0ac749a14: not found in manifest
125 error: bork@2ef0ac749a14: not found in manifest
126 [1]
126 [1]
127 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork'
127 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork'
128 404 Not Found
128 404 Not Found
129
129
130 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
130 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
131 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
131 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
132 <head>
132 <head>
133 <link rel="icon" href="/static/hgicon.png" type="image/png" />
133 <link rel="icon" href="/static/hgicon.png" type="image/png" />
134 <meta name="robots" content="index, nofollow" />
134 <meta name="robots" content="index, nofollow" />
135 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
135 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
136
136
137 <title>test: error</title>
137 <title>test: error</title>
138 </head>
138 </head>
139 <body>
139 <body>
140
140
141 <div class="container">
141 <div class="container">
142 <div class="menu">
142 <div class="menu">
143 <div class="logo">
143 <div class="logo">
144 <a href="http://mercurial.selenic.com/">
144 <a href="http://mercurial.selenic.com/">
145 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
145 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
146 </div>
146 </div>
147 <ul>
147 <ul>
148 <li><a href="/shortlog">log</a></li>
148 <li><a href="/shortlog">log</a></li>
149 <li><a href="/graph">graph</a></li>
149 <li><a href="/graph">graph</a></li>
150 <li><a href="/tags">tags</a></li>
150 <li><a href="/tags">tags</a></li>
151 <li><a href="/bookmarks">bookmarks</a></li>
151 <li><a href="/bookmarks">bookmarks</a></li>
152 <li><a href="/branches">branches</a></li>
152 <li><a href="/branches">branches</a></li>
153 <li><a href="/help">help</a></li>
153 <li><a href="/help">help</a></li>
154 </ul>
154 </ul>
155 </div>
155 </div>
156
156
157 <div class="main">
157 <div class="main">
158
158
159 <h2><a href="/">test</a></h2>
159 <h2><a href="/">test</a></h2>
160 <h3>error</h3>
160 <h3>error</h3>
161
161
162 <form class="search" action="/log">
162 <form class="search" action="/log">
163
163
164 <p><input name="rev" id="search1" type="text" size="30"></p>
164 <p><input name="rev" id="search1" type="text" size="30"></p>
165 <div id="hint">find changesets by author, revision,
165 <div id="hint">find changesets by author, revision,
166 files, or words in the commit message</div>
166 files, or words in the commit message</div>
167 </form>
167 </form>
168
168
169 <div class="description">
169 <div class="description">
170 <p>
170 <p>
171 An error occurred while processing your request:
171 An error occurred while processing your request:
172 </p>
172 </p>
173 <p>
173 <p>
174 bork@2ef0ac749a14: not found in manifest
174 bork@2ef0ac749a14: not found in manifest
175 </p>
175 </p>
176 </div>
176 </div>
177 </div>
177 </div>
178 </div>
178 </div>
179
179
180
180
181
181
182 </body>
182 </body>
183 </html>
183 </html>
184
184
185 [1]
185 [1]
186 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/bork?style=raw'
186 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/bork?style=raw'
187 404 Not Found
187 404 Not Found
188
188
189
189
190 error: bork@2ef0ac749a14: not found in manifest
190 error: bork@2ef0ac749a14: not found in manifest
191 [1]
191 [1]
192
192
193 try bad style
193 try bad style
194
194
195 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=foobar')
195 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=foobar')
196 200 Script output follows
196 200 Script output follows
197
197
198 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
198 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
199 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
199 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
200 <head>
200 <head>
201 <link rel="icon" href="/static/hgicon.png" type="image/png" />
201 <link rel="icon" href="/static/hgicon.png" type="image/png" />
202 <meta name="robots" content="index, nofollow" />
202 <meta name="robots" content="index, nofollow" />
203 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
203 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
204
204
205 <title>test: 2ef0ac749a14 /</title>
205 <title>test: 2ef0ac749a14 /</title>
206 </head>
206 </head>
207 <body>
207 <body>
208
208
209 <div class="container">
209 <div class="container">
210 <div class="menu">
210 <div class="menu">
211 <div class="logo">
211 <div class="logo">
212 <a href="http://mercurial.selenic.com/">
212 <a href="http://mercurial.selenic.com/">
213 <img src="/static/hglogo.png" alt="mercurial" /></a>
213 <img src="/static/hglogo.png" alt="mercurial" /></a>
214 </div>
214 </div>
215 <ul>
215 <ul>
216 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
216 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
217 <li><a href="/graph/2ef0ac749a14">graph</a></li>
217 <li><a href="/graph/2ef0ac749a14">graph</a></li>
218 <li><a href="/tags">tags</a></li>
218 <li><a href="/tags">tags</a></li>
219 <li><a href="/bookmarks">bookmarks</a></li>
219 <li><a href="/bookmarks">bookmarks</a></li>
220 <li><a href="/branches">branches</a></li>
220 <li><a href="/branches">branches</a></li>
221 </ul>
221 </ul>
222 <ul>
222 <ul>
223 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
223 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
224 <li class="active">browse</li>
224 <li class="active">browse</li>
225 </ul>
225 </ul>
226 <ul>
226 <ul>
227
227
228 </ul>
228 </ul>
229 <ul>
229 <ul>
230 <li><a href="/help">help</a></li>
230 <li><a href="/help">help</a></li>
231 </ul>
231 </ul>
232 </div>
232 </div>
233
233
234 <div class="main">
234 <div class="main">
235 <h2><a href="/">test</a></h2>
235 <h2><a href="/">test</a></h2>
236 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
236 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
237
237
238 <form class="search" action="/log">
238 <form class="search" action="/log">
239
239
240 <p><input name="rev" id="search1" type="text" size="30" /></p>
240 <p><input name="rev" id="search1" type="text" size="30" /></p>
241 <div id="hint">find changesets by author, revision,
241 <div id="hint">find changesets by author, revision,
242 files, or words in the commit message</div>
242 files, or words in the commit message</div>
243 </form>
243 </form>
244
244
245 <table class="bigtable">
245 <table class="bigtable">
246 <tr>
246 <tr>
247 <th class="name">name</th>
247 <th class="name">name</th>
248 <th class="size">size</th>
248 <th class="size">size</th>
249 <th class="permissions">permissions</th>
249 <th class="permissions">permissions</th>
250 </tr>
250 </tr>
251 <tr class="fileline parity0">
251 <tr class="fileline parity0">
252 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
252 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
253 <td class="size"></td>
253 <td class="size"></td>
254 <td class="permissions">drwxr-xr-x</td>
254 <td class="permissions">drwxr-xr-x</td>
255 </tr>
255 </tr>
256
256
257 <tr class="fileline parity1">
257 <tr class="fileline parity1">
258 <td class="name">
258 <td class="name">
259 <a href="/file/2ef0ac749a14/da">
259 <a href="/file/2ef0ac749a14/da">
260 <img src="/static/coal-folder.png" alt="dir."/> da/
260 <img src="/static/coal-folder.png" alt="dir."/> da/
261 </a>
261 </a>
262 <a href="/file/2ef0ac749a14/da/">
262 <a href="/file/2ef0ac749a14/da/">
263
263
264 </a>
264 </a>
265 </td>
265 </td>
266 <td class="size"></td>
266 <td class="size"></td>
267 <td class="permissions">drwxr-xr-x</td>
267 <td class="permissions">drwxr-xr-x</td>
268 </tr>
268 </tr>
269
269
270 <tr class="fileline parity0">
270 <tr class="fileline parity0">
271 <td class="filename">
271 <td class="filename">
272 <a href="/file/2ef0ac749a14/foo">
272 <a href="/file/2ef0ac749a14/foo">
273 <img src="/static/coal-file.png" alt="file"/> foo
273 <img src="/static/coal-file.png" alt="file"/> foo
274 </a>
274 </a>
275 </td>
275 </td>
276 <td class="size">4</td>
276 <td class="size">4</td>
277 <td class="permissions">-rw-r--r--</td>
277 <td class="permissions">-rw-r--r--</td>
278 </tr>
278 </tr>
279 </table>
279 </table>
280 </div>
280 </div>
281 </div>
281 </div>
282
282
283
283
284 </body>
284 </body>
285 </html>
285 </html>
286
286
287
287
288 stop and restart
288 stop and restart
289
289
290 $ "$TESTDIR/killdaemons.py"
290 $ "$TESTDIR/killdaemons.py"
291 $ 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
292 $ cat hg.pid >> $DAEMON_PIDS
292 $ cat hg.pid >> $DAEMON_PIDS
293
293
294 Test the access/error files are opened in append mode
294 Test the access/error files are opened in append mode
295
295
296 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
296 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
297 10 log lines written
297 10 log lines written
298
298
299 static file
299 static file
300
300
301 $ "$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'
302 200 Script output follows
302 200 Script output follows
303
303
304 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; }
305 a { color:#0000cc; }
305 a { color:#0000cc; }
306 a:hover, a:visited, a:active { color:#880000; }
306 a:hover, a:visited, a:active { color:#880000; }
307 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; }
308 div.page_header a:visited { color:#0000cc; }
308 div.page_header a:visited { color:#0000cc; }
309 div.page_header a:hover { color:#880000; }
309 div.page_header a:hover { color:#880000; }
310 div.page_nav { padding:8px; }
310 div.page_nav { padding:8px; }
311 div.page_nav a:visited { color:#0000cc; }
311 div.page_nav a:visited { color:#0000cc; }
312 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}
313 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
313 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
314 div.page_footer_text { float:left; color:#555555; font-style:italic; }
314 div.page_footer_text { float:left; color:#555555; font-style:italic; }
315 div.page_body { padding:8px; }
315 div.page_body { padding:8px; }
316 div.title, a.title {
316 div.title, a.title {
317 display:block; padding:6px 8px;
317 display:block; padding:6px 8px;
318 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
318 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
319 }
319 }
320 a.title:hover { background-color: #d9d8d1; }
320 a.title:hover { background-color: #d9d8d1; }
321 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; }
322 div.log_body { padding:8px 8px 8px 150px; }
322 div.log_body { padding:8px 8px 8px 150px; }
323 .age { white-space:nowrap; }
323 .age { white-space:nowrap; }
324 span.age { position:relative; float:left; width:142px; font-style:italic; }
324 span.age { position:relative; float:left; width:142px; font-style:italic; }
325 div.log_link {
325 div.log_link {
326 padding:0px 8px;
326 padding:0px 8px;
327 font-size:10px; font-family:sans-serif; font-style:normal;
327 font-size:10px; font-family:sans-serif; font-style:normal;
328 position:relative; float:left; width:136px;
328 position:relative; float:left; width:136px;
329 }
329 }
330 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; }
331 a.list { text-decoration:none; color:#000000; }
331 a.list { text-decoration:none; color:#000000; }
332 a.list:hover { text-decoration:underline; color:#880000; }
332 a.list:hover { text-decoration:underline; color:#880000; }
333 table { padding:8px 4px; }
333 table { padding:8px 4px; }
334 th { padding:2px 5px; font-size:12px; text-align:left; }
334 th { padding:2px 5px; font-size:12px; text-align:left; }
335 tr.light:hover, .parity0:hover { background-color:#edece6; }
335 tr.light:hover, .parity0:hover { background-color:#edece6; }
336 tr.dark, .parity1 { background-color:#f6f6f0; }
336 tr.dark, .parity1 { background-color:#f6f6f0; }
337 tr.dark:hover, .parity1:hover { background-color:#edece6; }
337 tr.dark:hover, .parity1:hover { background-color:#edece6; }
338 td { padding:2px 5px; font-size:12px; vertical-align:top; }
338 td { padding:2px 5px; font-size:12px; vertical-align:top; }
339 td.closed { background-color: #99f; }
339 td.closed { background-color: #99f; }
340 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; }
341 td.indexlinks { white-space: nowrap; }
341 td.indexlinks { white-space: nowrap; }
342 td.indexlinks a {
342 td.indexlinks a {
343 padding: 2px 5px; line-height: 10px;
343 padding: 2px 5px; line-height: 10px;
344 border: 1px solid;
344 border: 1px solid;
345 color: #ffffff; background-color: #7777bb;
345 color: #ffffff; background-color: #7777bb;
346 border-color: #aaaadd #333366 #333366 #aaaadd;
346 border-color: #aaaadd #333366 #333366 #aaaadd;
347 font-weight: bold; text-align: center; text-decoration: none;
347 font-weight: bold; text-align: center; text-decoration: none;
348 font-size: 10px;
348 font-size: 10px;
349 }
349 }
350 td.indexlinks a:hover { background-color: #6666aa; }
350 td.indexlinks a:hover { background-color: #6666aa; }
351 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
351 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
352 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; }
353 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; }
354 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
354 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
355 .linenr { color:#999999; text-decoration:none }
355 .linenr { color:#999999; text-decoration:none }
356 div.rss_logo { float: right; white-space: nowrap; }
356 div.rss_logo { float: right; white-space: nowrap; }
357 div.rss_logo a {
357 div.rss_logo a {
358 padding:3px 6px; line-height:10px;
358 padding:3px 6px; line-height:10px;
359 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
359 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
360 color:#ffffff; background-color:#ff6600;
360 color:#ffffff; background-color:#ff6600;
361 font-weight:bold; font-family:sans-serif; font-size:10px;
361 font-weight:bold; font-family:sans-serif; font-size:10px;
362 text-align:center; text-decoration:none;
362 text-align:center; text-decoration:none;
363 }
363 }
364 div.rss_logo a:hover { background-color:#ee5500; }
364 div.rss_logo a:hover { background-color:#ee5500; }
365 pre { margin: 0; }
365 pre { margin: 0; }
366 span.logtags span {
366 span.logtags span {
367 padding: 0px 4px;
367 padding: 0px 4px;
368 font-size: 10px;
368 font-size: 10px;
369 font-weight: normal;
369 font-weight: normal;
370 border: 1px solid;
370 border: 1px solid;
371 background-color: #ffaaff;
371 background-color: #ffaaff;
372 border-color: #ffccff #ff00ee #ff00ee #ffccff;
372 border-color: #ffccff #ff00ee #ff00ee #ffccff;
373 }
373 }
374 span.logtags span.tagtag {
374 span.logtags span.tagtag {
375 background-color: #ffffaa;
375 background-color: #ffffaa;
376 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
376 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
377 }
377 }
378 span.logtags span.branchtag {
378 span.logtags span.branchtag {
379 background-color: #aaffaa;
379 background-color: #aaffaa;
380 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
380 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
381 }
381 }
382 span.logtags span.inbranchtag {
382 span.logtags span.inbranchtag {
383 background-color: #d5dde6;
383 background-color: #d5dde6;
384 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
384 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
385 }
385 }
386 span.logtags span.bookmarktag {
387 background-color: #afdffa;
388 border-color: #ccecff #46ace6 #46ace6 #ccecff;
389 }
386
390
387 /* Graph */
391 /* Graph */
388 div#wrapper {
392 div#wrapper {
389 position: relative;
393 position: relative;
390 margin: 0;
394 margin: 0;
391 padding: 0;
395 padding: 0;
392 margin-top: 3px;
396 margin-top: 3px;
393 }
397 }
394
398
395 canvas {
399 canvas {
396 position: absolute;
400 position: absolute;
397 z-index: 5;
401 z-index: 5;
398 top: -0.9em;
402 top: -0.9em;
399 margin: 0;
403 margin: 0;
400 }
404 }
401
405
402 ul#nodebgs {
406 ul#nodebgs {
403 list-style: none inside none;
407 list-style: none inside none;
404 padding: 0;
408 padding: 0;
405 margin: 0;
409 margin: 0;
406 top: -0.7em;
410 top: -0.7em;
407 }
411 }
408
412
409 ul#graphnodes li, ul#nodebgs li {
413 ul#graphnodes li, ul#nodebgs li {
410 height: 39px;
414 height: 39px;
411 }
415 }
412
416
413 ul#graphnodes {
417 ul#graphnodes {
414 position: absolute;
418 position: absolute;
415 z-index: 10;
419 z-index: 10;
416 top: -0.8em;
420 top: -0.8em;
417 list-style: none inside none;
421 list-style: none inside none;
418 padding: 0;
422 padding: 0;
419 }
423 }
420
424
421 ul#graphnodes li .info {
425 ul#graphnodes li .info {
422 display: block;
426 display: block;
423 font-size: 100%;
427 font-size: 100%;
424 position: relative;
428 position: relative;
425 top: -3px;
429 top: -3px;
426 font-style: italic;
430 font-style: italic;
427 }
431 }
428 304 Not Modified
432 304 Not Modified
429
433
430
434
431 errors
435 errors
432
436
433 $ cat errors.log
437 $ cat errors.log
General Comments 0
You need to be logged in to leave comments. Login now