##// END OF EJS Templates
web: Made elapsed time calculation dynamic (javascript)....
Benoit Allard -
r14046:b24e5a70 default
parent child Browse files
Show More
@@ -0,0 +1,220 b''
1 // mercurial.js - JavaScript utility functions
2 //
3 // Rendering of branch DAGs on the client side
4 // Display of elapsed time
5 //
6 // Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
7 // Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
8 //
9 // derived from code written by Scott James Remnant <scott@ubuntu.com>
10 // Copyright 2005 Canonical Ltd.
11 //
12 // This software may be used and distributed according to the terms
13 // of the GNU General Public License, incorporated herein by reference.
14
15 var colors = [
16 [ 1.0, 0.0, 0.0 ],
17 [ 1.0, 1.0, 0.0 ],
18 [ 0.0, 1.0, 0.0 ],
19 [ 0.0, 1.0, 1.0 ],
20 [ 0.0, 0.0, 1.0 ],
21 [ 1.0, 0.0, 1.0 ]
22 ];
23
24 function Graph() {
25
26 this.canvas = document.getElementById('graph');
27 if (navigator.userAgent.indexOf('MSIE') >= 0) this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
28 this.ctx = this.canvas.getContext('2d');
29 this.ctx.strokeStyle = 'rgb(0, 0, 0)';
30 this.ctx.fillStyle = 'rgb(0, 0, 0)';
31 this.cur = [0, 0];
32 this.line_width = 3;
33 this.bg = [0, 4];
34 this.cell = [2, 0];
35 this.columns = 0;
36 this.revlink = '';
37
38 this.scale = function(height) {
39 this.bg_height = height;
40 this.box_size = Math.floor(this.bg_height / 1.2);
41 this.cell_height = this.box_size;
42 }
43
44 function colorPart(num) {
45 num *= 255
46 num = num < 0 ? 0 : num;
47 num = num > 255 ? 255 : num;
48 var digits = Math.round(num).toString(16);
49 if (num < 16) {
50 return '0' + digits;
51 } else {
52 return digits;
53 }
54 }
55
56 this.setColor = function(color, bg, fg) {
57
58 // Set the colour.
59 //
60 // Picks a distinct colour based on an internal wheel; the bg
61 // parameter provides the value that should be assigned to the 'zero'
62 // colours and the fg parameter provides the multiplier that should be
63 // applied to the foreground colours.
64
65 color %= colors.length;
66 var red = (colors[color][0] * fg) || bg;
67 var green = (colors[color][1] * fg) || bg;
68 var blue = (colors[color][2] * fg) || bg;
69 red = Math.round(red * 255);
70 green = Math.round(green * 255);
71 blue = Math.round(blue * 255);
72 var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
73 this.ctx.strokeStyle = s;
74 this.ctx.fillStyle = s;
75 return s;
76
77 }
78
79 this.render = function(data) {
80
81 var backgrounds = '';
82 var nodedata = '';
83
84 for (var i in data) {
85
86 var parity = i % 2;
87 this.cell[1] += this.bg_height;
88 this.bg[1] += this.bg_height;
89
90 var cur = data[i];
91 var node = cur[1];
92 var edges = cur[2];
93 var fold = false;
94
95 for (var j in edges) {
96
97 line = edges[j];
98 start = line[0];
99 end = line[1];
100 color = line[2];
101
102 if (end > this.columns || start > this.columns) {
103 this.columns += 1;
104 }
105
106 if (start == this.columns && start > end) {
107 var fold = true;
108 }
109
110 x0 = this.cell[0] + this.box_size * start + this.box_size / 2;
111 y0 = this.bg[1] - this.bg_height / 2;
112 x1 = this.cell[0] + this.box_size * end + this.box_size / 2;
113 y1 = this.bg[1] + this.bg_height / 2;
114
115 this.edge(x0, y0, x1, y1, color);
116
117 }
118
119 // Draw the revision node in the right column
120
121 column = node[0]
122 color = node[1]
123
124 radius = this.box_size / 8;
125 x = this.cell[0] + this.box_size * column + this.box_size / 2;
126 y = this.bg[1] - this.bg_height / 2;
127 var add = this.vertex(x, y, color, parity, cur);
128 backgrounds += add[0];
129 nodedata += add[1];
130
131 if (fold) this.columns -= 1;
132
133 }
134
135 document.getElementById('nodebgs').innerHTML += backgrounds;
136 document.getElementById('graphnodes').innerHTML += nodedata;
137
138 }
139
140 }
141
142
143 process_dates = (function(document, RegExp, Math, isNaN, Date, _false, _true){
144
145 // derived from code from mercurial/templatefilter.py
146
147 var scales = {
148 'year': 365 * 24 * 60 * 60,
149 'month': 30 * 24 * 60 * 60,
150 'week': 7 * 24 * 60 * 60,
151 'day': 24 * 60 * 60,
152 'hour': 60 * 60,
153 'minute': 60,
154 'second': 1
155 };
156
157 function format(count, string){
158 var ret = count + ' ' + string;
159 if (count > 1){
160 ret = ret + 's';
161 }
162 return ret;
163 }
164
165 function age(datestr){
166 var now = new Date();
167 var once = new Date(datestr);
168
169 if (isNaN(once.getTime())){
170 // parsing error
171 return datestr;
172 }
173
174 var delta = Math.floor((now.getTime() - once.getTime()) / 1000);
175
176 var future = _false;
177 if (delta < 0){
178 future = _true;
179 delta = -delta;
180 if (delta > (30 * scales.year)){
181 return "in the distant future";
182 }
183 }
184
185 if (delta > (2 * scales.year)){
186 return once.getFullYear() + '-' + once.getMonth() + '-' + once.getDate();
187 }
188
189 for (unit in scales){
190 var s = scales[unit];
191 var n = Math.floor(delta / s);
192 if ((n >= 2) || (s == 1)){
193 if (future){
194 return format(n, unit) + ' from now';
195 } else {
196 return format(n, unit) + ' ago';
197 }
198 }
199 }
200 }
201
202 return function(){
203 var nodes = document.getElementsByTagName('*');
204 var ageclass = new RegExp('\\bage\\b');
205 var dateclass = new RegExp('\\bdate\\b');
206 for (var i=0; i<nodes.length; ++i){
207 var node = nodes[i];
208 var classes = node.className;
209 if (ageclass.test(classes)){
210 var agevalue = age(node.textContent);
211 if (dateclass.test(classes)){
212 // We want both: date + (age)
213 node.textContent += ' ('+agevalue+')';
214 } else {
215 node.textContent = agevalue;
216 }
217 }
218 }
219 }
220 })(document, RegExp, Math, isNaN, Date, false, true)
@@ -1,6 +1,7 b''
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3 <head>
3 <head>
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
5 <meta name="robots" content="index, nofollow" />
5 <meta name="robots" content="index, nofollow" />
6 <link rel="stylesheet" href="{staticurl}style-coal.css" type="text/css" />
6 <link rel="stylesheet" href="{staticurl}style-coal.css" type="text/css" />
7 <script type="text/javascript" src="{staticurl}mercurial.js"></script>
@@ -1,212 +1,212 b''
1 default = 'shortlog'
1 default = 'shortlog'
2
2
3 mimetype = 'text/html; charset={encoding}'
3 mimetype = 'text/html; charset={encoding}'
4 header = header.tmpl
4 header = header.tmpl
5 footer = ../paper/footer.tmpl
5 footer = ../paper/footer.tmpl
6 search = ../paper/search.tmpl
6 search = ../paper/search.tmpl
7
7
8 changelog = ../paper/shortlog.tmpl
8 changelog = ../paper/shortlog.tmpl
9 shortlog = ../paper/shortlog.tmpl
9 shortlog = ../paper/shortlog.tmpl
10 shortlogentry = ../paper/shortlogentry.tmpl
10 shortlogentry = ../paper/shortlogentry.tmpl
11 graph = ../paper/graph.tmpl
11 graph = ../paper/graph.tmpl
12
12
13 help = ../paper/help.tmpl
13 help = ../paper/help.tmpl
14 helptopics = ../paper/helptopics.tmpl
14 helptopics = ../paper/helptopics.tmpl
15
15
16 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
16 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
17
17
18 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
21 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
21 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
22 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
22 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
24 filenolink = '{file|escape} '
24 filenolink = '{file|escape} '
25 fileellipses = '...'
25 fileellipses = '...'
26 changelogentry = ../paper/shortlogentry.tmpl
26 changelogentry = ../paper/shortlogentry.tmpl
27 searchentry = ../paper/shortlogentry.tmpl
27 searchentry = ../paper/shortlogentry.tmpl
28 changeset = ../paper/changeset.tmpl
28 changeset = ../paper/changeset.tmpl
29 manifest = ../paper/manifest.tmpl
29 manifest = ../paper/manifest.tmpl
30
30
31 nav = '{before%naventry} {after%naventry}'
31 nav = '{before%naventry} {after%naventry}'
32 navshort = '{before%navshortentry}{after%navshortentry}'
32 navshort = '{before%navshortentry}{after%navshortentry}'
33 navgraph = '{before%navgraphentry}{after%navgraphentry}'
33 navgraph = '{before%navgraphentry}{after%navgraphentry}'
34 filenav = '{before%filenaventry}{after%filenaventry}'
34 filenav = '{before%filenaventry}{after%filenaventry}'
35
35
36 direntry = '
36 direntry = '
37 <tr class="fileline parity{parity}">
37 <tr class="fileline parity{parity}">
38 <td class="name">
38 <td class="name">
39 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
39 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
40 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
40 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
41 </a>
41 </a>
42 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
42 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
43 {emptydirs|escape}
43 {emptydirs|escape}
44 </a>
44 </a>
45 </td>
45 </td>
46 <td class="size"></td>
46 <td class="size"></td>
47 <td class="permissions">drwxr-xr-x</td>
47 <td class="permissions">drwxr-xr-x</td>
48 </tr>'
48 </tr>'
49
49
50 fileentry = '
50 fileentry = '
51 <tr class="fileline parity{parity}">
51 <tr class="fileline parity{parity}">
52 <td class="filename">
52 <td class="filename">
53 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
53 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
54 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
54 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
55 </a>
55 </a>
56 </td>
56 </td>
57 <td class="size">{size}</td>
57 <td class="size">{size}</td>
58 <td class="permissions">{permissions|permissions}</td>
58 <td class="permissions">{permissions|permissions}</td>
59 </tr>'
59 </tr>'
60
60
61 filerevision = ../paper/filerevision.tmpl
61 filerevision = ../paper/filerevision.tmpl
62 fileannotate = ../paper/fileannotate.tmpl
62 fileannotate = ../paper/fileannotate.tmpl
63 filediff = ../paper/filediff.tmpl
63 filediff = ../paper/filediff.tmpl
64 filelog = ../paper/filelog.tmpl
64 filelog = ../paper/filelog.tmpl
65 fileline = '
65 fileline = '
66 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
66 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
67 filelogentry = ../paper/filelogentry.tmpl
67 filelogentry = ../paper/filelogentry.tmpl
68
68
69 annotateline = '
69 annotateline = '
70 <tr class="parity{parity}">
70 <tr class="parity{parity}">
71 <td class="annotate">
71 <td class="annotate">
72 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
72 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
73 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
73 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
74 </td>
74 </td>
75 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
75 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
76 </tr>'
76 </tr>'
77
77
78 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
78 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
79 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
79 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
80 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
80 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
81 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
81 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
82 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
82 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
83
83
84 changelogparent = '
84 changelogparent = '
85 <tr>
85 <tr>
86 <th class="parent">parent {rev}:</th>
86 <th class="parent">parent {rev}:</th>
87 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
87 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
88 </tr>'
88 </tr>'
89
89
90 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
90 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
91
91
92 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
92 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
93 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
93 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
94
94
95 filerename = '{file|escape}@'
95 filerename = '{file|escape}@'
96 filelogrename = '
96 filelogrename = '
97 <span class="base">
97 <span class="base">
98 base
98 base
99 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
99 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
100 {file|escape}@{node|short}
100 {file|escape}@{node|short}
101 </a>
101 </a>
102 </span>'
102 </span>'
103 fileannotateparent = '
103 fileannotateparent = '
104 <tr>
104 <tr>
105 <td class="metatag">parent:</td>
105 <td class="metatag">parent:</td>
106 <td>
106 <td>
107 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
107 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
108 {rename%filerename}{node|short}
108 {rename%filerename}{node|short}
109 </a>
109 </a>
110 </td>
110 </td>
111 </tr>'
111 </tr>'
112 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
112 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
113 changelogchild = '
113 changelogchild = '
114 <tr>
114 <tr>
115 <th class="child">child</th>
115 <th class="child">child</th>
116 <td class="child">
116 <td class="child">
117 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
117 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
118 {node|short}
118 {node|short}
119 </a>
119 </a>
120 </td>
120 </td>
121 </tr>'
121 </tr>'
122 fileannotatechild = '
122 fileannotatechild = '
123 <tr>
123 <tr>
124 <td class="metatag">child:</td>
124 <td class="metatag">child:</td>
125 <td>
125 <td>
126 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
126 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
127 {node|short}
127 {node|short}
128 </a>
128 </a>
129 </td>
129 </td>
130 </tr>'
130 </tr>'
131 tags = ../paper/tags.tmpl
131 tags = ../paper/tags.tmpl
132 tagentry = '
132 tagentry = '
133 <tr class="tagEntry parity{parity}">
133 <tr class="tagEntry parity{parity}">
134 <td>
134 <td>
135 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
135 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
136 {tag|escape}
136 {tag|escape}
137 </a>
137 </a>
138 </td>
138 </td>
139 <td class="node">
139 <td class="node">
140 {node|short}
140 {node|short}
141 </td>
141 </td>
142 </tr>'
142 </tr>'
143 bookmarks = ../paper/bookmarks.tmpl
143 bookmarks = ../paper/bookmarks.tmpl
144 bookmarkentry = '
144 bookmarkentry = '
145 <tr class="tagEntry parity{parity}">
145 <tr class="tagEntry parity{parity}">
146 <td>
146 <td>
147 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
147 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
148 {bookmark|escape}
148 {bookmark|escape}
149 </a>
149 </a>
150 </td>
150 </td>
151 <td class="node">
151 <td class="node">
152 {node|short}
152 {node|short}
153 </td>
153 </td>
154 </tr>'
154 </tr>'
155 branches = ../paper/branches.tmpl
155 branches = ../paper/branches.tmpl
156 branchentry = '
156 branchentry = '
157 <tr class="tagEntry parity{parity}">
157 <tr class="tagEntry parity{parity}">
158 <td>
158 <td>
159 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
159 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
160 {branch|escape}
160 {branch|escape}
161 </a>
161 </a>
162 </td>
162 </td>
163 <td class="node">
163 <td class="node">
164 {node|short}
164 {node|short}
165 </td>
165 </td>
166 </tr>'
166 </tr>'
167 changelogtag = '<span class="tag">{name|escape}</span> '
167 changelogtag = '<span class="tag">{name|escape}</span> '
168 changesettag = '<span class="tag">{tag|escape}</span> '
168 changesettag = '<span class="tag">{tag|escape}</span> '
169 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
169 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
170 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
170 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
171 changelogbranchname = '<span class="branchname">{name|escape}</span> '
171 changelogbranchname = '<span class="branchname">{name|escape}</span> '
172
172
173 filediffparent = '
173 filediffparent = '
174 <tr>
174 <tr>
175 <th class="parent">parent {rev}:</th>
175 <th class="parent">parent {rev}:</th>
176 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
176 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
177 </tr>'
177 </tr>'
178 filelogparent = '
178 filelogparent = '
179 <tr>
179 <tr>
180 <th>parent {rev}:</th>
180 <th>parent {rev}:</th>
181 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
181 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
182 </tr>'
182 </tr>'
183 filediffchild = '
183 filediffchild = '
184 <tr>
184 <tr>
185 <th class="child">child {rev}:</th>
185 <th class="child">child {rev}:</th>
186 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
186 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
187 </td>
187 </td>
188 </tr>'
188 </tr>'
189 filelogchild = '
189 filelogchild = '
190 <tr>
190 <tr>
191 <th>child {rev}:</th>
191 <th>child {rev}:</th>
192 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
192 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
193 </tr>'
193 </tr>'
194
194
195 indexentry = '
195 indexentry = '
196 <tr class="parity{parity}">
196 <tr class="parity{parity}">
197 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
197 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
198 <td>{description}</td>
198 <td>{description}</td>
199 <td>{contact|obfuscate}</td>
199 <td>{contact|obfuscate}</td>
200 <td class="age">{lastchange|age}</td>
200 <td class="age">{lastchange|date}</td>
201 <td class="indexlinks">{archives%indexarchiveentry}</td>
201 <td class="indexlinks">{archives%indexarchiveentry}</td>
202 </tr>\n'
202 </tr>\n'
203 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
203 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
204 index = ../paper/index.tmpl
204 index = ../paper/index.tmpl
205 archiveentry = '
205 archiveentry = '
206 <li>
206 <li>
207 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
207 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
208 </li>'
208 </li>'
209 notfound = ../paper/notfound.tmpl
209 notfound = ../paper/notfound.tmpl
210 error = ../paper/error.tmpl
210 error = ../paper/error.tmpl
211 urlparameter = '{separator}{name}={value|urlescape}'
211 urlparameter = '{separator}{name}={value|urlescape}'
212 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
212 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,14 +1,14 b''
1 <div>
1 <div>
2 <a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|age}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
2 <a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|date}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
3 </div>
3 </div>
4 <div class="title_text">
4 <div class="title_text">
5 <div class="log_link">
5 <div class="log_link">
6 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
6 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
7 </div>
7 </div>
8 <i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
8 <i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
9 </div>
9 </div>
10 <div class="log_body">
10 <div class="log_body">
11 {desc|strip|escape|addbreaks|nonempty}
11 {desc|strip|escape|addbreaks|nonempty}
12 <br/>
12 <br/>
13 <br/>
13 <br/>
14 </div>
14 </div>
@@ -1,53 +1,53 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
23 changeset |
23 changeset |
24 <a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry} |
24 <a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry} |
25 <a href="{url}help{sessionvars%urlparameter}">help</a>
25 <a href="{url}help{sessionvars%urlparameter}">help</a>
26 <br/>
26 <br/>
27 </div>
27 </div>
28
28
29 <div>
29 <div>
30 <a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
30 <a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
31 </div>
31 </div>
32 <div class="title_text">
32 <div class="title_text">
33 <table cellspacing="0">
33 <table cellspacing="0">
34 <tr><td>author</td><td>{author|obfuscate}</td></tr>
34 <tr><td>author</td><td>{author|obfuscate}</td></tr>
35 <tr><td></td><td>{date|date} ({date|age})</td></tr>
35 <tr><td></td><td class="date age">{date|date}</td></tr>
36 {branch%changesetbranch}
36 {branch%changesetbranch}
37 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
37 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
38 {parent%changesetparent}
38 {parent%changesetparent}
39 {child%changesetchild}
39 {child%changesetchild}
40 </table></div>
40 </table></div>
41
41
42 <div class="page_body">
42 <div class="page_body">
43 {desc|strip|escape|addbreaks|nonempty}
43 {desc|strip|escape|addbreaks|nonempty}
44 </div>
44 </div>
45 <div class="list_head"></div>
45 <div class="list_head"></div>
46 <div class="title_text">
46 <div class="title_text">
47 <table cellspacing="0">
47 <table cellspacing="0">
48 {files}
48 {files}
49 </table></div>
49 </table></div>
50
50
51 <div class="page_body">{diff}</div>
51 <div class="page_body">{diff}</div>
52
52
53 {footer}
53 {footer}
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
24 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
24 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
27 annotate |
27 annotate |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a> |
29 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a> |
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
31 <br/>
31 <br/>
32 </div>
32 </div>
33
33
34 <div class="title">{file|escape}</div>
34 <div class="title">{file|escape}</div>
35
35
36 <div class="title_text">
36 <div class="title_text">
37 <table cellspacing="0">
37 <table cellspacing="0">
38 <tr>
38 <tr>
39 <td>author</td>
39 <td>author</td>
40 <td>{author|obfuscate}</td></tr>
40 <td>{author|obfuscate}</td></tr>
41 <tr>
41 <tr>
42 <td></td>
42 <td></td>
43 <td>{date|date} ({date|age})</td></tr>
43 <td class="date age">{date|date}</td></tr>
44 {branch%filerevbranch}
44 {branch%filerevbranch}
45 <tr>
45 <tr>
46 <td>changeset {rev}</td>
46 <td>changeset {rev}</td>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
48 {parent%fileannotateparent}
48 {parent%fileannotateparent}
49 {child%fileannotatechild}
49 {child%fileannotatechild}
50 <tr>
50 <tr>
51 <td>permissions</td>
51 <td>permissions</td>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
53 </table>
53 </table>
54 </div>
54 </div>
55
55
56 <div class="page_path">
56 <div class="page_path">
57 {desc|strip|escape|addbreaks|nonempty}
57 {desc|strip|escape|addbreaks|nonempty}
58 </div>
58 </div>
59 <div class="page_body">
59 <div class="page_body">
60 <table>
60 <table>
61 {annotate%annotateline}
61 {annotate%annotateline}
62 </table>
62 </table>
63 </div>
63 </div>
64
64
65 {footer}
65 {footer}
@@ -1,64 +1,64 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 href="{url}atom-log" title="Atom feed for {repo|escape}"/>
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
6 href="{url}rss-log" title="RSS feed for {repo|escape}"/>
7 </head>
7 </head>
8 <body>
8 <body>
9
9
10 <div class="page_header">
10 <div class="page_header">
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
11 <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
12 </div>
12 </div>
13
13
14 <div class="page_nav">
14 <div class="page_nav">
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
15 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
16 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
17 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
18 <a href="{url}graph{sessionvars%urlparameter}">graph</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
19 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
20 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
21 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
22 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
23 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
24 file |
24 file |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
25 <a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
26 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a> |
29 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a> |
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
31 <br/>
31 <br/>
32 </div>
32 </div>
33
33
34 <div class="title">{file|escape}</div>
34 <div class="title">{file|escape}</div>
35
35
36 <div class="title_text">
36 <div class="title_text">
37 <table cellspacing="0">
37 <table cellspacing="0">
38 <tr>
38 <tr>
39 <td>author</td>
39 <td>author</td>
40 <td>{author|obfuscate}</td></tr>
40 <td>{author|obfuscate}</td></tr>
41 <tr>
41 <tr>
42 <td></td>
42 <td></td>
43 <td>{date|date} ({date|age})</td></tr>
43 <td class="date age">{date|date}</td></tr>
44 {branch%filerevbranch}
44 {branch%filerevbranch}
45 <tr>
45 <tr>
46 <td>changeset {rev}</td>
46 <td>changeset {rev}</td>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
47 <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
48 {parent%filerevparent}
48 {parent%filerevparent}
49 {child%filerevchild}
49 {child%filerevchild}
50 <tr>
50 <tr>
51 <td>permissions</td>
51 <td>permissions</td>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
52 <td style="font-family:monospace">{permissions|permissions}</td></tr>
53 </table>
53 </table>
54 </div>
54 </div>
55
55
56 <div class="page_path">
56 <div class="page_path">
57 {desc|strip|escape|addbreaks|nonempty}
57 {desc|strip|escape|addbreaks|nonempty}
58 </div>
58 </div>
59
59
60 <div class="page_body">
60 <div class="page_body">
61 {text%fileline}
61 {text%fileline}
62 </div>
62 </div>
63
63
64 {footer}
64 {footer}
@@ -1,11 +1,12 b''
1 <script type="text/javascript">process_dates()</script>
1 <div class="page_footer">
2 <div class="page_footer">
2 <div class="page_footer_text">{repo|escape}</div>
3 <div class="page_footer_text">{repo|escape}</div>
3 <div class="rss_logo">
4 <div class="rss_logo">
4 <a href="{url}rss-log">RSS</a>
5 <a href="{url}rss-log">RSS</a>
5 <a href="{url}atom-log">Atom</a>
6 <a href="{url}atom-log">Atom</a>
6 </div>
7 </div>
7 <br />
8 <br />
8 {motd}
9 {motd}
9 </div>
10 </div>
10 </body>
11 </body>
11 </html>
12 </html>
@@ -1,129 +1,128 b''
1 {header}
1 {header}
2 <title>{repo|escape}: Graph</title>
2 <title>{repo|escape}: Graph</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-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="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph
12 <a href="{logourl}" 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}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
27 <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
28 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
28 <a href="{url}branches{sessionvars%urlparameter}">branches</a> |
29 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
29 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
30 <a href="{url}help{sessionvars%urlparameter}">help</a>
31 <br/>
31 <br/>
32 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
32 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
33 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
33 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
34 | {changenav%navgraph}<br/>
34 | {changenav%navgraph}<br/>
35 </div>
35 </div>
36
36
37 <div class="title">&nbsp;</div>
37 <div class="title">&nbsp;</div>
38
38
39 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
39 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
40
40
41 <div id="wrapper">
41 <div id="wrapper">
42 <ul id="nodebgs"></ul>
42 <ul id="nodebgs"></ul>
43 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
43 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
44 <ul id="graphnodes"></ul>
44 <ul id="graphnodes"></ul>
45 </div>
45 </div>
46
46
47 <script type="text/javascript" src="{staticurl}graph.js"></script>
48 <script>
47 <script>
49 <!-- hide script content
48 <!-- hide script content
50
49
51 var data = {jsdata|json};
50 var data = {jsdata|json};
52 var graph = new Graph();
51 var graph = new Graph();
53 graph.scale({bg_height});
52 graph.scale({bg_height});
54
53
55 graph.edge = function(x0, y0, x1, y1, color) \{
54 graph.edge = function(x0, y0, x1, y1, color) \{
56
55
57 this.setColor(color, 0.0, 0.65);
56 this.setColor(color, 0.0, 0.65);
58 this.ctx.beginPath();
57 this.ctx.beginPath();
59 this.ctx.moveTo(x0, y0);
58 this.ctx.moveTo(x0, y0);
60 this.ctx.lineTo(x1, y1);
59 this.ctx.lineTo(x1, y1);
61 this.ctx.stroke();
60 this.ctx.stroke();
62
61
63 }
62 }
64
63
65 var revlink = '<li style="_STYLE"><span class="desc">';
64 var revlink = '<li style="_STYLE"><span class="desc">';
66 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>';
67 revlink += '</span> _TAGS';
66 revlink += '</span> _TAGS';
68 revlink += '<span class="info">_DATE, by _USER</span></li>';
67 revlink += '<span class="info">_DATE, by _USER</span></li>';
69
68
70 graph.vertex = function(x, y, color, parity, cur) \{
69 graph.vertex = function(x, y, color, parity, cur) \{
71
70
72 this.ctx.beginPath();
71 this.ctx.beginPath();
73 color = this.setColor(color, 0.25, 0.75);
72 color = this.setColor(color, 0.25, 0.75);
74 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
73 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
75 this.ctx.fill();
74 this.ctx.fill();
76
75
77 var bg = '<li class="bg parity' + parity + '"></li>';
76 var bg = '<li class="bg parity' + parity + '"></li>';
78 var left = (this.columns + 1) * this.bg_height;
77 var left = (this.columns + 1) * this.bg_height;
79 var nstyle = 'padding-left: ' + left + 'px;';
78 var nstyle = 'padding-left: ' + left + 'px;';
80 var item = revlink.replace(/_STYLE/, nstyle);
79 var item = revlink.replace(/_STYLE/, nstyle);
81 item = item.replace(/_PARITY/, 'parity' + parity);
80 item = item.replace(/_PARITY/, 'parity' + parity);
82 item = item.replace(/_NODEID/, cur[0]);
81 item = item.replace(/_NODEID/, cur[0]);
83 item = item.replace(/_NODEID/, cur[0]);
82 item = item.replace(/_NODEID/, cur[0]);
84 item = item.replace(/_DESC/, cur[3]);
83 item = item.replace(/_DESC/, cur[3]);
85 item = item.replace(/_USER/, cur[4]);
84 item = item.replace(/_USER/, cur[4]);
86 item = item.replace(/_DATE/, cur[5]);
85 item = item.replace(/_DATE/, cur[5]);
87
86
88 var tagspan = '';
87 var tagspan = '';
89 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) \{
88 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) \{
90 tagspan = '<span class="logtags">';
89 tagspan = '<span class="logtags">';
91 if (cur[6][1]) \{
90 if (cur[6][1]) \{
92 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
91 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
93 tagspan += cur[6][0] + '</span> ';
92 tagspan += cur[6][0] + '</span> ';
94 } else if (!cur[6][1] && cur[6][0] != 'default') \{
93 } else if (!cur[6][1] && cur[6][0] != 'default') \{
95 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
94 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
96 tagspan += cur[6][0] + '</span> ';
95 tagspan += cur[6][0] + '</span> ';
97 }
96 }
98 if (cur[7].length) \{
97 if (cur[7].length) \{
99 for (var t in cur[7]) \{
98 for (var t in cur[7]) \{
100 var tag = cur[7][t];
99 var tag = cur[7][t];
101 tagspan += '<span class="tagtag">' + tag + '</span> ';
100 tagspan += '<span class="tagtag">' + tag + '</span> ';
102 }
101 }
103 }
102 }
104 if (cur[8].length) \{
103 if (cur[8].length) \{
105 for (var t in cur[8]) \{
104 for (var t in cur[8]) \{
106 var bookmark = cur[8][t];
105 var bookmark = cur[8][t];
107 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
106 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
108 }
107 }
109 }
108 }
110 tagspan += '</span>';
109 tagspan += '</span>';
111 }
110 }
112
111
113 item = item.replace(/_TAGS/, tagspan);
112 item = item.replace(/_TAGS/, tagspan);
114 return [bg, item];
113 return [bg, item];
115
114
116 }
115 }
117
116
118 graph.render(data);
117 graph.render(data);
119
118
120 // stop hiding script -->
119 // stop hiding script -->
121 </script>
120 </script>
122
121
123 <div class="page_nav">
122 <div class="page_nav">
124 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
123 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
125 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
124 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
126 | {changenav%navgraph}
125 | {changenav%navgraph}
127 </div>
126 </div>
128
127
129 {footer}
128 {footer}
@@ -1,8 +1,8 b''
1 <?xml version="1.0" encoding="{encoding}"?>
1 <?xml version="1.0" encoding="{encoding}"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
4 <head>
4 <head>
5 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
5 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
6 <meta name="robots" content="index, nofollow"/>
6 <meta name="robots" content="index, nofollow"/>
7 <link rel="stylesheet" href="{staticurl}style-gitweb.css" type="text/css" />
7 <link rel="stylesheet" href="{staticurl}style-gitweb.css" type="text/css" />
8
8 <script type="text/javascript" src="{staticurl}mercurial.js"></script>
@@ -1,272 +1,272 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15
15
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 filenodelink = '
21 filenodelink = '
22 <tr class="parity{parity}">
22 <tr class="parity{parity}">
23 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
23 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
24 <td></td>
24 <td></td>
25 <td class="link">
25 <td class="link">
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
30 </td>
30 </td>
31 </tr>'
31 </tr>'
32 filenolink = '
32 filenolink = '
33 <tr class="parity{parity}">
33 <tr class="parity{parity}">
34 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
34 <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
35 <td></td>
35 <td></td>
36 <td class="link">
36 <td class="link">
37 file |
37 file |
38 annotate |
38 annotate |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
39 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
40 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
41 </td>
41 </td>
42 </tr>'
42 </tr>'
43
43
44 nav = '{before%naventry} {after%naventry}'
44 nav = '{before%naventry} {after%naventry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
45 navshort = '{before%navshortentry}{after%navshortentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
46 navgraph = '{before%navgraphentry}{after%navgraphentry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
47 filenav = '{before%filenaventry}{after%filenaventry}'
48
48
49 fileellipses = '...'
49 fileellipses = '...'
50 changelogentry = changelogentry.tmpl
50 changelogentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
51 searchentry = changelogentry.tmpl
52 changeset = changeset.tmpl
52 changeset = changeset.tmpl
53 manifest = manifest.tmpl
53 manifest = manifest.tmpl
54 direntry = '
54 direntry = '
55 <tr class="parity{parity}">
55 <tr class="parity{parity}">
56 <td style="font-family:monospace">drwxr-xr-x</td>
56 <td style="font-family:monospace">drwxr-xr-x</td>
57 <td style="font-family:monospace"></td>
57 <td style="font-family:monospace"></td>
58 <td style="font-family:monospace"></td>
58 <td style="font-family:monospace"></td>
59 <td>
59 <td>
60 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
60 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
61 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
61 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
62 </td>
62 </td>
63 <td class="link">
63 <td class="link">
64 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
64 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
65 </td>
65 </td>
66 </tr>'
66 </tr>'
67 fileentry = '
67 fileentry = '
68 <tr class="parity{parity}">
68 <tr class="parity{parity}">
69 <td style="font-family:monospace">{permissions|permissions}</td>
69 <td style="font-family:monospace">{permissions|permissions}</td>
70 <td style="font-family:monospace" align=right>{date|isodate}</td>
70 <td style="font-family:monospace" align=right>{date|isodate}</td>
71 <td style="font-family:monospace" align=right>{size}</td>
71 <td style="font-family:monospace" align=right>{size}</td>
72 <td class="list">
72 <td class="list">
73 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
73 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
74 </td>
74 </td>
75 <td class="link">
75 <td class="link">
76 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
76 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
77 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
77 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
78 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
78 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
79 </td>
79 </td>
80 </tr>'
80 </tr>'
81 filerevision = filerevision.tmpl
81 filerevision = filerevision.tmpl
82 fileannotate = fileannotate.tmpl
82 fileannotate = fileannotate.tmpl
83 filediff = filediff.tmpl
83 filediff = filediff.tmpl
84 filelog = filelog.tmpl
84 filelog = filelog.tmpl
85 fileline = '
85 fileline = '
86 <div style="font-family:monospace" class="parity{parity}">
86 <div style="font-family:monospace" class="parity{parity}">
87 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
87 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
88 </div>'
88 </div>'
89 annotateline = '
89 annotateline = '
90 <tr style="font-family:monospace" class="parity{parity}">
90 <tr style="font-family:monospace" class="parity{parity}">
91 <td class="linenr" style="text-align: right;">
91 <td class="linenr" style="text-align: right;">
92 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
92 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
93 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
93 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
94 </td>
94 </td>
95 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
95 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
96 <td><pre>{line|escape}</pre></td>
96 <td><pre>{line|escape}</pre></td>
97 </tr>'
97 </tr>'
98 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
98 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
99 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
99 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
100 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
100 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
101 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
101 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
102 changelogparent = '
102 changelogparent = '
103 <tr>
103 <tr>
104 <th class="parent">parent {rev}:</th>
104 <th class="parent">parent {rev}:</th>
105 <td class="parent">
105 <td class="parent">
106 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
106 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
107 </td>
107 </td>
108 </tr>'
108 </tr>'
109 changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
109 changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
110 changesetparent = '
110 changesetparent = '
111 <tr>
111 <tr>
112 <td>parent {rev}</td>
112 <td>parent {rev}</td>
113 <td style="font-family:monospace">
113 <td style="font-family:monospace">
114 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
114 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
115 </td>
115 </td>
116 </tr>'
116 </tr>'
117 filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
117 filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
118 filerevparent = '
118 filerevparent = '
119 <tr>
119 <tr>
120 <td>parent {rev}</td>
120 <td>parent {rev}</td>
121 <td style="font-family:monospace">
121 <td style="font-family:monospace">
122 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
122 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
123 {rename%filerename}{node|short}
123 {rename%filerename}{node|short}
124 </a>
124 </a>
125 </td>
125 </td>
126 </tr>'
126 </tr>'
127 filerename = '{file|escape}@'
127 filerename = '{file|escape}@'
128 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
128 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
129 fileannotateparent = '
129 fileannotateparent = '
130 <tr>
130 <tr>
131 <td>parent {rev}</td>
131 <td>parent {rev}</td>
132 <td style="font-family:monospace">
132 <td style="font-family:monospace">
133 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
133 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
134 {rename%filerename}{node|short}
134 {rename%filerename}{node|short}
135 </a>
135 </a>
136 </td>
136 </td>
137 </tr>'
137 </tr>'
138 changelogchild = '
138 changelogchild = '
139 <tr>
139 <tr>
140 <th class="child">child {rev}:</th>
140 <th class="child">child {rev}:</th>
141 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
141 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
142 </tr>'
142 </tr>'
143 changesetchild = '
143 changesetchild = '
144 <tr>
144 <tr>
145 <td>child {rev}</td>
145 <td>child {rev}</td>
146 <td style="font-family:monospace">
146 <td style="font-family:monospace">
147 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
147 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
148 </td>
148 </td>
149 </tr>'
149 </tr>'
150 filerevchild = '
150 filerevchild = '
151 <tr>
151 <tr>
152 <td>child {rev}</td>
152 <td>child {rev}</td>
153 <td style="font-family:monospace">
153 <td style="font-family:monospace">
154 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
154 <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
155 </tr>'
155 </tr>'
156 fileannotatechild = '
156 fileannotatechild = '
157 <tr>
157 <tr>
158 <td>child {rev}</td>
158 <td>child {rev}</td>
159 <td style="font-family:monospace">
159 <td style="font-family:monospace">
160 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
160 <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
161 </tr>'
161 </tr>'
162 tags = tags.tmpl
162 tags = tags.tmpl
163 tagentry = '
163 tagentry = '
164 <tr class="parity{parity}">
164 <tr class="parity{parity}">
165 <td class="age"><i>{date|age}</i></td>
165 <td class="age"><i class="age">{date|date}</i></td>
166 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
166 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
167 <td class="link">
167 <td class="link">
168 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
168 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
169 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
169 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
170 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
170 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
171 </td>
171 </td>
172 </tr>'
172 </tr>'
173 bookmarks = bookmarks.tmpl
173 bookmarks = bookmarks.tmpl
174 bookmarkentry = '
174 bookmarkentry = '
175 <tr class="parity{parity}">
175 <tr class="parity{parity}">
176 <td class="age"><i>{date|age}</i></td>
176 <td class="age"><i class="age">{date|date}</i></td>
177 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
177 <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
178 <td class="link">
178 <td class="link">
179 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
179 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
180 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
180 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
181 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
181 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
182 </td>
182 </td>
183 </tr>'
183 </tr>'
184 branches = branches.tmpl
184 branches = branches.tmpl
185 branchentry = '
185 branchentry = '
186 <tr class="parity{parity}">
186 <tr class="parity{parity}">
187 <td class="age"><i>{date|age}</i></td>
187 <td class="age"><i class="age">{date|date}</i></td>
188 <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
188 <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
189 <td class="{status}">{branch|escape}</td>
189 <td class="{status}">{branch|escape}</td>
190 <td class="link">
190 <td class="link">
191 <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
191 <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
192 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
192 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
193 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
193 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
194 </td>
194 </td>
195 </tr>'
195 </tr>'
196 diffblock = '<pre>{lines}</pre>'
196 diffblock = '<pre>{lines}</pre>'
197 filediffparent = '
197 filediffparent = '
198 <tr>
198 <tr>
199 <td>parent {rev}</td>
199 <td>parent {rev}</td>
200 <td style="font-family:monospace">
200 <td style="font-family:monospace">
201 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
201 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
202 {node|short}
202 {node|short}
203 </a>
203 </a>
204 </td>
204 </td>
205 </tr>'
205 </tr>'
206 filelogparent = '
206 filelogparent = '
207 <tr>
207 <tr>
208 <td align="right">parent {rev}:&nbsp;</td>
208 <td align="right">parent {rev}:&nbsp;</td>
209 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
209 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
210 </tr>'
210 </tr>'
211 filediffchild = '
211 filediffchild = '
212 <tr>
212 <tr>
213 <td>child {rev}</td>
213 <td>child {rev}</td>
214 <td style="font-family:monospace">
214 <td style="font-family:monospace">
215 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
215 <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
216 </td>
216 </td>
217 </tr>'
217 </tr>'
218 filelogchild = '
218 filelogchild = '
219 <tr>
219 <tr>
220 <td align="right">child {rev}:&nbsp;</td>
220 <td align="right">child {rev}:&nbsp;</td>
221 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
221 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
222 </tr>'
222 </tr>'
223 shortlog = shortlog.tmpl
223 shortlog = shortlog.tmpl
224 graph = graph.tmpl
224 graph = graph.tmpl
225 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
225 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
226 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
226 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
227 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
227 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
228 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
228 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
229 shortlogentry = '
229 shortlogentry = '
230 <tr class="parity{parity}">
230 <tr class="parity{parity}">
231 <td class="age"><i>{date|age}</i></td>
231 <td class="age"><i class="age">{date|date}</i></td>
232 <td><i>{author|person}</i></td>
232 <td><i>{author|person}</i></td>
233 <td>
233 <td>
234 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
234 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
235 <b>{desc|strip|firstline|escape|nonempty}</b>
235 <b>{desc|strip|firstline|escape|nonempty}</b>
236 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
236 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
237 </a>
237 </a>
238 </td>
238 </td>
239 <td class="link" nowrap>
239 <td class="link" nowrap>
240 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
240 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
241 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
241 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
242 </td>
242 </td>
243 </tr>'
243 </tr>'
244 filelogentry = '
244 filelogentry = '
245 <tr class="parity{parity}">
245 <tr class="parity{parity}">
246 <td class="age"><i>{date|age}</i></td>
246 <td class="age"><i class="age">{date|date}</i></td>
247 <td>
247 <td>
248 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
248 <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
249 <b>{desc|strip|firstline|escape|nonempty}</b>
249 <b>{desc|strip|firstline|escape|nonempty}</b>
250 </a>
250 </a>
251 </td>
251 </td>
252 <td class="link">
252 <td class="link">
253 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
253 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
254 </tr>'
254 </tr>'
255 archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
255 archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
256 indexentry = '
256 indexentry = '
257 <tr class="parity{parity}">
257 <tr class="parity{parity}">
258 <td>
258 <td>
259 <a class="list" href="{url}{sessionvars%urlparameter}">
259 <a class="list" href="{url}{sessionvars%urlparameter}">
260 <b>{name|escape}</b>
260 <b>{name|escape}</b>
261 </a>
261 </a>
262 </td>
262 </td>
263 <td>{description}</td>
263 <td>{description}</td>
264 <td>{contact|obfuscate}</td>
264 <td>{contact|obfuscate}</td>
265 <td class="age">{lastchange|age}</td>
265 <td class="age">{lastchange|date}</td>
266 <td class="indexlinks">{archives%indexarchiveentry}</td>
266 <td class="indexlinks">{archives%indexarchiveentry}</td>
267 <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
267 <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
268 </tr>\n'
268 </tr>\n'
269 indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
269 indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
270 index = index.tmpl
270 index = index.tmpl
271 urlparameter = '{separator}{name}={value|urlescape}'
271 urlparameter = '{separator}{name}={value|urlescape}'
272 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
272 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,6 +1,6 b''
1 <h3 class="changelog"><a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
1 <h3 class="changelog"><a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
2 <ul class="changelog-entry">
2 <ul class="changelog-entry">
3 <li class="age">{date|age}</li>
3 <li class="age">{date|date}</li>
4 <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
4 <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
5 <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
5 <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
6 </ul>
6 </ul>
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
2 <title>{repo|escape}: changeset {rev}:{node|short}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
30 </ul>
31 </div>
31 </div>
32
32
33 <ul class="submenu">
33 <ul class="submenu">
34 <li class="current">changeset</li>
34 <li class="current">changeset</li>
35 <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
35 <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
36 </ul>
36 </ul>
37
37
38 <h2 class="no-link no-border">changeset</h2>
38 <h2 class="no-link no-border">changeset</h2>
39
39
40 <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
40 <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
41 <p class="changeset-age"><span>{date|age}</span></p>
41 <p class="changeset-age age">{date|date}</p>
42
42
43 <dl class="overview">
43 <dl class="overview">
44 <dt>author</dt>
44 <dt>author</dt>
45 <dd>{author|obfuscate}</dd>
45 <dd>{author|obfuscate}</dd>
46 <dt>date</dt>
46 <dt>date</dt>
47 <dd>{date|date}</dd>
47 <dd>{date|date}</dd>
48 {branch%changesetbranch}
48 {branch%changesetbranch}
49 <dt>changeset {rev}</dt>
49 <dt>changeset {rev}</dt>
50 <dd>{node|short}</dd>
50 <dd>{node|short}</dd>
51 {parent%changesetparent}
51 {parent%changesetparent}
52 {child%changesetchild}
52 {child%changesetchild}
53 </dl>
53 </dl>
54
54
55 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
55 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
56
56
57 <table>
57 <table>
58 {files}
58 {files}
59 </table>
59 </table>
60
60
61 <div class="diff">
61 <div class="diff">
62 {diff}
62 {diff}
63 </div>
63 </div>
64
64
65 {footer}
65 {footer}
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
2 <title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
30 </ul>
31 </div>
31 </div>
32
32
33 <ul class="submenu">
33 <ul class="submenu">
34 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
34 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
36 <li class="current">annotate</li>
36 <li class="current">annotate</li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
38 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
38 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
39 </ul>
39 </ul>
40
40
41 <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
41 <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
42 <h3 class="changeset">{file|escape}</h3>
42 <h3 class="changeset">{file|escape}</h3>
43 <p class="changeset-age"><span>{date|age}</span></p>
43 <p class="changeset-age age">{date|date}</p>
44
44
45 <dl class="overview">
45 <dl class="overview">
46 <dt>author</dt>
46 <dt>author</dt>
47 <dd>{author|obfuscate}</dd>
47 <dd>{author|obfuscate}</dd>
48 <dt>date</dt>
48 <dt>date</dt>
49 <dd>{date|date}</dd>
49 <dd>{date|date}</dd>
50 {branch%filerevbranch}
50 {branch%filerevbranch}
51 <dt>changeset {rev}</dt>
51 <dt>changeset {rev}</dt>
52 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
52 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
53 {parent%fileannotateparent}
53 {parent%fileannotateparent}
54 {child%fileannotatechild}
54 {child%fileannotatechild}
55 <dt>permissions</dt>
55 <dt>permissions</dt>
56 <dd>{permissions|permissions}</dd>
56 <dd>{permissions|permissions}</dd>
57 </dl>
57 </dl>
58
58
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
60
60
61 <table class="annotated">
61 <table class="annotated">
62 {annotate%annotateline}
62 {annotate%annotateline}
63 </table>
63 </table>
64
64
65 {footer}
65 {footer}
@@ -1,65 +1,65 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
2 <title>{repo|escape}: {file|escape}@{node|short}</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 </head>
5 </head>
6
6
7 <body>
7 <body>
8 <div id="container">
8 <div id="container">
9 <div class="page-header">
9 <div class="page-header">
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
10 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
11
11
12 <form action="{url}log">
12 <form action="{url}log">
13 {sessionvars%hiddenformentry}
13 {sessionvars%hiddenformentry}
14 <dl class="search">
14 <dl class="search">
15 <dt><label>Search: </label></dt>
15 <dt><label>Search: </label></dt>
16 <dd><input type="text" name="rev" /></dd>
16 <dd><input type="text" name="rev" /></dd>
17 </dl>
17 </dl>
18 </form>
18 </form>
19
19
20 <ul class="page-nav">
20 <ul class="page-nav">
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
21 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
22 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
23 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
24 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
25 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
26 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
27 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
28 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
30 </ul>
31 </div>
31 </div>
32
32
33 <ul class="submenu">
33 <ul class="submenu">
34 <li class="current">file</li>
34 <li class="current">file</li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
35 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
36 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
36 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
37 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
38 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
38 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
39 </ul>
39 </ul>
40
40
41 <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
41 <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
42 <h3 class="changeset">{file|escape}</h3>
42 <h3 class="changeset">{file|escape}</h3>
43 <p class="changeset-age"><span>{date|age}</span></p>
43 <p class="changeset-age age">{date|date}</p>
44
44
45 <dl class="overview">
45 <dl class="overview">
46 <dt>author</dt>
46 <dt>author</dt>
47 <dd>{author|obfuscate}</dd>
47 <dd>{author|obfuscate}</dd>
48 <dt>date</dt>
48 <dt>date</dt>
49 <dd>{date|date}</dd>
49 <dd>{date|date}</dd>
50 {branch%filerevbranch}
50 {branch%filerevbranch}
51 <dt>changeset {rev}</dt>
51 <dt>changeset {rev}</dt>
52 <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
52 <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
53 {parent%filerevparent}
53 {parent%filerevparent}
54 {child%filerevchild}
54 {child%filerevchild}
55 <dt>permissions</dt>
55 <dt>permissions</dt>
56 <dd>{permissions|permissions}</dd>
56 <dd>{permissions|permissions}</dd>
57 </dl>
57 </dl>
58
58
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
59 <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
60
60
61 <div class="source">
61 <div class="source">
62 {text%fileline}
62 {text%fileline}
63 </div>
63 </div>
64
64
65 {footer}
65 {footer}
@@ -1,22 +1,23 b''
1 <script type="text/javascript">process_dates()</script>
1 <div class="page-footer">
2 <div class="page-footer">
2 <p>Mercurial Repository: {repo|escape}</p>
3 <p>Mercurial Repository: {repo|escape}</p>
3 <ul class="rss-logo">
4 <ul class="rss-logo">
4 <li><a href="{url}rss-log">RSS</a></li>
5 <li><a href="{url}rss-log">RSS</a></li>
5 <li><a href="{url}atom-log">Atom</a></li>
6 <li><a href="{url}atom-log">Atom</a></li>
6 </ul>
7 </ul>
7 {motd}
8 {motd}
8 </div>
9 </div>
9
10
10 <div id="powered-by">
11 <div id="powered-by">
11 <p><a href="{logourl}" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
12 <p><a href="{logourl}" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
12 </div>
13 </div>
13
14
14 <div id="corner-top-left"></div>
15 <div id="corner-top-left"></div>
15 <div id="corner-top-right"></div>
16 <div id="corner-top-right"></div>
16 <div id="corner-bottom-left"></div>
17 <div id="corner-bottom-left"></div>
17 <div id="corner-bottom-right"></div>
18 <div id="corner-bottom-right"></div>
18
19
19 </div>
20 </div>
20
21
21 </body>
22 </body>
22 </html>
23 </html>
@@ -1,126 +1,125 b''
1 {header}
1 {header}
2 <title>{repo|escape}: graph</title>
2 <title>{repo|escape}: graph</title>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
3 <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
4 <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
5 <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
5 <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
6 </head>
6 </head>
7
7
8 <body>
8 <body>
9 <div id="container">
9 <div id="container">
10 <div class="page-header">
10 <div class="page-header">
11 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph</h1>
11 <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph</h1>
12
12
13 <form action="{url}log">
13 <form action="{url}log">
14 {sessionvars%hiddenformentry}
14 {sessionvars%hiddenformentry}
15 <dl class="search">
15 <dl class="search">
16 <dt><label>Search: </label></dt>
16 <dt><label>Search: </label></dt>
17 <dd><input type="text" name="rev" /></dd>
17 <dd><input type="text" name="rev" /></dd>
18 </dl>
18 </dl>
19 </form>
19 </form>
20
20
21 <ul class="page-nav">
21 <ul class="page-nav">
22 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
22 <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
23 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
23 <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
24 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
24 <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
25 <li class="current">graph</li>
25 <li class="current">graph</li>
26 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
26 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
27 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
27 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
28 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
28 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
29 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
29 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
30 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
31 </ul>
31 </ul>
32 </div>
32 </div>
33
33
34 <h2 class="no-link no-border">graph</h2>
34 <h2 class="no-link no-border">graph</h2>
35
35
36 <div id="noscript">The revision graph only works with JavaScript-enabled browsers.</div>
36 <div id="noscript">The revision graph only works with JavaScript-enabled browsers.</div>
37 <div id="wrapper">
37 <div id="wrapper">
38 <ul id="nodebgs"></ul>
38 <ul id="nodebgs"></ul>
39 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
39 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
40 <ul id="graphnodes"></ul>
40 <ul id="graphnodes"></ul>
41 </div>
41 </div>
42
42
43 <script type="text/javascript" src="{staticurl}graph.js"></script>
44 <script>
43 <script>
45 <!-- hide script content
44 <!-- hide script content
46
45
47 document.getElementById('noscript').style.display = 'none';
46 document.getElementById('noscript').style.display = 'none';
48
47
49 var data = {jsdata|json};
48 var data = {jsdata|json};
50 var graph = new Graph();
49 var graph = new Graph();
51 graph.scale({bg_height});
50 graph.scale({bg_height});
52
51
53 graph.edge = function(x0, y0, x1, y1, color) \{
52 graph.edge = function(x0, y0, x1, y1, color) \{
54
53
55 this.setColor(color, 0.0, 0.65);
54 this.setColor(color, 0.0, 0.65);
56 this.ctx.beginPath();
55 this.ctx.beginPath();
57 this.ctx.moveTo(x0, y0);
56 this.ctx.moveTo(x0, y0);
58 this.ctx.lineTo(x1, y1);
57 this.ctx.lineTo(x1, y1);
59 this.ctx.stroke();
58 this.ctx.stroke();
60
59
61 }
60 }
62
61
63 var revlink = '<li style="_STYLE"><span class="desc">';
62 var revlink = '<li style="_STYLE"><span class="desc">';
64 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
63 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
65 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
64 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
66
65
67 graph.vertex = function(x, y, color, parity, cur) \{
66 graph.vertex = function(x, y, color, parity, cur) \{
68
67
69 this.ctx.beginPath();
68 this.ctx.beginPath();
70 color = this.setColor(color, 0.25, 0.75);
69 color = this.setColor(color, 0.25, 0.75);
71 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
70 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
72 this.ctx.fill();
71 this.ctx.fill();
73
72
74 var bg = '<li class="bg parity' + parity + '"></li>';
73 var bg = '<li class="bg parity' + parity + '"></li>';
75 var left = (this.columns + 1) * this.bg_height;
74 var left = (this.columns + 1) * this.bg_height;
76 var nstyle = 'padding-left: ' + left + 'px;';
75 var nstyle = 'padding-left: ' + left + 'px;';
77 var item = revlink.replace(/_STYLE/, nstyle);
76 var item = revlink.replace(/_STYLE/, nstyle);
78 item = item.replace(/_PARITY/, 'parity' + parity);
77 item = item.replace(/_PARITY/, 'parity' + parity);
79 item = item.replace(/_NODEID/, cur[0]);
78 item = item.replace(/_NODEID/, cur[0]);
80 item = item.replace(/_NODEID/, cur[0]);
79 item = item.replace(/_NODEID/, cur[0]);
81 item = item.replace(/_DESC/, cur[3]);
80 item = item.replace(/_DESC/, cur[3]);
82 item = item.replace(/_USER/, cur[4]);
81 item = item.replace(/_USER/, cur[4]);
83 item = item.replace(/_DATE/, cur[5]);
82 item = item.replace(/_DATE/, cur[5]);
84
83
85 var tagspan = '';
84 var tagspan = '';
86 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) \{
85 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) \{
87 tagspan = '<span class="logtags">';
86 tagspan = '<span class="logtags">';
88 if (cur[6][1]) \{
87 if (cur[6][1]) \{
89 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
88 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
90 tagspan += cur[6][0] + '</span> ';
89 tagspan += cur[6][0] + '</span> ';
91 } else if (!cur[6][1] && cur[6][0] != 'default') \{
90 } else if (!cur[6][1] && cur[6][0] != 'default') \{
92 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
91 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
93 tagspan += cur[6][0] + '</span> ';
92 tagspan += cur[6][0] + '</span> ';
94 }
93 }
95 if (cur[7].length) \{
94 if (cur[7].length) \{
96 for (var t in cur[7]) \{
95 for (var t in cur[7]) \{
97 var tag = cur[7][t];
96 var tag = cur[7][t];
98 tagspan += '<span class="tagtag">' + tag + '</span> ';
97 tagspan += '<span class="tagtag">' + tag + '</span> ';
99 }
98 }
100 }
99 }
101 if (cur[8].length) \{
100 if (cur[8].length) \{
102 for (var t in cur[8]) \{
101 for (var t in cur[8]) \{
103 var bookmark = cur[8][t];
102 var bookmark = cur[8][t];
104 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
103 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
105 }
104 }
106 }
105 }
107 tagspan += '</span>';
106 tagspan += '</span>';
108 }
107 }
109
108
110 item = item.replace(/_TAGS/, tagspan);
109 item = item.replace(/_TAGS/, tagspan);
111 return [bg, item];
110 return [bg, item];
112
111
113 }
112 }
114
113
115 graph.render(data);
114 graph.render(data);
116
115
117 // stop hiding script -->
116 // stop hiding script -->
118 </script>
117 </script>
119
118
120 <div class="page-path">
119 <div class="page-path">
121 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
120 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
122 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
121 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
123 | {changenav%navgraph}
122 | {changenav%navgraph}
124 </div>
123 </div>
125
124
126 {footer}
125 {footer}
@@ -1,6 +1,7 b''
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3 <head>
3 <head>
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
5 <meta name="robots" content="index, nofollow"/>
5 <meta name="robots" content="index, nofollow"/>
6 <link rel="stylesheet" href="{staticurl}style-monoblue.css" type="text/css" />
6 <link rel="stylesheet" href="{staticurl}style-monoblue.css" type="text/css" />
7 <script type="text/javascript" src="{staticurl}mercurial.js"></script>
@@ -1,238 +1,238 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
14 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15
15
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
16 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
19 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
20 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 filenodelink = '
21 filenodelink = '
22 <tr class="parity{parity}">
22 <tr class="parity{parity}">
23 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
23 <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
24 <td></td>
24 <td></td>
25 <td>
25 <td>
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
26 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
27 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
28 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
29 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
30 </td>
30 </td>
31 </tr>'
31 </tr>'
32 filenolink = '
32 filenolink = '
33 <tr class="parity{parity}">
33 <tr class="parity{parity}">
34 <td>
34 <td>
35 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td><td></td><td>file |
35 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td><td></td><td>file |
36 annotate |
36 annotate |
37 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
37 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
38 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
39 </td>
39 </td>
40 </tr>'
40 </tr>'
41
41
42 nav = '{before%naventry} {after%naventry}'
42 nav = '{before%naventry} {after%naventry}'
43 navshort = '{before%navshortentry}{after%navshortentry}'
43 navshort = '{before%navshortentry}{after%navshortentry}'
44 navgraph = '{before%navgraphentry}{after%navgraphentry}'
44 navgraph = '{before%navgraphentry}{after%navgraphentry}'
45 filenav = '{before%filenaventry}{after%filenaventry}'
45 filenav = '{before%filenaventry}{after%filenaventry}'
46
46
47 fileellipses = '...'
47 fileellipses = '...'
48 changelogentry = changelogentry.tmpl
48 changelogentry = changelogentry.tmpl
49 searchentry = changelogentry.tmpl
49 searchentry = changelogentry.tmpl
50 changeset = changeset.tmpl
50 changeset = changeset.tmpl
51 manifest = manifest.tmpl
51 manifest = manifest.tmpl
52 direntry = '
52 direntry = '
53 <tr class="parity{parity}">
53 <tr class="parity{parity}">
54 <td>drwxr-xr-x</td>
54 <td>drwxr-xr-x</td>
55 <td></td>
55 <td></td>
56 <td></td>
56 <td></td>
57 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
57 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
58 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
58 <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
59 </tr>'
59 </tr>'
60 fileentry = '
60 fileentry = '
61 <tr class="parity{parity}">
61 <tr class="parity{parity}">
62 <td>{permissions|permissions}</td>
62 <td>{permissions|permissions}</td>
63 <td>{date|isodate}</td>
63 <td>{date|isodate}</td>
64 <td>{size}</td>
64 <td>{size}</td>
65 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
65 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
66 <td>
66 <td>
67 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
67 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
68 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
68 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
69 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
69 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
70 </td>
70 </td>
71 </tr>'
71 </tr>'
72 filerevision = filerevision.tmpl
72 filerevision = filerevision.tmpl
73 fileannotate = fileannotate.tmpl
73 fileannotate = fileannotate.tmpl
74 filediff = filediff.tmpl
74 filediff = filediff.tmpl
75 filelog = filelog.tmpl
75 filelog = filelog.tmpl
76 fileline = '
76 fileline = '
77 <div style="font-family:monospace" class="parity{parity}">
77 <div style="font-family:monospace" class="parity{parity}">
78 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
78 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
79 </div>'
79 </div>'
80 annotateline = '
80 annotateline = '
81 <tr class="parity{parity}">
81 <tr class="parity{parity}">
82 <td class="linenr">
82 <td class="linenr">
83 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
83 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
84 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
84 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
85 </td>
85 </td>
86 <td class="lineno">
86 <td class="lineno">
87 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
87 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
88 </td>
88 </td>
89 <td class="source">{line|escape}</td>
89 <td class="source">{line|escape}</td>
90 </tr>'
90 </tr>'
91 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
91 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
92 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
92 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
93 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
93 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
94 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
94 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
95 changelogparent = '
95 changelogparent = '
96 <tr>
96 <tr>
97 <th class="parent">parent {rev}:</th>
97 <th class="parent">parent {rev}:</th>
98 <td class="parent">
98 <td class="parent">
99 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
99 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
100 </td>
100 </td>
101 </tr>'
101 </tr>'
102 changesetbranch = '<dt>branch</dt><dd>{name}</dd>'
102 changesetbranch = '<dt>branch</dt><dd>{name}</dd>'
103 changesetparent = '
103 changesetparent = '
104 <dt>parent {rev}</dt>
104 <dt>parent {rev}</dt>
105 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
105 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
106 filerevbranch = '<dt>branch</dt><dd>{name}</dd>'
106 filerevbranch = '<dt>branch</dt><dd>{name}</dd>'
107 filerevparent = '
107 filerevparent = '
108 <dt>parent {rev}</dt>
108 <dt>parent {rev}</dt>
109 <dd>
109 <dd>
110 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
110 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
111 {rename%filerename}{node|short}
111 {rename%filerename}{node|short}
112 </a>
112 </a>
113 </dd>'
113 </dd>'
114 filerename = '{file|escape}@'
114 filerename = '{file|escape}@'
115 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
115 filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
116 fileannotateparent = '
116 fileannotateparent = '
117 <dt>parent {rev}</dt>
117 <dt>parent {rev}</dt>
118 <dd>
118 <dd>
119 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
119 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
120 {rename%filerename}{node|short}
120 {rename%filerename}{node|short}
121 </a>
121 </a>
122 </dd>'
122 </dd>'
123 changelogchild = '
123 changelogchild = '
124 <dt>child {rev}:</dt>
124 <dt>child {rev}:</dt>
125 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
125 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
126 changesetchild = '
126 changesetchild = '
127 <dt>child {rev}</dt>
127 <dt>child {rev}</dt>
128 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
128 <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
129 filerevchild = '
129 filerevchild = '
130 <dt>child {rev}</dt>
130 <dt>child {rev}</dt>
131 <dd>
131 <dd>
132 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
132 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
133 </dd>'
133 </dd>'
134 fileannotatechild = '
134 fileannotatechild = '
135 <dt>child {rev}</dt>
135 <dt>child {rev}</dt>
136 <dd>
136 <dd>
137 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
137 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
138 </dd>'
138 </dd>'
139 tags = tags.tmpl
139 tags = tags.tmpl
140 tagentry = '
140 tagentry = '
141 <tr class="parity{parity}">
141 <tr class="parity{parity}">
142 <td class="nowrap">{date|age}</td>
142 <td class="nowrap age">{date|date}</td>
143 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
143 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
144 <td class="nowrap">
144 <td class="nowrap">
145 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
145 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
146 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
146 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
147 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
147 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
148 </td>
148 </td>
149 </tr>'
149 </tr>'
150 bookmarks = bookmarks.tmpl
150 bookmarks = bookmarks.tmpl
151 bookmarkentry = '
151 bookmarkentry = '
152 <tr class="parity{parity}">
152 <tr class="parity{parity}">
153 <td class="nowrap">{date|age}</td>
153 <td class="nowrap date">{date|date}</td>
154 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
154 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
155 <td class="nowrap">
155 <td class="nowrap">
156 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
156 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
157 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
157 <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
158 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
158 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
159 </td>
159 </td>
160 </tr>'
160 </tr>'
161 branches = branches.tmpl
161 branches = branches.tmpl
162 branchentry = '
162 branchentry = '
163 <tr class="parity{parity}">
163 <tr class="parity{parity}">
164 <td class="nowrap">{date|age}</td>
164 <td class="nowrap age">{date|date}</td>
165 <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
165 <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
166 <td class="{status}">{branch|escape}</td>
166 <td class="{status}">{branch|escape}</td>
167 <td class="nowrap">
167 <td class="nowrap">
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 diffblock = '<pre>{lines}</pre>'
173 diffblock = '<pre>{lines}</pre>'
174 filediffparent = '
174 filediffparent = '
175 <dt>parent {rev}</dt>
175 <dt>parent {rev}</dt>
176 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
176 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
177 filelogparent = '
177 filelogparent = '
178 <tr>
178 <tr>
179 <td align="right">parent {rev}:&nbsp;</td>
179 <td align="right">parent {rev}:&nbsp;</td>
180 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
180 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
181 </tr>'
181 </tr>'
182 filediffchild = '
182 filediffchild = '
183 <dt>child {rev}</dt>
183 <dt>child {rev}</dt>
184 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
184 <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
185 filelogchild = '
185 filelogchild = '
186 <tr>
186 <tr>
187 <td align="right">child {rev}:&nbsp;</td>
187 <td align="right">child {rev}:&nbsp;</td>
188 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
188 <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
189 </tr>'
189 </tr>'
190 shortlog = shortlog.tmpl
190 shortlog = shortlog.tmpl
191 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
191 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
192 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
192 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
193 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
193 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
194 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
194 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
195 shortlogentry = '
195 shortlogentry = '
196 <tr class="parity{parity}">
196 <tr class="parity{parity}">
197 <td class="nowrap">{date|age}</td>
197 <td class="nowrap age">{date|date}</td>
198 <td>{author|person}</td>
198 <td>{author|person}</td>
199 <td>
199 <td>
200 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
200 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
201 {desc|strip|firstline|escape|nonempty}
201 {desc|strip|firstline|escape|nonempty}
202 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
202 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
203 </a>
203 </a>
204 </td>
204 </td>
205 <td class="nowrap">
205 <td class="nowrap">
206 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
206 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
207 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
207 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
208 </td>
208 </td>
209 </tr>'
209 </tr>'
210 filelogentry = '
210 filelogentry = '
211 <tr class="parity{parity}">
211 <tr class="parity{parity}">
212 <td class="nowrap">{date|age}</td>
212 <td class="nowrap age">{date|date}</td>
213 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
213 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
214 <td class="nowrap">
214 <td class="nowrap">
215 <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>
215 <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>
216 {rename%filelogrename}
216 {rename%filelogrename}
217 </td>
217 </td>
218 </tr>'
218 </tr>'
219 archiveentry = '<li><a href="{url}archive/{node|short}{extension}">{type|escape}</a></li>'
219 archiveentry = '<li><a href="{url}archive/{node|short}{extension}">{type|escape}</a></li>'
220 indexentry = '
220 indexentry = '
221 <tr class="parity{parity}">
221 <tr class="parity{parity}">
222 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
222 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
223 <td>{description}</td>
223 <td>{description}</td>
224 <td>{contact|obfuscate}</td>
224 <td>{contact|obfuscate}</td>
225 <td>{lastchange|age}</td>
225 <td class="age">{lastchange|date}</td>
226 <td class="indexlinks">{archives%indexarchiveentry}</td>
226 <td class="indexlinks">{archives%indexarchiveentry}</td>
227 <td>
227 <td>
228 <div class="rss_logo">
228 <div class="rss_logo">
229 <a href="{url}rss-log">RSS</a>
229 <a href="{url}rss-log">RSS</a>
230 <a href="{url}atom-log">Atom</a>
230 <a href="{url}atom-log">Atom</a>
231 </div>
231 </div>
232 </td>
232 </td>
233 </tr>\n'
233 </tr>\n'
234 indexarchiveentry = '<a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
234 indexarchiveentry = '<a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
235 index = index.tmpl
235 index = index.tmpl
236 urlparameter = '{separator}{name}={value|urlescape}'
236 urlparameter = '{separator}{name}={value|urlescape}'
237 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
237 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
238 graph = graph.tmpl
238 graph = graph.tmpl
@@ -1,75 +1,75 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short}</title>
2 <title>{repo|escape}: {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5 <div class="container">
5 <div class="container">
6 <div class="menu">
6 <div class="menu">
7 <div class="logo">
7 <div class="logo">
8 <a href="{logourl}">
8 <a href="{logourl}">
9 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
9 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 </div>
10 </div>
11 <ul>
11 <ul>
12 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
12 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
13 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
14 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
15 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li class="active">changeset</li>
19 <li class="active">changeset</li>
20 <li><a href="{url}raw-rev/{node|short}{sessionvars%urlparameter}">raw</a></li>
20 <li><a href="{url}raw-rev/{node|short}{sessionvars%urlparameter}">raw</a></li>
21 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">browse</a></li>
21 <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">browse</a></li>
22 </ul>
22 </ul>
23 <ul>
23 <ul>
24 {archives%archiveentry}
24 {archives%archiveentry}
25 </ul>
25 </ul>
26 <ul>
26 <ul>
27 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
27 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
28 </ul>
28 </ul>
29 </div>
29 </div>
30
30
31 <div class="main">
31 <div class="main">
32
32
33 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
33 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
34 <h3>changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag} {changesetbookmark}</h3>
34 <h3>changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag} {changesetbookmark}</h3>
35
35
36 <form class="search" action="{url}log">
36 <form class="search" action="{url}log">
37 {sessionvars%hiddenformentry}
37 {sessionvars%hiddenformentry}
38 <p><input name="rev" id="search1" type="text" size="30" /></p>
38 <p><input name="rev" id="search1" type="text" size="30" /></p>
39 <div id="hint">find changesets by author, revision,
39 <div id="hint">find changesets by author, revision,
40 files, or words in the commit message</div>
40 files, or words in the commit message</div>
41 </form>
41 </form>
42
42
43 <div class="description">{desc|strip|escape|nonempty}</div>
43 <div class="description">{desc|strip|escape|nonempty}</div>
44
44
45 <table id="changesetEntry">
45 <table id="changesetEntry">
46 <tr>
46 <tr>
47 <th class="author">author</th>
47 <th class="author">author</th>
48 <td class="author">{author|obfuscate}</td>
48 <td class="author">{author|obfuscate}</td>
49 </tr>
49 </tr>
50 <tr>
50 <tr>
51 <th class="date">date</th>
51 <th class="date">date</th>
52 <td class="date">{date|date} ({date|age})</td></tr>
52 <td class="date age">{date|date}</td></tr>
53 <tr>
53 <tr>
54 <th class="author">parents</th>
54 <th class="author">parents</th>
55 <td class="author">{parent%changesetparent}</td>
55 <td class="author">{parent%changesetparent}</td>
56 </tr>
56 </tr>
57 <tr>
57 <tr>
58 <th class="author">children</th>
58 <th class="author">children</th>
59 <td class="author">{child%changesetchild}</td>
59 <td class="author">{child%changesetchild}</td>
60 </tr>
60 </tr>
61 <tr>
61 <tr>
62 <th class="files">files</th>
62 <th class="files">files</th>
63 <td class="files">{files}</td>
63 <td class="files">{files}</td>
64 </tr>
64 </tr>
65 </table>
65 </table>
66
66
67 <div class="overflow">
67 <div class="overflow">
68 <div class="sourcefirst"> line diff</div>
68 <div class="sourcefirst"> line diff</div>
69
69
70 {diff}
70 {diff}
71 </div>
71 </div>
72
72
73 </div>
73 </div>
74 </div>
74 </div>
75 {footer}
75 {footer}
@@ -1,82 +1,82 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} annotate</title>
2 <title>{repo|escape}: {file|escape} annotate</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="{logourl}">
9 <a href="{logourl}">
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
18 </ul>
18 </ul>
19
19
20 <ul>
20 <ul>
21 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
21 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
22 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
22 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
23 </ul>
23 </ul>
24 <ul>
24 <ul>
25 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
25 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
26 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
26 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
27 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
27 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
28 <li class="active">annotate</li>
28 <li class="active">annotate</li>
29 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
29 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
30 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
30 <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
31 </ul>
31 </ul>
32 <ul>
32 <ul>
33 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
33 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
34 </ul>
34 </ul>
35 </div>
35 </div>
36
36
37 <div class="main">
37 <div class="main">
38 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
38 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
39 <h3>annotate {file|escape} @ {rev}:{node|short}</h3>
39 <h3>annotate {file|escape} @ {rev}:{node|short}</h3>
40
40
41 <form class="search" action="{url}log">
41 <form class="search" action="{url}log">
42 {sessionvars%hiddenformentry}
42 {sessionvars%hiddenformentry}
43 <p><input name="rev" id="search1" type="text" size="30" /></p>
43 <p><input name="rev" id="search1" type="text" size="30" /></p>
44 <div id="hint">find changesets by author, revision,
44 <div id="hint">find changesets by author, revision,
45 files, or words in the commit message</div>
45 files, or words in the commit message</div>
46 </form>
46 </form>
47
47
48 <div class="description">{desc|strip|escape|nonempty}</div>
48 <div class="description">{desc|strip|escape|nonempty}</div>
49
49
50 <table id="changesetEntry">
50 <table id="changesetEntry">
51 <tr>
51 <tr>
52 <th class="author">author</th>
52 <th class="author">author</th>
53 <td class="author">{author|obfuscate}</td>
53 <td class="author">{author|obfuscate}</td>
54 </tr>
54 </tr>
55 <tr>
55 <tr>
56 <th class="date">date</th>
56 <th class="date">date</th>
57 <td class="date">{date|date} ({date|age})</td>
57 <td class="date age">{date|date}</td>
58 </tr>
58 </tr>
59 <tr>
59 <tr>
60 <th class="author">parents</th>
60 <th class="author">parents</th>
61 <td class="author">{parent%filerevparent}</td>
61 <td class="author">{parent%filerevparent}</td>
62 </tr>
62 </tr>
63 <tr>
63 <tr>
64 <th class="author">children</th>
64 <th class="author">children</th>
65 <td class="author">{child%filerevchild}</td>
65 <td class="author">{child%filerevchild}</td>
66 </tr>
66 </tr>
67 {changesettag}
67 {changesettag}
68 </table>
68 </table>
69
69
70 <div class="overflow">
70 <div class="overflow">
71 <table class="bigtable">
71 <table class="bigtable">
72 <tr>
72 <tr>
73 <th class="annotate">rev</th>
73 <th class="annotate">rev</th>
74 <th class="line">&nbsp;&nbsp;line source</th>
74 <th class="line">&nbsp;&nbsp;line source</th>
75 </tr>
75 </tr>
76 {annotate%annotateline}
76 {annotate%annotateline}
77 </table>
77 </table>
78 </div>
78 </div>
79 </div>
79 </div>
80 </div>
80 </div>
81
81
82 {footer}
82 {footer}
@@ -1,77 +1,77 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} diff</title>
2 <title>{repo|escape}: {file|escape} diff</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="{logourl}">
9 <a href="{logourl}">
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
16 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
18 </ul>
18 </ul>
19 <ul>
19 <ul>
20 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
21 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
22 </ul>
22 </ul>
23 <ul>
23 <ul>
24 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
24 <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
25 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
26 <li class="active">diff</li>
26 <li class="active">diff</li>
27 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
27 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
28 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
29 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
29 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
30 </ul>
30 </ul>
31 <ul>
31 <ul>
32 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
32 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
33 </ul>
33 </ul>
34 </div>
34 </div>
35
35
36 <div class="main">
36 <div class="main">
37 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
37 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
38 <h3>diff {file|escape} @ {rev}:{node|short}</h3>
38 <h3>diff {file|escape} @ {rev}:{node|short}</h3>
39
39
40 <form class="search" action="{url}log">
40 <form class="search" action="{url}log">
41 <p>{sessionvars%hiddenformentry}</p>
41 <p>{sessionvars%hiddenformentry}</p>
42 <p><input name="rev" id="search1" type="text" size="30" /></p>
42 <p><input name="rev" id="search1" type="text" size="30" /></p>
43 <div id="hint">find changesets by author, revision,
43 <div id="hint">find changesets by author, revision,
44 files, or words in the commit message</div>
44 files, or words in the commit message</div>
45 </form>
45 </form>
46
46
47 <div class="description">{desc|strip|escape|nonempty}</div>
47 <div class="description">{desc|strip|escape|nonempty}</div>
48
48
49 <table id="changesetEntry">
49 <table id="changesetEntry">
50 <tr>
50 <tr>
51 <th>author</th>
51 <th>author</th>
52 <td>{author|obfuscate}</td>
52 <td>{author|obfuscate}</td>
53 </tr>
53 </tr>
54 <tr>
54 <tr>
55 <th>date</th>
55 <th>date</th>
56 <td>{date|date} ({date|age})</td>
56 <td class="date age">{date|date}</td>
57 </tr>
57 </tr>
58 <tr>
58 <tr>
59 <th>parents</th>
59 <th>parents</th>
60 <td>{parent%filerevparent}</td>
60 <td>{parent%filerevparent}</td>
61 </tr>
61 </tr>
62 <tr>
62 <tr>
63 <th>children</th>
63 <th>children</th>
64 <td>{child%filerevchild}</td>
64 <td>{child%filerevchild}</td>
65 </tr>
65 </tr>
66 {changesettag}
66 {changesettag}
67 </table>
67 </table>
68
68
69 <div class="overflow">
69 <div class="overflow">
70 <div class="sourcefirst"> line diff</div>
70 <div class="sourcefirst"> line diff</div>
71
71
72 {diff}
72 {diff}
73 </div>
73 </div>
74 </div>
74 </div>
75 </div>
75 </div>
76
76
77 {footer}
77 {footer}
@@ -1,5 +1,5 b''
1 <tr class="parity{parity}">
1 <tr class="parity{parity}">
2 <td class="age">{date|age}</td>
2 <td class="age">{date|date}</td>
3 <td class="author">{author|person}</td>
3 <td class="author">{author|person}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{rename%filelogrename}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{rename%filelogrename}</td>
5 </tr>
5 </tr>
@@ -1,76 +1,76 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {node|short} {file|escape}</title>
2 <title>{repo|escape}: {node|short} {file|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="container">
6 <div class="container">
7 <div class="menu">
7 <div class="menu">
8 <div class="logo">
8 <div class="logo">
9 <a href="{logourl}">
9 <a href="{logourl}">
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
10 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
11 </div>
11 </div>
12 <ul>
12 <ul>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
13 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
14 <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
15 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
16 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
17 </ul>
17 </ul>
18 <ul>
18 <ul>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
19 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
20 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
21 </ul>
21 </ul>
22 <ul>
22 <ul>
23 <li class="active">file</li>
23 <li class="active">file</li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
24 <li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
25 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
25 <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
26 <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
27 <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
28 <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
29 </ul>
29 </ul>
30 <ul>
30 <ul>
31 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
31 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
32 </ul>
32 </ul>
33 </div>
33 </div>
34
34
35 <div class="main">
35 <div class="main">
36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
36 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
37 <h3>view {file|escape} @ {rev}:{node|short}</h3>
37 <h3>view {file|escape} @ {rev}:{node|short}</h3>
38
38
39 <form class="search" action="{url}log">
39 <form class="search" action="{url}log">
40 {sessionvars%hiddenformentry}
40 {sessionvars%hiddenformentry}
41 <p><input name="rev" id="search1" type="text" size="30" /></p>
41 <p><input name="rev" id="search1" type="text" size="30" /></p>
42 <div id="hint">find changesets by author, revision,
42 <div id="hint">find changesets by author, revision,
43 files, or words in the commit message</div>
43 files, or words in the commit message</div>
44 </form>
44 </form>
45
45
46 <div class="description">{desc|strip|escape|nonempty}</div>
46 <div class="description">{desc|strip|escape|nonempty}</div>
47
47
48 <table id="changesetEntry">
48 <table id="changesetEntry">
49 <tr>
49 <tr>
50 <th class="author">author</th>
50 <th class="author">author</th>
51 <td class="author">{author|obfuscate}</td>
51 <td class="author">{author|obfuscate}</td>
52 </tr>
52 </tr>
53 <tr>
53 <tr>
54 <th class="date">date</th>
54 <th class="date">date</th>
55 <td class="date">{date|date} ({date|age})</td>
55 <td class="date age">{date|date}</td>
56 </tr>
56 </tr>
57 <tr>
57 <tr>
58 <th class="author">parents</th>
58 <th class="author">parents</th>
59 <td class="author">{parent%filerevparent}</td>
59 <td class="author">{parent%filerevparent}</td>
60 </tr>
60 </tr>
61 <tr>
61 <tr>
62 <th class="author">children</th>
62 <th class="author">children</th>
63 <td class="author">{child%filerevchild}</td>
63 <td class="author">{child%filerevchild}</td>
64 </tr>
64 </tr>
65 {changesettag}
65 {changesettag}
66 </table>
66 </table>
67
67
68 <div class="overflow">
68 <div class="overflow">
69 <div class="sourcefirst"> line source</div>
69 <div class="sourcefirst"> line source</div>
70 {text%fileline}
70 {text%fileline}
71 <div class="sourcelast"></div>
71 <div class="sourcelast"></div>
72 </div>
72 </div>
73 </div>
73 </div>
74 </div>
74 </div>
75
75
76 {footer}
76 {footer}
@@ -1,4 +1,5 b''
1 <script type="text/javascript">process_dates()</script>
1 {motd}
2 {motd}
2
3
3 </body>
4 </body>
4 </html>
5 </html>
@@ -1,142 +1,141 b''
1 {header}
1 {header}
2 <title>{repo|escape}: revision graph</title>
2 <title>{repo|escape}: revision 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}: log" />
4 href="{url}atom-log" title="Atom feed for {repo|escape}: log" />
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}: log" />
6 href="{url}rss-log" title="RSS feed for {repo|escape}: log" />
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="container">
11 <div class="container">
12 <div class="menu">
12 <div class="menu">
13 <div class="logo">
13 <div class="logo">
14 <a href="{logourl}">
14 <a href="{logourl}">
15 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
15 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
16 </div>
16 </div>
17 <ul>
17 <ul>
18 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
18 <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
19 <li class="active">graph</li>
19 <li class="active">graph</li>
20 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
20 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
21 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
21 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
22 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
22 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
23 </ul>
23 </ul>
24 <ul>
24 <ul>
25 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
25 <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
26 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
26 <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
27 </ul>
27 </ul>
28 <ul>
28 <ul>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
29 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
30 </ul>
30 </ul>
31 </div>
31 </div>
32
32
33 <div class="main">
33 <div class="main">
34 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
34 <h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
35 <h3>graph</h3>
35 <h3>graph</h3>
36
36
37 <form class="search" action="{url}log">
37 <form class="search" action="{url}log">
38 {sessionvars%hiddenformentry}
38 {sessionvars%hiddenformentry}
39 <p><input name="rev" id="search1" type="text" size="30" /></p>
39 <p><input name="rev" id="search1" type="text" size="30" /></p>
40 <div id="hint">find changesets by author, revision,
40 <div id="hint">find changesets by author, revision,
41 files, or words in the commit message</div>
41 files, or words in the commit message</div>
42 </form>
42 </form>
43
43
44 <div class="navigate">
44 <div class="navigate">
45 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
45 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
46 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
46 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
47 | rev {rev}: {changenav%navgraph}
47 | rev {rev}: {changenav%navgraph}
48 </div>
48 </div>
49
49
50 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
50 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
51
51
52 <div id="wrapper">
52 <div id="wrapper">
53 <ul id="nodebgs"></ul>
53 <ul id="nodebgs"></ul>
54 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
54 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
55 <ul id="graphnodes"></ul>
55 <ul id="graphnodes"></ul>
56 </div>
56 </div>
57
57
58 <script type="text/javascript" src="{staticurl}graph.js"></script>
59 <script type="text/javascript">
58 <script type="text/javascript">
60 <!-- hide script content
59 <!-- hide script content
61
60
62 var data = {jsdata|json};
61 var data = {jsdata|json};
63 var graph = new Graph();
62 var graph = new Graph();
64 graph.scale({bg_height});
63 graph.scale({bg_height});
65
64
66 graph.edge = function(x0, y0, x1, y1, color) \{
65 graph.edge = function(x0, y0, x1, y1, color) \{
67
66
68 this.setColor(color, 0.0, 0.65);
67 this.setColor(color, 0.0, 0.65);
69 this.ctx.beginPath();
68 this.ctx.beginPath();
70 this.ctx.moveTo(x0, y0);
69 this.ctx.moveTo(x0, y0);
71 this.ctx.lineTo(x1, y1);
70 this.ctx.lineTo(x1, y1);
72 this.ctx.stroke();
71 this.ctx.stroke();
73
72
74 }
73 }
75
74
76 var revlink = '<li style="_STYLE"><span class="desc">';
75 var revlink = '<li style="_STYLE"><span class="desc">';
77 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
76 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
78 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
77 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
79
78
80 graph.vertex = function(x, y, color, parity, cur) \{
79 graph.vertex = function(x, y, color, parity, cur) \{
81
80
82 this.ctx.beginPath();
81 this.ctx.beginPath();
83 color = this.setColor(color, 0.25, 0.75);
82 color = this.setColor(color, 0.25, 0.75);
84 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
83 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
85 this.ctx.fill();
84 this.ctx.fill();
86
85
87 var bg = '<li class="bg parity' + parity + '"></li>';
86 var bg = '<li class="bg parity' + parity + '"></li>';
88 var left = (this.columns + 1) * this.bg_height;
87 var left = (this.columns + 1) * this.bg_height;
89 var nstyle = 'padding-left: ' + left + 'px;';
88 var nstyle = 'padding-left: ' + left + 'px;';
90 var item = revlink.replace(/_STYLE/, nstyle);
89 var item = revlink.replace(/_STYLE/, nstyle);
91 item = item.replace(/_PARITY/, 'parity' + parity);
90 item = item.replace(/_PARITY/, 'parity' + parity);
92 item = item.replace(/_NODEID/, cur[0]);
91 item = item.replace(/_NODEID/, cur[0]);
93 item = item.replace(/_NODEID/, cur[0]);
92 item = item.replace(/_NODEID/, cur[0]);
94 item = item.replace(/_DESC/, cur[3]);
93 item = item.replace(/_DESC/, cur[3]);
95 item = item.replace(/_USER/, cur[4]);
94 item = item.replace(/_USER/, cur[4]);
96 item = item.replace(/_DATE/, cur[5]);
95 item = item.replace(/_DATE/, cur[5]);
97
96
98 var tagspan = '';
97 var tagspan = '';
99 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) \{
98 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) \{
100 tagspan = '<span class="logtags">';
99 tagspan = '<span class="logtags">';
101 if (cur[6][1]) \{
100 if (cur[6][1]) \{
102 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
101 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
103 tagspan += cur[6][0] + '</span> ';
102 tagspan += cur[6][0] + '</span> ';
104 } else if (!cur[6][1] && cur[6][0] != 'default') \{
103 } else if (!cur[6][1] && cur[6][0] != 'default') \{
105 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
104 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
106 tagspan += cur[6][0] + '</span> ';
105 tagspan += cur[6][0] + '</span> ';
107 }
106 }
108 if (cur[7].length) \{
107 if (cur[7].length) \{
109 for (var t in cur[7]) \{
108 for (var t in cur[7]) \{
110 var tag = cur[7][t];
109 var tag = cur[7][t];
111 tagspan += '<span class="tag">' + tag + '</span> ';
110 tagspan += '<span class="tag">' + tag + '</span> ';
112 }
111 }
113 }
112 }
114 if (cur[8].length) \{
113 if (cur[8].length) \{
115 for (var b in cur[8]) \{
114 for (var b in cur[8]) \{
116 var bookmark = cur[8][b];
115 var bookmark = cur[8][b];
117 tagspan += '<span class="tag">' + bookmark + '</span> ';
116 tagspan += '<span class="tag">' + bookmark + '</span> ';
118 }
117 }
119 }
118 }
120 tagspan += '</span>';
119 tagspan += '</span>';
121 }
120 }
122
121
123 item = item.replace(/_TAGS/, tagspan);
122 item = item.replace(/_TAGS/, tagspan);
124 return [bg, item];
123 return [bg, item];
125
124
126 }
125 }
127
126
128 graph.render(data);
127 graph.render(data);
129
128
130 // stop hiding script -->
129 // stop hiding script -->
131 </script>
130 </script>
132
131
133 <div class="navigate">
132 <div class="navigate">
134 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
133 <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
135 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
134 <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
136 | rev {rev}: {changenav%navgraph}
135 | rev {rev}: {changenav%navgraph}
137 </div>
136 </div>
138
137
139 </div>
138 </div>
140 </div>
139 </div>
141
140
142 {footer}
141 {footer}
@@ -1,6 +1,7 b''
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3 <head>
3 <head>
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
5 <meta name="robots" content="index, nofollow" />
5 <meta name="robots" content="index, nofollow" />
6 <link rel="stylesheet" href="{staticurl}style-paper.css" type="text/css" />
6 <link rel="stylesheet" href="{staticurl}style-paper.css" type="text/css" />
7 <script type="text/javascript" src="{staticurl}mercurial.js"></script>
@@ -1,211 +1,211 b''
1 default = 'shortlog'
1 default = 'shortlog'
2
2
3 mimetype = 'text/html; charset={encoding}'
3 mimetype = 'text/html; charset={encoding}'
4 header = header.tmpl
4 header = header.tmpl
5 footer = footer.tmpl
5 footer = footer.tmpl
6 search = search.tmpl
6 search = search.tmpl
7
7
8 changelog = shortlog.tmpl
8 changelog = shortlog.tmpl
9 shortlog = shortlog.tmpl
9 shortlog = shortlog.tmpl
10 shortlogentry = shortlogentry.tmpl
10 shortlogentry = shortlogentry.tmpl
11 graph = graph.tmpl
11 graph = graph.tmpl
12 help = help.tmpl
12 help = help.tmpl
13 helptopics = helptopics.tmpl
13 helptopics = helptopics.tmpl
14
14
15 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
15 helpentry = '<tr><td><a href="{url}help/{topic|escape}{sessionvars%urlparameter}">{topic|escape}</a></td><td>{summary|escape}</td></tr>'
16
16
17 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
17 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
18 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
19 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
20 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
20 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
21 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
21 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
22 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
22 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
23 filenolink = '{file|escape} '
23 filenolink = '{file|escape} '
24 fileellipses = '...'
24 fileellipses = '...'
25 changelogentry = shortlogentry.tmpl
25 changelogentry = shortlogentry.tmpl
26 searchentry = shortlogentry.tmpl
26 searchentry = shortlogentry.tmpl
27 changeset = changeset.tmpl
27 changeset = changeset.tmpl
28 manifest = manifest.tmpl
28 manifest = manifest.tmpl
29
29
30 nav = '{before%naventry} {after%naventry}'
30 nav = '{before%naventry} {after%naventry}'
31 navshort = '{before%navshortentry}{after%navshortentry}'
31 navshort = '{before%navshortentry}{after%navshortentry}'
32 navgraph = '{before%navgraphentry}{after%navgraphentry}'
32 navgraph = '{before%navgraphentry}{after%navgraphentry}'
33 filenav = '{before%filenaventry}{after%filenaventry}'
33 filenav = '{before%filenaventry}{after%filenaventry}'
34
34
35 direntry = '
35 direntry = '
36 <tr class="fileline parity{parity}">
36 <tr class="fileline parity{parity}">
37 <td class="name">
37 <td class="name">
38 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
38 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
39 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
39 <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
40 </a>
40 </a>
41 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
41 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
42 {emptydirs|escape}
42 {emptydirs|escape}
43 </a>
43 </a>
44 </td>
44 </td>
45 <td class="size"></td>
45 <td class="size"></td>
46 <td class="permissions">drwxr-xr-x</td>
46 <td class="permissions">drwxr-xr-x</td>
47 </tr>'
47 </tr>'
48
48
49 fileentry = '
49 fileentry = '
50 <tr class="fileline parity{parity}">
50 <tr class="fileline parity{parity}">
51 <td class="filename">
51 <td class="filename">
52 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
52 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
53 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
53 <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
54 </a>
54 </a>
55 </td>
55 </td>
56 <td class="size">{size}</td>
56 <td class="size">{size}</td>
57 <td class="permissions">{permissions|permissions}</td>
57 <td class="permissions">{permissions|permissions}</td>
58 </tr>'
58 </tr>'
59
59
60 filerevision = filerevision.tmpl
60 filerevision = filerevision.tmpl
61 fileannotate = fileannotate.tmpl
61 fileannotate = fileannotate.tmpl
62 filediff = filediff.tmpl
62 filediff = filediff.tmpl
63 filelog = filelog.tmpl
63 filelog = filelog.tmpl
64 fileline = '
64 fileline = '
65 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
65 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
66 filelogentry = filelogentry.tmpl
66 filelogentry = filelogentry.tmpl
67
67
68 annotateline = '
68 annotateline = '
69 <tr class="parity{parity}">
69 <tr class="parity{parity}">
70 <td class="annotate">
70 <td class="annotate">
71 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
71 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
72 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
72 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
73 </td>
73 </td>
74 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
74 <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
75 </tr>'
75 </tr>'
76
76
77 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
77 diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
78 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
78 difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
79 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
79 difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
80 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
80 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
81 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
81 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
82
82
83 changelogparent = '
83 changelogparent = '
84 <tr>
84 <tr>
85 <th class="parent">parent {rev}:</th>
85 <th class="parent">parent {rev}:</th>
86 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
86 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
87 </tr>'
87 </tr>'
88
88
89 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
89 changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
90
90
91 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
91 filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
92 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
92 filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
93
93
94 filerename = '{file|escape}@'
94 filerename = '{file|escape}@'
95 filelogrename = '
95 filelogrename = '
96 <span class="base">
96 <span class="base">
97 base
97 base
98 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
98 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
99 {file|escape}@{node|short}
99 {file|escape}@{node|short}
100 </a>
100 </a>
101 </span>'
101 </span>'
102 fileannotateparent = '
102 fileannotateparent = '
103 <tr>
103 <tr>
104 <td class="metatag">parent:</td>
104 <td class="metatag">parent:</td>
105 <td>
105 <td>
106 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
106 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
107 {rename%filerename}{node|short}
107 {rename%filerename}{node|short}
108 </a>
108 </a>
109 </td>
109 </td>
110 </tr>'
110 </tr>'
111 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
111 changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
112 changelogchild = '
112 changelogchild = '
113 <tr>
113 <tr>
114 <th class="child">child</th>
114 <th class="child">child</th>
115 <td class="child">
115 <td class="child">
116 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
116 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
117 {node|short}
117 {node|short}
118 </a>
118 </a>
119 </td>
119 </td>
120 </tr>'
120 </tr>'
121 fileannotatechild = '
121 fileannotatechild = '
122 <tr>
122 <tr>
123 <td class="metatag">child:</td>
123 <td class="metatag">child:</td>
124 <td>
124 <td>
125 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
125 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
126 {node|short}
126 {node|short}
127 </a>
127 </a>
128 </td>
128 </td>
129 </tr>'
129 </tr>'
130 tags = tags.tmpl
130 tags = tags.tmpl
131 tagentry = '
131 tagentry = '
132 <tr class="tagEntry parity{parity}">
132 <tr class="tagEntry parity{parity}">
133 <td>
133 <td>
134 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
134 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
135 {tag|escape}
135 {tag|escape}
136 </a>
136 </a>
137 </td>
137 </td>
138 <td class="node">
138 <td class="node">
139 {node|short}
139 {node|short}
140 </td>
140 </td>
141 </tr>'
141 </tr>'
142 bookmarks = bookmarks.tmpl
142 bookmarks = bookmarks.tmpl
143 bookmarkentry = '
143 bookmarkentry = '
144 <tr class="tagEntry parity{parity}">
144 <tr class="tagEntry parity{parity}">
145 <td>
145 <td>
146 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
146 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
147 {bookmark|escape}
147 {bookmark|escape}
148 </a>
148 </a>
149 </td>
149 </td>
150 <td class="node">
150 <td class="node">
151 {node|short}
151 {node|short}
152 </td>
152 </td>
153 </tr>'
153 </tr>'
154 branches = branches.tmpl
154 branches = branches.tmpl
155 branchentry = '
155 branchentry = '
156 <tr class="tagEntry parity{parity}">
156 <tr class="tagEntry parity{parity}">
157 <td>
157 <td>
158 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
158 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
159 {branch|escape}
159 {branch|escape}
160 </a>
160 </a>
161 </td>
161 </td>
162 <td class="node">
162 <td class="node">
163 {node|short}
163 {node|short}
164 </td>
164 </td>
165 </tr>'
165 </tr>'
166 changelogtag = '<span class="tag">{name|escape}</span> '
166 changelogtag = '<span class="tag">{name|escape}</span> '
167 changesettag = '<span class="tag">{tag|escape}</span> '
167 changesettag = '<span class="tag">{tag|escape}</span> '
168 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
168 changesetbookmark = '<span class="tag">{bookmark|escape}</span> '
169 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
169 changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
170 changelogbranchname = '<span class="branchname">{name|escape}</span> '
170 changelogbranchname = '<span class="branchname">{name|escape}</span> '
171
171
172 filediffparent = '
172 filediffparent = '
173 <tr>
173 <tr>
174 <th class="parent">parent {rev}:</th>
174 <th class="parent">parent {rev}:</th>
175 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
175 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
176 </tr>'
176 </tr>'
177 filelogparent = '
177 filelogparent = '
178 <tr>
178 <tr>
179 <th>parent {rev}:</th>
179 <th>parent {rev}:</th>
180 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
180 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
181 </tr>'
181 </tr>'
182 filediffchild = '
182 filediffchild = '
183 <tr>
183 <tr>
184 <th class="child">child {rev}:</th>
184 <th class="child">child {rev}:</th>
185 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
185 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
186 </td>
186 </td>
187 </tr>'
187 </tr>'
188 filelogchild = '
188 filelogchild = '
189 <tr>
189 <tr>
190 <th>child {rev}:</th>
190 <th>child {rev}:</th>
191 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
191 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
192 </tr>'
192 </tr>'
193
193
194 indexentry = '
194 indexentry = '
195 <tr class="parity{parity}">
195 <tr class="parity{parity}">
196 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
196 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
197 <td>{description}</td>
197 <td>{description}</td>
198 <td>{contact|obfuscate}</td>
198 <td>{contact|obfuscate}</td>
199 <td class="age">{lastchange|age}</td>
199 <td class="age">{lastchange|date}</td>
200 <td class="indexlinks">{archives%indexarchiveentry}</td>
200 <td class="indexlinks">{archives%indexarchiveentry}</td>
201 </tr>\n'
201 </tr>\n'
202 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
202 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
203 index = index.tmpl
203 index = index.tmpl
204 archiveentry = '
204 archiveentry = '
205 <li>
205 <li>
206 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
206 <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
207 </li>'
207 </li>'
208 notfound = notfound.tmpl
208 notfound = notfound.tmpl
209 error = error.tmpl
209 error = error.tmpl
210 urlparameter = '{separator}{name}={value|urlescape}'
210 urlparameter = '{separator}{name}={value|urlescape}'
211 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
211 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,5 +1,5 b''
1 <tr class="parity{parity}">
1 <tr class="parity{parity}">
2 <td class="age">{age(date)}</td>
2 <td class="age">{date|date}</td>
3 <td class="author">{author|person}</td>
3 <td class="author">{author|person}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags % '<span class="tag">{name|escape}</span> '}{bookmarks % '<span class="tag">{name|escape}</span> '}</td>
4 <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags % '<span class="tag">{name|escape}</span> '}{bookmarks % '<span class="tag">{name|escape}</span> '}</td>
5 </tr>
5 </tr>
@@ -1,25 +1,25 b''
1 <table class="logEntry parity{parity}">
1 <table class="logEntry parity{parity}">
2 <tr>
2 <tr>
3 <th class="age">{date|age}:</th>
3 <th><span class="age">{date|date}</span>:</th>
4 <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
4 <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
5 </tr>
5 </tr>
6 <tr>
6 <tr>
7 <th class="revision">changeset {rev}:</th>
7 <th class="revision">changeset {rev}:</th>
8 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
8 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
9 </tr>
9 </tr>
10 {parent%changelogparent}
10 {parent%changelogparent}
11 {child%changelogchild}
11 {child%changelogchild}
12 {changelogtag}
12 {changelogtag}
13 <tr>
13 <tr>
14 <th class="author">author:</th>
14 <th class="author">author:</th>
15 <td class="author">{author|obfuscate}</td>
15 <td class="author">{author|obfuscate}</td>
16 </tr>
16 </tr>
17 <tr>
17 <tr>
18 <th class="date">date:</th>
18 <th class="date">date:</th>
19 <td class="date">{date|date}</td>
19 <td class="date">{date|date}</td>
20 </tr>
20 </tr>
21 <tr>
21 <tr>
22 <th class="files"><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
22 <th class="files"><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
23 <td class="files">{files}</td>
23 <td class="files">{files}</td>
24 </tr>
24 </tr>
25 </table>
25 </table>
@@ -1,52 +1,52 b''
1 {header}
1 {header}
2 <title>{repo|escape}: changeset {node|short}</title>
2 <title>{repo|escape}: changeset {node|short}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
12 <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
13 <a href="{url}raw-rev/{node|short}">raw</a>
13 <a href="{url}raw-rev/{node|short}">raw</a>
14 {archives%archiveentry}
14 {archives%archiveentry}
15 <a href="{url}help{sessionvars%urlparameter}">help</a>
15 <a href="{url}help{sessionvars%urlparameter}">help</a>
16 </div>
16 </div>
17
17
18 <h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
18 <h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
19
19
20 <table id="changesetEntry">
20 <table id="changesetEntry">
21 <tr>
21 <tr>
22 <th class="changeset">changeset {rev}:</th>
22 <th class="changeset">changeset {rev}:</th>
23 <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
23 <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
24 </tr>
24 </tr>
25 {parent%changesetparent}
25 {parent%changesetparent}
26 {child%changesetchild}
26 {child%changesetchild}
27 {changesettag}
27 {changesettag}
28 <tr>
28 <tr>
29 <th class="author">author:</th>
29 <th class="author">author:</th>
30 <td class="author">{author|obfuscate}</td>
30 <td class="author">{author|obfuscate}</td>
31 </tr>
31 </tr>
32 <tr>
32 <tr>
33 <th class="date">date:</th>
33 <th class="date">date:</th>
34 <td class="date">{date|date} ({date|age})</td>
34 <td class="date age">{date|date}</td>
35 </tr>
35 </tr>
36 <tr>
36 <tr>
37 <th class="files">files:</th>
37 <th class="files">files:</th>
38 <td class="files">{files}</td>
38 <td class="files">{files}</td>
39 </tr>
39 </tr>
40 <tr>
40 <tr>
41 <th class="description">description:</th>
41 <th class="description">description:</th>
42 <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
42 <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
43 </tr>
43 </tr>
44 </table>
44 </table>
45
45
46 <div id="changesetDiff">
46 <div id="changesetDiff">
47 {diff}
47 {diff}
48 </div>
48 </div>
49
49
50 {footer}
50 {footer}
51
51
52
52
@@ -1,49 +1,49 b''
1 {header}
1 {header}
2 <title>{repo|escape}: {file|escape} annotate</title>
2 <title>{repo|escape}: {file|escape} annotate</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
14 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
15 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
16 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
16 <a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 </div>
18 </div>
19
19
20 <h2>Annotate {file|escape}</h2>
20 <h2>Annotate {file|escape}</h2>
21
21
22 <table>
22 <table>
23 <tr>
23 <tr>
24 <td class="metatag">changeset {rev}:</td>
24 <td class="metatag">changeset {rev}:</td>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
26 {parent%fileannotateparent}
26 {parent%fileannotateparent}
27 {child%fileannotatechild}
27 {child%fileannotatechild}
28 <tr>
28 <tr>
29 <td class="metatag">author:</td>
29 <td class="metatag">author:</td>
30 <td>{author|obfuscate}</td></tr>
30 <td>{author|obfuscate}</td></tr>
31 <tr>
31 <tr>
32 <td class="metatag">date:</td>
32 <td class="metatag">date:</td>
33 <td>{date|date} ({date|age})</td>
33 <td class="date age">{date|date}</td>
34 </tr>
34 </tr>
35 <tr>
35 <tr>
36 <td class="metatag">permissions:</td>
36 <td class="metatag">permissions:</td>
37 <td>{permissions|permissions}</td>
37 <td>{permissions|permissions}</td>
38 </tr>
38 </tr>
39 <tr>
39 <tr>
40 <td class="metatag">description:</td>
40 <td class="metatag">description:</td>
41 <td>{desc|strip|escape|addbreaks|nonempty}</td>
41 <td>{desc|strip|escape|addbreaks|nonempty}</td>
42 </tr>
42 </tr>
43 </table>
43 </table>
44
44
45 <table cellspacing="0" cellpadding="0">
45 <table cellspacing="0" cellpadding="0">
46 {annotate%annotateline}
46 {annotate%annotateline}
47 </table>
47 </table>
48
48
49 {footer}
49 {footer}
@@ -1,25 +1,25 b''
1 <table class="logEntry parity{parity}">
1 <table class="logEntry parity{parity}">
2 <tr>
2 <tr>
3 <th class="age">{date|age}:</th>
3 <th><span class="age">{date|date}</span>:</th>
4 <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
4 <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
5 </tr>
5 </tr>
6 <tr>
6 <tr>
7 <th class="revision">revision {filerev}:</td>
7 <th class="revision">revision {filerev}:</td>
8 <td class="node">
8 <td class="node">
9 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
9 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
10 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(diff)</a>
10 <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(diff)</a>
11 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(annotate)</a>
11 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(annotate)</a>
12 </td>
12 </td>
13 </tr>
13 </tr>
14 {rename%filelogrename}
14 {rename%filelogrename}
15 <tr>
15 <tr>
16 <th class="author">author:</th>
16 <th class="author">author:</th>
17 <td class="author">{author|obfuscate}</td>
17 <td class="author">{author|obfuscate}</td>
18 </tr>
18 </tr>
19 <tr>
19 <tr>
20 <th class="date">date:</th>
20 <th class="date">date:</th>
21 <td class="date">{date|date}</td>
21 <td class="date">{date|date}</td>
22 </tr>
22 </tr>
23 </table>
23 </table>
24
24
25
25
@@ -1,47 +1,47 b''
1 {header}
1 {header}
2 <title>{repo|escape}:{file|escape}</title>
2 <title>{repo|escape}:{file|escape}</title>
3 </head>
3 </head>
4 <body>
4 <body>
5
5
6 <div class="buttons">
6 <div class="buttons">
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
7 <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
8 <a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
9 <a href="{url}graph{sessionvars%urlparameter}">graph</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
10 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
11 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
12 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
13 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
14 <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
15 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
16 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
16 <a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 </div>
18 </div>
19
19
20 <h2>{file|escape}</h2>
20 <h2>{file|escape}</h2>
21
21
22 <table>
22 <table>
23 <tr>
23 <tr>
24 <td class="metatag">changeset {rev}:</td>
24 <td class="metatag">changeset {rev}:</td>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
25 <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
26 {parent%filerevparent}
26 {parent%filerevparent}
27 {child%filerevchild}
27 {child%filerevchild}
28 <tr>
28 <tr>
29 <td class="metatag">author:</td>
29 <td class="metatag">author:</td>
30 <td>{author|obfuscate}</td></tr>
30 <td>{author|obfuscate}</td></tr>
31 <tr>
31 <tr>
32 <td class="metatag">date:</td>
32 <td class="metatag">date:</td>
33 <td>{date|date} ({date|age})</td></tr>
33 <td class="date age">{date|date}</td></tr>
34 <tr>
34 <tr>
35 <td class="metatag">permissions:</td>
35 <td class="metatag">permissions:</td>
36 <td>{permissions|permissions}</td></tr>
36 <td>{permissions|permissions}</td></tr>
37 <tr>
37 <tr>
38 <td class="metatag">description:</td>
38 <td class="metatag">description:</td>
39 <td>{desc|strip|escape|addbreaks|nonempty}</td>
39 <td>{desc|strip|escape|addbreaks|nonempty}</td>
40 </tr>
40 </tr>
41 </table>
41 </table>
42
42
43 <pre>
43 <pre>
44 {text%fileline}
44 {text%fileline}
45 </pre>
45 </pre>
46
46
47 {footer}
47 {footer}
@@ -1,8 +1,9 b''
1 <script type="text/javascript">process_dates()</script>
1 {motd}
2 {motd}
2 <div class="logo">
3 <div class="logo">
3 <a href="{logourl}">
4 <a href="{logourl}">
4 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
5 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
5 </div>
6 </div>
6
7
7 </body>
8 </body>
8 </html>
9 </html>
@@ -1,97 +1,96 b''
1 {header}
1 {header}
2 <title>{repo|escape}: graph</title>
2 <title>{repo|escape}: graph</title>
3 <link rel="alternate" type="application/atom+xml"
3 <link rel="alternate" type="application/atom+xml"
4 href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
4 href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
5 <link rel="alternate" type="application/rss+xml"
5 <link rel="alternate" type="application/rss+xml"
6 href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
6 href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
7 <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
7 <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
8 </head>
8 </head>
9 <body>
9 <body>
10
10
11 <div class="buttons">
11 <div class="buttons">
12 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
12 <a href="{url}log{sessionvars%urlparameter}">changelog</a>
13 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
13 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
14 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
14 <a href="{url}tags{sessionvars%urlparameter}">tags</a>
15 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
15 <a href="{url}branches{sessionvars%urlparameter}">branches</a>
16 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
16 <a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
17 <a href="{url}help{sessionvars%urlparameter}">help</a>
18 </div>
18 </div>
19
19
20 <h2>graph</h2>
20 <h2>graph</h2>
21
21
22 <form action="{url}log">
22 <form action="{url}log">
23 {sessionvars%hiddenformentry}
23 {sessionvars%hiddenformentry}
24 <p>
24 <p>
25 <label for="search1">search:</label>
25 <label for="search1">search:</label>
26 <input name="rev" id="search1" type="text" size="30">
26 <input name="rev" id="search1" type="text" size="30">
27 navigate: <small class="navigate">{changenav%navgraph}</small>
27 navigate: <small class="navigate">{changenav%navgraph}</small>
28 </p>
28 </p>
29 </form>
29 </form>
30
30
31 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
31 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
32
32
33 <div id="wrapper">
33 <div id="wrapper">
34 <ul id="nodebgs"></ul>
34 <ul id="nodebgs"></ul>
35 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
35 <canvas id="graph" width="480" height="{canvasheight}"></canvas>
36 <ul id="graphnodes"></ul>
36 <ul id="graphnodes"></ul>
37 </div>
37 </div>
38
38
39 <script type="text/javascript" src="{staticurl}graph.js"></script>
40 <script type="text/javascript">
39 <script type="text/javascript">
41 <!-- hide script content
40 <!-- hide script content
42
41
43 var data = {jsdata|json};
42 var data = {jsdata|json};
44 var graph = new Graph();
43 var graph = new Graph();
45 graph.scale({bg_height});
44 graph.scale({bg_height});
46
45
47 graph.edge = function(x0, y0, x1, y1, color) \{
46 graph.edge = function(x0, y0, x1, y1, color) \{
48
47
49 this.setColor(color, 0.0, 0.65);
48 this.setColor(color, 0.0, 0.65);
50 this.ctx.beginPath();
49 this.ctx.beginPath();
51 this.ctx.moveTo(x0, y0);
50 this.ctx.moveTo(x0, y0);
52 this.ctx.lineTo(x1, y1);
51 this.ctx.lineTo(x1, y1);
53 this.ctx.stroke();
52 this.ctx.stroke();
54
53
55 }
54 }
56
55
57 var revlink = '<li style="_STYLE"><span class="desc">';
56 var revlink = '<li style="_STYLE"><span class="desc">';
58 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
57 revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
59 revlink += '</span><span class="info">_DATE, by _USER</span></li>';
58 revlink += '</span><span class="info">_DATE, by _USER</span></li>';
60
59
61 graph.vertex = function(x, y, color, parity, cur) \{
60 graph.vertex = function(x, y, color, parity, cur) \{
62
61
63 this.ctx.beginPath();
62 this.ctx.beginPath();
64 color = this.setColor(color, 0.25, 0.75);
63 color = this.setColor(color, 0.25, 0.75);
65 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
64 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
66 this.ctx.fill();
65 this.ctx.fill();
67
66
68 var bg = '<li class="bg parity' + parity + '"></li>';
67 var bg = '<li class="bg parity' + parity + '"></li>';
69 var left = (this.columns + 1) * this.bg_height;
68 var left = (this.columns + 1) * this.bg_height;
70 var nstyle = 'padding-left: ' + left + 'px;';
69 var nstyle = 'padding-left: ' + left + 'px;';
71 var item = revlink.replace(/_STYLE/, nstyle);
70 var item = revlink.replace(/_STYLE/, nstyle);
72 item = item.replace(/_PARITY/, 'parity' + parity);
71 item = item.replace(/_PARITY/, 'parity' + parity);
73 item = item.replace(/_NODEID/, cur[0]);
72 item = item.replace(/_NODEID/, cur[0]);
74 item = item.replace(/_NODEID/, cur[0]);
73 item = item.replace(/_NODEID/, cur[0]);
75 item = item.replace(/_DESC/, cur[3]);
74 item = item.replace(/_DESC/, cur[3]);
76 item = item.replace(/_USER/, cur[4]);
75 item = item.replace(/_USER/, cur[4]);
77 item = item.replace(/_DATE/, cur[5]);
76 item = item.replace(/_DATE/, cur[5]);
78
77
79 return [bg, item];
78 return [bg, item];
80
79
81 }
80 }
82
81
83 graph.render(data);
82 graph.render(data);
84
83
85 // stop hiding script -->
84 // stop hiding script -->
86 </script>
85 </script>
87
86
88 <form action="{url}log">
87 <form action="{url}log">
89 {sessionvars%hiddenformentry}
88 {sessionvars%hiddenformentry}
90 <p>
89 <p>
91 <label for="search1">search:</label>
90 <label for="search1">search:</label>
92 <input name="rev" id="search1" type="text" size="30">
91 <input name="rev" id="search1" type="text" size="30">
93 navigate: <small class="navigate">{changenav%navgraph}</small>
92 navigate: <small class="navigate">{changenav%navgraph}</small>
94 </p>
93 </p>
95 </form>
94 </form>
96
95
97 {footer}
96 {footer}
@@ -1,6 +1,7 b''
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
2 <html>
3 <head>
3 <head>
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png">
4 <link rel="icon" href="{staticurl}hgicon.png" type="image/png">
5 <meta name="robots" content="index, nofollow" />
5 <meta name="robots" content="index, nofollow" />
6 <link rel="stylesheet" href="{staticurl}style.css" type="text/css" />
6 <link rel="stylesheet" href="{staticurl}style.css" type="text/css" />
7 <script type="text/javascript" src="{staticurl}mercurial.js"></script>
@@ -1,183 +1,183 b''
1 default = 'shortlog'
1 default = 'shortlog'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 shortlog = shortlog.tmpl
7 shortlog = shortlog.tmpl
8 shortlogentry = shortlogentry.tmpl
8 shortlogentry = shortlogentry.tmpl
9 graph = graph.tmpl
9 graph = graph.tmpl
10 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
10 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
11 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
12 navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
13 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
13 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
14 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
14 filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
15 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
16 filenolink = '{file|escape} '
16 filenolink = '{file|escape} '
17 fileellipses = '...'
17 fileellipses = '...'
18 changelogentry = changelogentry.tmpl
18 changelogentry = changelogentry.tmpl
19 searchentry = changelogentry.tmpl
19 searchentry = changelogentry.tmpl
20 changeset = changeset.tmpl
20 changeset = changeset.tmpl
21 manifest = manifest.tmpl
21 manifest = manifest.tmpl
22
22
23 nav = '{before%naventry} {after%naventry}'
23 nav = '{before%naventry} {after%naventry}'
24 navshort = '{before%navshortentry}{after%navshortentry}'
24 navshort = '{before%navshortentry}{after%navshortentry}'
25 navgraph = '{before%navgraphentry}{after%navgraphentry}'
25 navgraph = '{before%navgraphentry}{after%navgraphentry}'
26 filenav = '{before%filenaventry}{after%filenaventry}'
26 filenav = '{before%filenaventry}{after%filenaventry}'
27
27
28 direntry = '
28 direntry = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><tt>drwxr-xr-x</tt>&nbsp;
30 <td><tt>drwxr-xr-x</tt>&nbsp;
31 <td>&nbsp;
31 <td>&nbsp;
32 <td>&nbsp;
32 <td>&nbsp;
33 <td>
33 <td>
34 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
34 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
35 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
35 <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
36 {emptydirs|urlescape}
36 {emptydirs|urlescape}
37 </a>'
37 </a>'
38
38
39 fileentry = '
39 fileentry = '
40 <tr class="parity{parity}">
40 <tr class="parity{parity}">
41 <td><tt>{permissions|permissions}</tt>&nbsp;
41 <td><tt>{permissions|permissions}</tt>&nbsp;
42 <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
42 <td align=right><tt class="date">{date|isodate}</tt>&nbsp;
43 <td align=right><tt>{size}</tt>&nbsp;
43 <td align=right><tt>{size}</tt>&nbsp;
44 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
44 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
45
45
46 filerevision = filerevision.tmpl
46 filerevision = filerevision.tmpl
47 fileannotate = fileannotate.tmpl
47 fileannotate = fileannotate.tmpl
48 filediff = filediff.tmpl
48 filediff = filediff.tmpl
49 filelog = filelog.tmpl
49 filelog = filelog.tmpl
50 fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
50 fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>&nbsp;{line|escape}</div>'
51 filelogentry = filelogentry.tmpl
51 filelogentry = filelogentry.tmpl
52
52
53 # The &nbsp; ensures that all table cells have content (even if there
53 # The &nbsp; ensures that all table cells have content (even if there
54 # is an empty line in the annotated file), which in turn ensures that
54 # is an empty line in the annotated file), which in turn ensures that
55 # all table rows have equal height.
55 # all table rows have equal height.
56 annotateline = '
56 annotateline = '
57 <tr class="parity{parity}">
57 <tr class="parity{parity}">
58 <td class="annotate">
58 <td class="annotate">
59 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
59 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
60 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
60 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
61 </td>
61 </td>
62 <td>
62 <td>
63 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
63 <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
64 </td>
64 </td>
65 <td><pre>&nbsp;{line|escape}</pre></td>
65 <td><pre>&nbsp;{line|escape}</pre></td>
66 </tr>'
66 </tr>'
67 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
67 difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
68 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
68 difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
69 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
69 difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
70 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
70 diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
71 changelogparent = '
71 changelogparent = '
72 <tr>
72 <tr>
73 <th class="parent">parent {rev}:</th>
73 <th class="parent">parent {rev}:</th>
74 <td class="parent">
74 <td class="parent">
75 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
75 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
76 </td>
76 </td>
77 </tr>'
77 </tr>'
78 changesetparent = '
78 changesetparent = '
79 <tr>
79 <tr>
80 <th class="parent">parent {rev}:</th>
80 <th class="parent">parent {rev}:</th>
81 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
81 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
82 </tr>'
82 </tr>'
83 filerevparent = '
83 filerevparent = '
84 <tr>
84 <tr>
85 <td class="metatag">parent:</td>
85 <td class="metatag">parent:</td>
86 <td>
86 <td>
87 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
87 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
88 {rename%filerename}{node|short}
88 {rename%filerename}{node|short}
89 </a>
89 </a>
90 </td>
90 </td>
91 </tr>'
91 </tr>'
92 filerename = '{file|escape}@'
92 filerename = '{file|escape}@'
93 filelogrename = '
93 filelogrename = '
94 <tr>
94 <tr>
95 <th>base:</th>
95 <th>base:</th>
96 <td>
96 <td>
97 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
97 <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
98 {file|escape}@{node|short}
98 {file|escape}@{node|short}
99 </a>
99 </a>
100 </td>
100 </td>
101 </tr>'
101 </tr>'
102 fileannotateparent = '
102 fileannotateparent = '
103 <tr>
103 <tr>
104 <td class="metatag">parent:</td>
104 <td class="metatag">parent:</td>
105 <td>
105 <td>
106 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
106 <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
107 {rename%filerename}{node|short}
107 {rename%filerename}{node|short}
108 </a>
108 </a>
109 </td>
109 </td>
110 </tr>'
110 </tr>'
111 changesetchild = '
111 changesetchild = '
112 <tr>
112 <tr>
113 <th class="child">child {rev}:</th>
113 <th class="child">child {rev}:</th>
114 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
114 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
115 </tr>'
115 </tr>'
116 changelogchild = '
116 changelogchild = '
117 <tr>
117 <tr>
118 <th class="child">child {rev}:</th>
118 <th class="child">child {rev}:</th>
119 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
119 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
120 </tr>'
120 </tr>'
121 filerevchild = '
121 filerevchild = '
122 <tr>
122 <tr>
123 <td class="metatag">child:</td>
123 <td class="metatag">child:</td>
124 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
124 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
125 </tr>'
125 </tr>'
126 fileannotatechild = '
126 fileannotatechild = '
127 <tr>
127 <tr>
128 <td class="metatag">child:</td>
128 <td class="metatag">child:</td>
129 <td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
129 <td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
130 </tr>'
130 </tr>'
131 tags = tags.tmpl
131 tags = tags.tmpl
132 tagentry = '
132 tagentry = '
133 <li class="tagEntry parity{parity}">
133 <li class="tagEntry parity{parity}">
134 <tt class="node">{node}</tt>
134 <tt class="node">{node}</tt>
135 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
135 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
136 </li>'
136 </li>'
137 branches = branches.tmpl
137 branches = branches.tmpl
138 branchentry = '
138 branchentry = '
139 <li class="tagEntry parity{parity}">
139 <li class="tagEntry parity{parity}">
140 <tt class="node">{node}</tt>
140 <tt class="node">{node}</tt>
141 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
141 <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
142 </li>'
142 </li>'
143 diffblock = '<pre class="parity{parity}">{lines}</pre>'
143 diffblock = '<pre class="parity{parity}">{lines}</pre>'
144 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
144 changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
145 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
145 changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
146 filediffparent = '
146 filediffparent = '
147 <tr>
147 <tr>
148 <th class="parent">parent {rev}:</th>
148 <th class="parent">parent {rev}:</th>
149 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
149 <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
150 </tr>'
150 </tr>'
151 filelogparent = '
151 filelogparent = '
152 <tr>
152 <tr>
153 <th>parent {rev}:</th>
153 <th>parent {rev}:</th>
154 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
154 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
155 </tr>'
155 </tr>'
156 filediffchild = '
156 filediffchild = '
157 <tr>
157 <tr>
158 <th class="child">child {rev}:</th>
158 <th class="child">child {rev}:</th>
159 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
159 <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
160 </tr>'
160 </tr>'
161 filelogchild = '
161 filelogchild = '
162 <tr>
162 <tr>
163 <th>child {rev}:</th>
163 <th>child {rev}:</th>
164 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
164 <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
165 </tr>'
165 </tr>'
166 indexentry = '
166 indexentry = '
167 <tr class="parity{parity}">
167 <tr class="parity{parity}">
168 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
168 <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
169 <td>{description}</td>
169 <td>{description}</td>
170 <td>{contact|obfuscate}</td>
170 <td>{contact|obfuscate}</td>
171 <td class="age">{lastchange|age}</td>
171 <td class="age">{lastchange|date}</td>
172 <td class="indexlinks">
172 <td class="indexlinks">
173 <a href="{url}rss-log">RSS</a>
173 <a href="{url}rss-log">RSS</a>
174 <a href="{url}atom-log">Atom</a>
174 <a href="{url}atom-log">Atom</a>
175 {archives%archiveentry}
175 {archives%archiveentry}
176 </td>
176 </td>
177 </tr>'
177 </tr>'
178 index = index.tmpl
178 index = index.tmpl
179 archiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
179 archiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
180 notfound = notfound.tmpl
180 notfound = notfound.tmpl
181 error = error.tmpl
181 error = error.tmpl
182 urlparameter = '{separator}{name}={value|urlescape}'
182 urlparameter = '{separator}{name}={value|urlescape}'
183 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
183 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
@@ -1,7 +1,7 b''
1 <table class="slogEntry parity{parity}">
1 <table class="slogEntry parity{parity}">
2 <tr>
2 <tr>
3 <td class="age">{date|age}</td>
3 <td class="age">{date|date}</td>
4 <td class="author">{author|person}</td>
4 <td class="author">{author|person}</td>
5 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
5 <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
6 </tr>
6 </tr>
7 </table>
7 </table>
@@ -1,1119 +1,1128 b''
1 An attempt at more fully testing the hgweb web interface.
1 An attempt at more fully testing the hgweb web interface.
2 The following things are tested elsewhere and are therefore omitted:
2 The following things are tested elsewhere and are therefore omitted:
3 - archive, tested in test-archive
3 - archive, tested in test-archive
4 - unbundle, tested in test-push-http
4 - unbundle, tested in test-push-http
5 - changegroupsubset, tested in test-pull
5 - changegroupsubset, tested in test-pull
6
6
7 Set up the repo
7 Set up the repo
8
8
9 $ hg init test
9 $ hg init test
10 $ cd test
10 $ cd test
11 $ mkdir da
11 $ mkdir da
12 $ echo foo > da/foo
12 $ echo foo > da/foo
13 $ echo foo > foo
13 $ echo foo > foo
14 $ hg ci -Ambase
14 $ hg ci -Ambase
15 adding da/foo
15 adding da/foo
16 adding foo
16 adding foo
17 $ hg tag 1.0
17 $ hg tag 1.0
18 $ hg bookmark something
18 $ hg bookmark something
19 $ hg bookmark -r0 anotherthing
19 $ hg bookmark -r0 anotherthing
20 $ echo another > foo
20 $ echo another > foo
21 $ hg branch stable
21 $ hg branch stable
22 marked working directory as branch stable
22 marked working directory as branch stable
23 $ hg ci -Ambranch
23 $ hg ci -Ambranch
24 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
24 $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
25 $ cat hg.pid >> $DAEMON_PIDS
25 $ cat hg.pid >> $DAEMON_PIDS
26
26
27 Logs and changes
27 Logs and changes
28
28
29 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
29 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom'
30 200 Script output follows
30 200 Script output follows
31
31
32 <?xml version="1.0" encoding="ascii"?>
32 <?xml version="1.0" encoding="ascii"?>
33 <feed xmlns="http://www.w3.org/2005/Atom">
33 <feed xmlns="http://www.w3.org/2005/Atom">
34 <!-- Changelog -->
34 <!-- Changelog -->
35 <id>http://*:$HGPORT/</id> (glob)
35 <id>http://*:$HGPORT/</id> (glob)
36 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
36 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
37 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
37 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
38 <title>test Changelog</title>
38 <title>test Changelog</title>
39 <updated>1970-01-01T00:00:00+00:00</updated>
39 <updated>1970-01-01T00:00:00+00:00</updated>
40
40
41 <entry>
41 <entry>
42 <title>branch</title>
42 <title>branch</title>
43 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
43 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
44 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
44 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
45 <author>
45 <author>
46 <name>test</name>
46 <name>test</name>
47 <email>&#116;&#101;&#115;&#116;</email>
47 <email>&#116;&#101;&#115;&#116;</email>
48 </author>
48 </author>
49 <updated>1970-01-01T00:00:00+00:00</updated>
49 <updated>1970-01-01T00:00:00+00:00</updated>
50 <published>1970-01-01T00:00:00+00:00</published>
50 <published>1970-01-01T00:00:00+00:00</published>
51 <content type="xhtml">
51 <content type="xhtml">
52 <div xmlns="http://www.w3.org/1999/xhtml">
52 <div xmlns="http://www.w3.org/1999/xhtml">
53 <pre xml:space="preserve">branch</pre>
53 <pre xml:space="preserve">branch</pre>
54 </div>
54 </div>
55 </content>
55 </content>
56 </entry>
56 </entry>
57 <entry>
57 <entry>
58 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
58 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
59 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
59 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
60 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
60 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
61 <author>
61 <author>
62 <name>test</name>
62 <name>test</name>
63 <email>&#116;&#101;&#115;&#116;</email>
63 <email>&#116;&#101;&#115;&#116;</email>
64 </author>
64 </author>
65 <updated>1970-01-01T00:00:00+00:00</updated>
65 <updated>1970-01-01T00:00:00+00:00</updated>
66 <published>1970-01-01T00:00:00+00:00</published>
66 <published>1970-01-01T00:00:00+00:00</published>
67 <content type="xhtml">
67 <content type="xhtml">
68 <div xmlns="http://www.w3.org/1999/xhtml">
68 <div xmlns="http://www.w3.org/1999/xhtml">
69 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
69 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
70 </div>
70 </div>
71 </content>
71 </content>
72 </entry>
72 </entry>
73 <entry>
73 <entry>
74 <title>base</title>
74 <title>base</title>
75 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
75 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
76 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
76 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
77 <author>
77 <author>
78 <name>test</name>
78 <name>test</name>
79 <email>&#116;&#101;&#115;&#116;</email>
79 <email>&#116;&#101;&#115;&#116;</email>
80 </author>
80 </author>
81 <updated>1970-01-01T00:00:00+00:00</updated>
81 <updated>1970-01-01T00:00:00+00:00</updated>
82 <published>1970-01-01T00:00:00+00:00</published>
82 <published>1970-01-01T00:00:00+00:00</published>
83 <content type="xhtml">
83 <content type="xhtml">
84 <div xmlns="http://www.w3.org/1999/xhtml">
84 <div xmlns="http://www.w3.org/1999/xhtml">
85 <pre xml:space="preserve">base</pre>
85 <pre xml:space="preserve">base</pre>
86 </div>
86 </div>
87 </content>
87 </content>
88 </entry>
88 </entry>
89
89
90 </feed>
90 </feed>
91 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
91 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom'
92 200 Script output follows
92 200 Script output follows
93
93
94 <?xml version="1.0" encoding="ascii"?>
94 <?xml version="1.0" encoding="ascii"?>
95 <feed xmlns="http://www.w3.org/2005/Atom">
95 <feed xmlns="http://www.w3.org/2005/Atom">
96 <!-- Changelog -->
96 <!-- Changelog -->
97 <id>http://*:$HGPORT/</id> (glob)
97 <id>http://*:$HGPORT/</id> (glob)
98 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
98 <link rel="self" href="http://*:$HGPORT/atom-log"/> (glob)
99 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
99 <link rel="alternate" href="http://*:$HGPORT/"/> (glob)
100 <title>test Changelog</title>
100 <title>test Changelog</title>
101 <updated>1970-01-01T00:00:00+00:00</updated>
101 <updated>1970-01-01T00:00:00+00:00</updated>
102
102
103 <entry>
103 <entry>
104 <title>branch</title>
104 <title>branch</title>
105 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
105 <id>http://*:$HGPORT/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id> (glob)
106 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
106 <link href="http://*:$HGPORT/rev/1d22e65f027e"/> (glob)
107 <author>
107 <author>
108 <name>test</name>
108 <name>test</name>
109 <email>&#116;&#101;&#115;&#116;</email>
109 <email>&#116;&#101;&#115;&#116;</email>
110 </author>
110 </author>
111 <updated>1970-01-01T00:00:00+00:00</updated>
111 <updated>1970-01-01T00:00:00+00:00</updated>
112 <published>1970-01-01T00:00:00+00:00</published>
112 <published>1970-01-01T00:00:00+00:00</published>
113 <content type="xhtml">
113 <content type="xhtml">
114 <div xmlns="http://www.w3.org/1999/xhtml">
114 <div xmlns="http://www.w3.org/1999/xhtml">
115 <pre xml:space="preserve">branch</pre>
115 <pre xml:space="preserve">branch</pre>
116 </div>
116 </div>
117 </content>
117 </content>
118 </entry>
118 </entry>
119 <entry>
119 <entry>
120 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
120 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
121 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
121 <id>http://*:$HGPORT/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id> (glob)
122 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
122 <link href="http://*:$HGPORT/rev/a4f92ed23982"/> (glob)
123 <author>
123 <author>
124 <name>test</name>
124 <name>test</name>
125 <email>&#116;&#101;&#115;&#116;</email>
125 <email>&#116;&#101;&#115;&#116;</email>
126 </author>
126 </author>
127 <updated>1970-01-01T00:00:00+00:00</updated>
127 <updated>1970-01-01T00:00:00+00:00</updated>
128 <published>1970-01-01T00:00:00+00:00</published>
128 <published>1970-01-01T00:00:00+00:00</published>
129 <content type="xhtml">
129 <content type="xhtml">
130 <div xmlns="http://www.w3.org/1999/xhtml">
130 <div xmlns="http://www.w3.org/1999/xhtml">
131 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
131 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
132 </div>
132 </div>
133 </content>
133 </content>
134 </entry>
134 </entry>
135 <entry>
135 <entry>
136 <title>base</title>
136 <title>base</title>
137 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
137 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
138 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
138 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
139 <author>
139 <author>
140 <name>test</name>
140 <name>test</name>
141 <email>&#116;&#101;&#115;&#116;</email>
141 <email>&#116;&#101;&#115;&#116;</email>
142 </author>
142 </author>
143 <updated>1970-01-01T00:00:00+00:00</updated>
143 <updated>1970-01-01T00:00:00+00:00</updated>
144 <published>1970-01-01T00:00:00+00:00</published>
144 <published>1970-01-01T00:00:00+00:00</published>
145 <content type="xhtml">
145 <content type="xhtml">
146 <div xmlns="http://www.w3.org/1999/xhtml">
146 <div xmlns="http://www.w3.org/1999/xhtml">
147 <pre xml:space="preserve">base</pre>
147 <pre xml:space="preserve">base</pre>
148 </div>
148 </div>
149 </content>
149 </content>
150 </entry>
150 </entry>
151
151
152 </feed>
152 </feed>
153 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
153 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom'
154 200 Script output follows
154 200 Script output follows
155
155
156 <?xml version="1.0" encoding="ascii"?>
156 <?xml version="1.0" encoding="ascii"?>
157 <feed xmlns="http://www.w3.org/2005/Atom">
157 <feed xmlns="http://www.w3.org/2005/Atom">
158 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
158 <id>http://*:$HGPORT/atom-log/tip/foo</id> (glob)
159 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
159 <link rel="self" href="http://*:$HGPORT/atom-log/tip/foo"/> (glob)
160 <title>test: foo history</title>
160 <title>test: foo history</title>
161 <updated>1970-01-01T00:00:00+00:00</updated>
161 <updated>1970-01-01T00:00:00+00:00</updated>
162
162
163 <entry>
163 <entry>
164 <title>base</title>
164 <title>base</title>
165 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
165 <id>http://*:$HGPORT/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id> (glob)
166 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
166 <link href="http://*:$HGPORT/rev/2ef0ac749a14"/> (glob)
167 <author>
167 <author>
168 <name>test</name>
168 <name>test</name>
169 <email>&#116;&#101;&#115;&#116;</email>
169 <email>&#116;&#101;&#115;&#116;</email>
170 </author>
170 </author>
171 <updated>1970-01-01T00:00:00+00:00</updated>
171 <updated>1970-01-01T00:00:00+00:00</updated>
172 <published>1970-01-01T00:00:00+00:00</published>
172 <published>1970-01-01T00:00:00+00:00</published>
173 <content type="xhtml">
173 <content type="xhtml">
174 <div xmlns="http://www.w3.org/1999/xhtml">
174 <div xmlns="http://www.w3.org/1999/xhtml">
175 <pre xml:space="preserve">base</pre>
175 <pre xml:space="preserve">base</pre>
176 </div>
176 </div>
177 </content>
177 </content>
178 </entry>
178 </entry>
179
179
180 </feed>
180 </feed>
181 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
181 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
182 200 Script output follows
182 200 Script output follows
183
183
184 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
184 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
185 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
185 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
186 <head>
186 <head>
187 <link rel="icon" href="/static/hgicon.png" type="image/png" />
187 <link rel="icon" href="/static/hgicon.png" type="image/png" />
188 <meta name="robots" content="index, nofollow" />
188 <meta name="robots" content="index, nofollow" />
189 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
189 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
190 <script type="text/javascript" src="/static/mercurial.js"></script>
190
191
191 <title>test: log</title>
192 <title>test: log</title>
192 <link rel="alternate" type="application/atom+xml"
193 <link rel="alternate" type="application/atom+xml"
193 href="/atom-log" title="Atom feed for test" />
194 href="/atom-log" title="Atom feed for test" />
194 <link rel="alternate" type="application/rss+xml"
195 <link rel="alternate" type="application/rss+xml"
195 href="/rss-log" title="RSS feed for test" />
196 href="/rss-log" title="RSS feed for test" />
196 </head>
197 </head>
197 <body>
198 <body>
198
199
199 <div class="container">
200 <div class="container">
200 <div class="menu">
201 <div class="menu">
201 <div class="logo">
202 <div class="logo">
202 <a href="http://mercurial.selenic.com/">
203 <a href="http://mercurial.selenic.com/">
203 <img src="/static/hglogo.png" alt="mercurial" /></a>
204 <img src="/static/hglogo.png" alt="mercurial" /></a>
204 </div>
205 </div>
205 <ul>
206 <ul>
206 <li class="active">log</li>
207 <li class="active">log</li>
207 <li><a href="/graph/1d22e65f027e">graph</a></li>
208 <li><a href="/graph/1d22e65f027e">graph</a></li>
208 <li><a href="/tags">tags</a></li>
209 <li><a href="/tags">tags</a></li>
209 <li><a href="/bookmarks">bookmarks</a></li>
210 <li><a href="/bookmarks">bookmarks</a></li>
210 <li><a href="/branches">branches</a></li>
211 <li><a href="/branches">branches</a></li>
211 </ul>
212 </ul>
212 <ul>
213 <ul>
213 <li><a href="/rev/1d22e65f027e">changeset</a></li>
214 <li><a href="/rev/1d22e65f027e">changeset</a></li>
214 <li><a href="/file/1d22e65f027e">browse</a></li>
215 <li><a href="/file/1d22e65f027e">browse</a></li>
215 </ul>
216 </ul>
216 <ul>
217 <ul>
217
218
218 </ul>
219 </ul>
219 <ul>
220 <ul>
220 <li><a href="/help">help</a></li>
221 <li><a href="/help">help</a></li>
221 </ul>
222 </ul>
222 </div>
223 </div>
223
224
224 <div class="main">
225 <div class="main">
225 <h2><a href="/">test</a></h2>
226 <h2><a href="/">test</a></h2>
226 <h3>log</h3>
227 <h3>log</h3>
227
228
228 <form class="search" action="/log">
229 <form class="search" action="/log">
229
230
230 <p><input name="rev" id="search1" type="text" size="30" /></p>
231 <p><input name="rev" id="search1" type="text" size="30" /></p>
231 <div id="hint">find changesets by author, revision,
232 <div id="hint">find changesets by author, revision,
232 files, or words in the commit message</div>
233 files, or words in the commit message</div>
233 </form>
234 </form>
234
235
235 <div class="navigate">
236 <div class="navigate">
236 <a href="/shortlog/2?revcount=30">less</a>
237 <a href="/shortlog/2?revcount=30">less</a>
237 <a href="/shortlog/2?revcount=120">more</a>
238 <a href="/shortlog/2?revcount=120">more</a>
238 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
239 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
239 </div>
240 </div>
240
241
241 <table class="bigtable">
242 <table class="bigtable">
242 <tr>
243 <tr>
243 <th class="age">age</th>
244 <th class="age">age</th>
244 <th class="author">author</th>
245 <th class="author">author</th>
245 <th class="description">description</th>
246 <th class="description">description</th>
246 </tr>
247 </tr>
247 <tr class="parity0">
248 <tr class="parity0">
248 <td class="age">1970-01-01</td>
249 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
249 <td class="author">test</td>
250 <td class="author">test</td>
250 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> <span class="tag">something</span> </td>
251 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> <span class="tag">something</span> </td>
251 </tr>
252 </tr>
252 <tr class="parity1">
253 <tr class="parity1">
253 <td class="age">1970-01-01</td>
254 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
254 <td class="author">test</td>
255 <td class="author">test</td>
255 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
256 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
256 </tr>
257 </tr>
257 <tr class="parity0">
258 <tr class="parity0">
258 <td class="age">1970-01-01</td>
259 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
259 <td class="author">test</td>
260 <td class="author">test</td>
260 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
261 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
261 </tr>
262 </tr>
262
263
263 </table>
264 </table>
264
265
265 <div class="navigate">
266 <div class="navigate">
266 <a href="/shortlog/2?revcount=30">less</a>
267 <a href="/shortlog/2?revcount=30">less</a>
267 <a href="/shortlog/2?revcount=120">more</a>
268 <a href="/shortlog/2?revcount=120">more</a>
268 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
269 | rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a>
269 </div>
270 </div>
270
271
271 </div>
272 </div>
272 </div>
273 </div>
273
274
275 <script type="text/javascript">process_dates()</script>
274
276
275
277
276 </body>
278 </body>
277 </html>
279 </html>
278
280
279 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
281 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
280 200 Script output follows
282 200 Script output follows
281
283
282 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
284 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
283 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
285 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
284 <head>
286 <head>
285 <link rel="icon" href="/static/hgicon.png" type="image/png" />
287 <link rel="icon" href="/static/hgicon.png" type="image/png" />
286 <meta name="robots" content="index, nofollow" />
288 <meta name="robots" content="index, nofollow" />
287 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
289 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
290 <script type="text/javascript" src="/static/mercurial.js"></script>
288
291
289 <title>test: 2ef0ac749a14</title>
292 <title>test: 2ef0ac749a14</title>
290 </head>
293 </head>
291 <body>
294 <body>
292 <div class="container">
295 <div class="container">
293 <div class="menu">
296 <div class="menu">
294 <div class="logo">
297 <div class="logo">
295 <a href="http://mercurial.selenic.com/">
298 <a href="http://mercurial.selenic.com/">
296 <img src="/static/hglogo.png" alt="mercurial" /></a>
299 <img src="/static/hglogo.png" alt="mercurial" /></a>
297 </div>
300 </div>
298 <ul>
301 <ul>
299 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
302 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
300 <li><a href="/graph/2ef0ac749a14">graph</a></li>
303 <li><a href="/graph/2ef0ac749a14">graph</a></li>
301 <li><a href="/tags">tags</a></li>
304 <li><a href="/tags">tags</a></li>
302 <li><a href="/bookmarks">bookmarks</a></li>
305 <li><a href="/bookmarks">bookmarks</a></li>
303 <li><a href="/branches">branches</a></li>
306 <li><a href="/branches">branches</a></li>
304 </ul>
307 </ul>
305 <ul>
308 <ul>
306 <li class="active">changeset</li>
309 <li class="active">changeset</li>
307 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
310 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
308 <li><a href="/file/2ef0ac749a14">browse</a></li>
311 <li><a href="/file/2ef0ac749a14">browse</a></li>
309 </ul>
312 </ul>
310 <ul>
313 <ul>
311
314
312 </ul>
315 </ul>
313 <ul>
316 <ul>
314 <li><a href="/help">help</a></li>
317 <li><a href="/help">help</a></li>
315 </ul>
318 </ul>
316 </div>
319 </div>
317
320
318 <div class="main">
321 <div class="main">
319
322
320 <h2><a href="/">test</a></h2>
323 <h2><a href="/">test</a></h2>
321 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> <span class="tag">anotherthing</span> </h3>
324 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> <span class="tag">anotherthing</span> </h3>
322
325
323 <form class="search" action="/log">
326 <form class="search" action="/log">
324
327
325 <p><input name="rev" id="search1" type="text" size="30" /></p>
328 <p><input name="rev" id="search1" type="text" size="30" /></p>
326 <div id="hint">find changesets by author, revision,
329 <div id="hint">find changesets by author, revision,
327 files, or words in the commit message</div>
330 files, or words in the commit message</div>
328 </form>
331 </form>
329
332
330 <div class="description">base</div>
333 <div class="description">base</div>
331
334
332 <table id="changesetEntry">
335 <table id="changesetEntry">
333 <tr>
336 <tr>
334 <th class="author">author</th>
337 <th class="author">author</th>
335 <td class="author">&#116;&#101;&#115;&#116;</td>
338 <td class="author">&#116;&#101;&#115;&#116;</td>
336 </tr>
339 </tr>
337 <tr>
340 <tr>
338 <th class="date">date</th>
341 <th class="date">date</th>
339 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
342 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
340 <tr>
343 <tr>
341 <th class="author">parents</th>
344 <th class="author">parents</th>
342 <td class="author"></td>
345 <td class="author"></td>
343 </tr>
346 </tr>
344 <tr>
347 <tr>
345 <th class="author">children</th>
348 <th class="author">children</th>
346 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
349 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
347 </tr>
350 </tr>
348 <tr>
351 <tr>
349 <th class="files">files</th>
352 <th class="files">files</th>
350 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
353 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
351 </tr>
354 </tr>
352 </table>
355 </table>
353
356
354 <div class="overflow">
357 <div class="overflow">
355 <div class="sourcefirst"> line diff</div>
358 <div class="sourcefirst"> line diff</div>
356
359
357 <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
360 <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
358 </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
361 </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
359 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
362 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
360 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
363 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
361 </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
364 </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
362 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
365 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
363 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
366 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
364 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
367 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
365 </span></pre></div>
368 </span></pre></div>
366 </div>
369 </div>
367
370
368 </div>
371 </div>
369 </div>
372 </div>
373 <script type="text/javascript">process_dates()</script>
370
374
371
375
372 </body>
376 </body>
373 </html>
377 </html>
374
378
375 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
379 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
376 200 Script output follows
380 200 Script output follows
377
381
378
382
379 # HG changeset patch
383 # HG changeset patch
380 # User test
384 # User test
381 # Date 0 0
385 # Date 0 0
382 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
386 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
383 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
387 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
384 Added tag 1.0 for changeset 2ef0ac749a14
388 Added tag 1.0 for changeset 2ef0ac749a14
385
389
386 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
390 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
387 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
388 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
392 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
389 @@ -0,0 +1,1 @@
393 @@ -0,0 +1,1 @@
390 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
394 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
391
395
392 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
396 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log?rev=base'
393 200 Script output follows
397 200 Script output follows
394
398
395 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
399 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
396 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
400 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
397 <head>
401 <head>
398 <link rel="icon" href="/static/hgicon.png" type="image/png" />
402 <link rel="icon" href="/static/hgicon.png" type="image/png" />
399 <meta name="robots" content="index, nofollow" />
403 <meta name="robots" content="index, nofollow" />
400 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
404 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
405 <script type="text/javascript" src="/static/mercurial.js"></script>
401
406
402 <title>test: searching for base</title>
407 <title>test: searching for base</title>
403 </head>
408 </head>
404 <body>
409 <body>
405
410
406 <div class="container">
411 <div class="container">
407 <div class="menu">
412 <div class="menu">
408 <div class="logo">
413 <div class="logo">
409 <a href="http://mercurial.selenic.com/">
414 <a href="http://mercurial.selenic.com/">
410 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
415 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
411 </div>
416 </div>
412 <ul>
417 <ul>
413 <li><a href="/shortlog">log</a></li>
418 <li><a href="/shortlog">log</a></li>
414 <li><a href="/graph">graph</a></li>
419 <li><a href="/graph">graph</a></li>
415 <li><a href="/tags">tags</a></li>
420 <li><a href="/tags">tags</a></li>
416 <li><a href="/bookmarks">bookmarks</a></li>
421 <li><a href="/bookmarks">bookmarks</a></li>
417 <li><a href="/branches">branches</a></li>
422 <li><a href="/branches">branches</a></li>
418 <li><a href="/help">help</a></li>
423 <li><a href="/help">help</a></li>
419 </ul>
424 </ul>
420 </div>
425 </div>
421
426
422 <div class="main">
427 <div class="main">
423 <h2><a href="/">test</a></h2>
428 <h2><a href="/">test</a></h2>
424 <h3>searching for 'base'</h3>
429 <h3>searching for 'base'</h3>
425
430
426 <form class="search" action="/log">
431 <form class="search" action="/log">
427
432
428 <p><input name="rev" id="search1" type="text" size="30"></p>
433 <p><input name="rev" id="search1" type="text" size="30"></p>
429 <div id="hint">find changesets by author, revision,
434 <div id="hint">find changesets by author, revision,
430 files, or words in the commit message</div>
435 files, or words in the commit message</div>
431 </form>
436 </form>
432
437
433 <div class="navigate">
438 <div class="navigate">
434 <a href="/search/?rev=base&revcount=5">less</a>
439 <a href="/search/?rev=base&revcount=5">less</a>
435 <a href="/search/?rev=base&revcount=20">more</a>
440 <a href="/search/?rev=base&revcount=20">more</a>
436 </div>
441 </div>
437
442
438 <table class="bigtable">
443 <table class="bigtable">
439 <tr>
444 <tr>
440 <th class="age">age</th>
445 <th class="age">age</th>
441 <th class="author">author</th>
446 <th class="author">author</th>
442 <th class="description">description</th>
447 <th class="description">description</th>
443 </tr>
448 </tr>
444 <tr class="parity0">
449 <tr class="parity0">
445 <td class="age">1970-01-01</td>
450 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
446 <td class="author">test</td>
451 <td class="author">test</td>
447 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
452 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
448 </tr>
453 </tr>
449
454
450 </table>
455 </table>
451
456
452 <div class="navigate">
457 <div class="navigate">
453 <a href="/search/?rev=base&revcount=5">less</a>
458 <a href="/search/?rev=base&revcount=5">less</a>
454 <a href="/search/?rev=base&revcount=20">more</a>
459 <a href="/search/?rev=base&revcount=20">more</a>
455 </div>
460 </div>
456
461
457 </div>
462 </div>
458 </div>
463 </div>
459
464
465 <script type="text/javascript">process_dates()</script>
460
466
461
467
462 </body>
468 </body>
463 </html>
469 </html>
464
470
465
471
466 File-related
472 File-related
467
473
468 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
474 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
469 200 Script output follows
475 200 Script output follows
470
476
471 foo
477 foo
472 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
478 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
473 200 Script output follows
479 200 Script output follows
474
480
475
481
476 test@0: foo
482 test@0: foo
477
483
478
484
479
485
480
486
481 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
487 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
482 200 Script output follows
488 200 Script output follows
483
489
484
490
485 drwxr-xr-x da
491 drwxr-xr-x da
486 -rw-r--r-- 45 .hgtags
492 -rw-r--r-- 45 .hgtags
487 -rw-r--r-- 4 foo
493 -rw-r--r-- 4 foo
488
494
489
495
490 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
496 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
491 200 Script output follows
497 200 Script output follows
492
498
493 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
499 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
494 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
500 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
495 <head>
501 <head>
496 <link rel="icon" href="/static/hgicon.png" type="image/png" />
502 <link rel="icon" href="/static/hgicon.png" type="image/png" />
497 <meta name="robots" content="index, nofollow" />
503 <meta name="robots" content="index, nofollow" />
498 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
504 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
505 <script type="text/javascript" src="/static/mercurial.js"></script>
499
506
500 <title>test: a4f92ed23982 foo</title>
507 <title>test: a4f92ed23982 foo</title>
501 </head>
508 </head>
502 <body>
509 <body>
503
510
504 <div class="container">
511 <div class="container">
505 <div class="menu">
512 <div class="menu">
506 <div class="logo">
513 <div class="logo">
507 <a href="http://mercurial.selenic.com/">
514 <a href="http://mercurial.selenic.com/">
508 <img src="/static/hglogo.png" alt="mercurial" /></a>
515 <img src="/static/hglogo.png" alt="mercurial" /></a>
509 </div>
516 </div>
510 <ul>
517 <ul>
511 <li><a href="/shortlog/a4f92ed23982">log</a></li>
518 <li><a href="/shortlog/a4f92ed23982">log</a></li>
512 <li><a href="/graph/a4f92ed23982">graph</a></li>
519 <li><a href="/graph/a4f92ed23982">graph</a></li>
513 <li><a href="/tags">tags</a></li>
520 <li><a href="/tags">tags</a></li>
514 <li><a href="/branches">branches</a></li>
521 <li><a href="/branches">branches</a></li>
515 </ul>
522 </ul>
516 <ul>
523 <ul>
517 <li><a href="/rev/a4f92ed23982">changeset</a></li>
524 <li><a href="/rev/a4f92ed23982">changeset</a></li>
518 <li><a href="/file/a4f92ed23982/">browse</a></li>
525 <li><a href="/file/a4f92ed23982/">browse</a></li>
519 </ul>
526 </ul>
520 <ul>
527 <ul>
521 <li class="active">file</li>
528 <li class="active">file</li>
522 <li><a href="/file/tip/foo">latest</a></li>
529 <li><a href="/file/tip/foo">latest</a></li>
523 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
530 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
524 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
531 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
525 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
532 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
526 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
533 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
527 </ul>
534 </ul>
528 <ul>
535 <ul>
529 <li><a href="/help">help</a></li>
536 <li><a href="/help">help</a></li>
530 </ul>
537 </ul>
531 </div>
538 </div>
532
539
533 <div class="main">
540 <div class="main">
534 <h2><a href="/">test</a></h2>
541 <h2><a href="/">test</a></h2>
535 <h3>view foo @ 1:a4f92ed23982</h3>
542 <h3>view foo @ 1:a4f92ed23982</h3>
536
543
537 <form class="search" action="/log">
544 <form class="search" action="/log">
538
545
539 <p><input name="rev" id="search1" type="text" size="30" /></p>
546 <p><input name="rev" id="search1" type="text" size="30" /></p>
540 <div id="hint">find changesets by author, revision,
547 <div id="hint">find changesets by author, revision,
541 files, or words in the commit message</div>
548 files, or words in the commit message</div>
542 </form>
549 </form>
543
550
544 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
551 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
545
552
546 <table id="changesetEntry">
553 <table id="changesetEntry">
547 <tr>
554 <tr>
548 <th class="author">author</th>
555 <th class="author">author</th>
549 <td class="author">&#116;&#101;&#115;&#116;</td>
556 <td class="author">&#116;&#101;&#115;&#116;</td>
550 </tr>
557 </tr>
551 <tr>
558 <tr>
552 <th class="date">date</th>
559 <th class="date">date</th>
553 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
560 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
554 </tr>
561 </tr>
555 <tr>
562 <tr>
556 <th class="author">parents</th>
563 <th class="author">parents</th>
557 <td class="author"></td>
564 <td class="author"></td>
558 </tr>
565 </tr>
559 <tr>
566 <tr>
560 <th class="author">children</th>
567 <th class="author">children</th>
561 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
568 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
562 </tr>
569 </tr>
563
570
564 </table>
571 </table>
565
572
566 <div class="overflow">
573 <div class="overflow">
567 <div class="sourcefirst"> line source</div>
574 <div class="sourcefirst"> line source</div>
568
575
569 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
576 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
570 </div>
577 </div>
571 <div class="sourcelast"></div>
578 <div class="sourcelast"></div>
572 </div>
579 </div>
573 </div>
580 </div>
574 </div>
581 </div>
575
582
583 <script type="text/javascript">process_dates()</script>
576
584
577
585
578 </body>
586 </body>
579 </html>
587 </html>
580
588
581 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
589 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
582 200 Script output follows
590 200 Script output follows
583
591
584
592
585 diff -r 000000000000 -r a4f92ed23982 foo
593 diff -r 000000000000 -r a4f92ed23982 foo
586 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
594 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
587 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
595 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
588 @@ -0,0 +1,1 @@
596 @@ -0,0 +1,1 @@
589 +foo
597 +foo
590
598
591
599
592
600
593
601
594
602
595 Overviews
603 Overviews
596
604
597 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
605 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
598 200 Script output follows
606 200 Script output follows
599
607
600 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
608 tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
601 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
609 1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
602 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
610 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
603 200 Script output follows
611 200 Script output follows
604
612
605 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
613 stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
606 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
614 default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
607 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-bookmarks'
615 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-bookmarks'
608 200 Script output follows
616 200 Script output follows
609
617
610 anotherthing 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
618 anotherthing 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
611 something 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
619 something 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
612 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
620 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
613 200 Script output follows
621 200 Script output follows
614
622
615 <?xml version="1.0" encoding="ascii"?>
623 <?xml version="1.0" encoding="ascii"?>
616 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
624 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
617 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
625 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
618 <head>
626 <head>
619 <link rel="icon" href="/static/hgicon.png" type="image/png" />
627 <link rel="icon" href="/static/hgicon.png" type="image/png" />
620 <meta name="robots" content="index, nofollow"/>
628 <meta name="robots" content="index, nofollow"/>
621 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
629 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
622
630 <script type="text/javascript" src="/static/mercurial.js"></script>
623
631
624 <title>test: Summary</title>
632 <title>test: Summary</title>
625 <link rel="alternate" type="application/atom+xml"
633 <link rel="alternate" type="application/atom+xml"
626 href="/atom-log" title="Atom feed for test"/>
634 href="/atom-log" title="Atom feed for test"/>
627 <link rel="alternate" type="application/rss+xml"
635 <link rel="alternate" type="application/rss+xml"
628 href="/rss-log" title="RSS feed for test"/>
636 href="/rss-log" title="RSS feed for test"/>
629 </head>
637 </head>
630 <body>
638 <body>
631
639
632 <div class="page_header">
640 <div class="page_header">
633 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
641 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
634
642
635 <form action="/log">
643 <form action="/log">
636 <input type="hidden" name="style" value="gitweb" />
644 <input type="hidden" name="style" value="gitweb" />
637 <div class="search">
645 <div class="search">
638 <input type="text" name="rev" />
646 <input type="text" name="rev" />
639 </div>
647 </div>
640 </form>
648 </form>
641 </div>
649 </div>
642
650
643 <div class="page_nav">
651 <div class="page_nav">
644 summary |
652 summary |
645 <a href="/shortlog?style=gitweb">shortlog</a> |
653 <a href="/shortlog?style=gitweb">shortlog</a> |
646 <a href="/log?style=gitweb">changelog</a> |
654 <a href="/log?style=gitweb">changelog</a> |
647 <a href="/graph?style=gitweb">graph</a> |
655 <a href="/graph?style=gitweb">graph</a> |
648 <a href="/tags?style=gitweb">tags</a> |
656 <a href="/tags?style=gitweb">tags</a> |
649 <a href="/bookmarks?style=gitweb">bookmarks</a> |
657 <a href="/bookmarks?style=gitweb">bookmarks</a> |
650 <a href="/branches?style=gitweb">branches</a> |
658 <a href="/branches?style=gitweb">branches</a> |
651 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
659 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
652 <a href="/help?style=gitweb">help</a>
660 <a href="/help?style=gitweb">help</a>
653 <br/>
661 <br/>
654 </div>
662 </div>
655
663
656 <div class="title">&nbsp;</div>
664 <div class="title">&nbsp;</div>
657 <table cellspacing="0">
665 <table cellspacing="0">
658 <tr><td>description</td><td>unknown</td></tr>
666 <tr><td>description</td><td>unknown</td></tr>
659 <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>
667 <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>
660 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
668 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
661 </table>
669 </table>
662
670
663 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
671 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
664 <table cellspacing="0">
672 <table cellspacing="0">
665
673
666 <tr class="parity0">
674 <tr class="parity0">
667 <td class="age"><i>1970-01-01</i></td>
675 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
668 <td><i>test</i></td>
676 <td><i>test</i></td>
669 <td>
677 <td>
670 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
678 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
671 <b>branch</b>
679 <b>branch</b>
672 <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>
680 <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>
673 </a>
681 </a>
674 </td>
682 </td>
675 <td class="link" nowrap>
683 <td class="link" nowrap>
676 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
684 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
677 <a href="/file/1d22e65f027e?style=gitweb">files</a>
685 <a href="/file/1d22e65f027e?style=gitweb">files</a>
678 </td>
686 </td>
679 </tr>
687 </tr>
680 <tr class="parity1">
688 <tr class="parity1">
681 <td class="age"><i>1970-01-01</i></td>
689 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
682 <td><i>test</i></td>
690 <td><i>test</i></td>
683 <td>
691 <td>
684 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
692 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
685 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
693 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
686 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
694 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
687 </a>
695 </a>
688 </td>
696 </td>
689 <td class="link" nowrap>
697 <td class="link" nowrap>
690 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
698 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
691 <a href="/file/a4f92ed23982?style=gitweb">files</a>
699 <a href="/file/a4f92ed23982?style=gitweb">files</a>
692 </td>
700 </td>
693 </tr>
701 </tr>
694 <tr class="parity0">
702 <tr class="parity0">
695 <td class="age"><i>1970-01-01</i></td>
703 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
696 <td><i>test</i></td>
704 <td><i>test</i></td>
697 <td>
705 <td>
698 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
706 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
699 <b>base</b>
707 <b>base</b>
700 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> <span class="bookmarktag" title="anotherthing">anotherthing</span> </span>
708 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> <span class="bookmarktag" title="anotherthing">anotherthing</span> </span>
701 </a>
709 </a>
702 </td>
710 </td>
703 <td class="link" nowrap>
711 <td class="link" nowrap>
704 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
712 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
705 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
713 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
706 </td>
714 </td>
707 </tr>
715 </tr>
708 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
716 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
709 </table>
717 </table>
710
718
711 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
719 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
712 <table cellspacing="0">
720 <table cellspacing="0">
713
721
714 <tr class="parity0">
722 <tr class="parity0">
715 <td class="age"><i>1970-01-01</i></td>
723 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
716 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
724 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
717 <td class="link">
725 <td class="link">
718 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
726 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
719 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
727 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
720 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
728 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
721 </td>
729 </td>
722 </tr>
730 </tr>
723 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
731 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
724 </table>
732 </table>
725
733
726 <div><a class="title" href="/bookmarks?style=gitweb">bookmarks</a></div>
734 <div><a class="title" href="/bookmarks?style=gitweb">bookmarks</a></div>
727 <table cellspacing="0">
735 <table cellspacing="0">
728
736
729 <tr class="parity0">
737 <tr class="parity0">
730 <td class="age"><i>1970-01-01</i></td>
738 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
731 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>anotherthing</b></a></td>
739 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>anotherthing</b></a></td>
732 <td class="link">
740 <td class="link">
733 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
741 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
734 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
742 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
735 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
743 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
736 </td>
744 </td>
737 </tr>
745 </tr>
738 <tr class="parity1">
746 <tr class="parity1">
739 <td class="age"><i>1970-01-01</i></td>
747 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
740 <td><a class="list" href="/rev/1d22e65f027e?style=gitweb"><b>something</b></a></td>
748 <td><a class="list" href="/rev/1d22e65f027e?style=gitweb"><b>something</b></a></td>
741 <td class="link">
749 <td class="link">
742 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
750 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
743 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
751 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
744 <a href="/file/1d22e65f027e?style=gitweb">files</a>
752 <a href="/file/1d22e65f027e?style=gitweb">files</a>
745 </td>
753 </td>
746 </tr>
754 </tr>
747 <tr class="light"><td colspan="3"><a class="list" href="/bookmarks?style=gitweb">...</a></td></tr>
755 <tr class="light"><td colspan="3"><a class="list" href="/bookmarks?style=gitweb">...</a></td></tr>
748 </table>
756 </table>
749
757
750 <div><a class="title" href="#">branches</a></div>
758 <div><a class="title" href="#">branches</a></div>
751 <table cellspacing="0">
759 <table cellspacing="0">
752
760
753 <tr class="parity0">
761 <tr class="parity0">
754 <td class="age"><i>1970-01-01</i></td>
762 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
755 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
763 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
756 <td class="">stable</td>
764 <td class="">stable</td>
757 <td class="link">
765 <td class="link">
758 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
766 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
759 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
767 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
760 <a href="/file/1d22e65f027e?style=gitweb">files</a>
768 <a href="/file/1d22e65f027e?style=gitweb">files</a>
761 </td>
769 </td>
762 </tr>
770 </tr>
763 <tr class="parity1">
771 <tr class="parity1">
764 <td class="age"><i>1970-01-01</i></td>
772 <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
765 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
773 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
766 <td class="">default</td>
774 <td class="">default</td>
767 <td class="link">
775 <td class="link">
768 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
776 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
769 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
777 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
770 <a href="/file/a4f92ed23982?style=gitweb">files</a>
778 <a href="/file/a4f92ed23982?style=gitweb">files</a>
771 </td>
779 </td>
772 </tr>
780 </tr>
773 <tr class="light">
781 <tr class="light">
774 <td colspan="4"><a class="list" href="#">...</a></td>
782 <td colspan="4"><a class="list" href="#">...</a></td>
775 </tr>
783 </tr>
776 </table>
784 </table>
785 <script type="text/javascript">process_dates()</script>
777 <div class="page_footer">
786 <div class="page_footer">
778 <div class="page_footer_text">test</div>
787 <div class="page_footer_text">test</div>
779 <div class="rss_logo">
788 <div class="rss_logo">
780 <a href="/rss-log">RSS</a>
789 <a href="/rss-log">RSS</a>
781 <a href="/atom-log">Atom</a>
790 <a href="/atom-log">Atom</a>
782 </div>
791 </div>
783 <br />
792 <br />
784
793
785 </div>
794 </div>
786 </body>
795 </body>
787 </html>
796 </html>
788
797
789 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
798 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
790 200 Script output follows
799 200 Script output follows
791
800
792 <?xml version="1.0" encoding="ascii"?>
801 <?xml version="1.0" encoding="ascii"?>
793 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
802 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
794 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
803 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
795 <head>
804 <head>
796 <link rel="icon" href="/static/hgicon.png" type="image/png" />
805 <link rel="icon" href="/static/hgicon.png" type="image/png" />
797 <meta name="robots" content="index, nofollow"/>
806 <meta name="robots" content="index, nofollow"/>
798 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
807 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
799
808 <script type="text/javascript" src="/static/mercurial.js"></script>
800
809
801 <title>test: Graph</title>
810 <title>test: Graph</title>
802 <link rel="alternate" type="application/atom+xml"
811 <link rel="alternate" type="application/atom+xml"
803 href="/atom-log" title="Atom feed for test"/>
812 href="/atom-log" title="Atom feed for test"/>
804 <link rel="alternate" type="application/rss+xml"
813 <link rel="alternate" type="application/rss+xml"
805 href="/rss-log" title="RSS feed for test"/>
814 href="/rss-log" title="RSS feed for test"/>
806 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
815 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
807 </head>
816 </head>
808 <body>
817 <body>
809
818
810 <div class="page_header">
819 <div class="page_header">
811 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
820 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
812 </div>
821 </div>
813
822
814 <form action="/log">
823 <form action="/log">
815 <input type="hidden" name="style" value="gitweb" />
824 <input type="hidden" name="style" value="gitweb" />
816 <div class="search">
825 <div class="search">
817 <input type="text" name="rev" />
826 <input type="text" name="rev" />
818 </div>
827 </div>
819 </form>
828 </form>
820 <div class="page_nav">
829 <div class="page_nav">
821 <a href="/summary?style=gitweb">summary</a> |
830 <a href="/summary?style=gitweb">summary</a> |
822 <a href="/shortlog?style=gitweb">shortlog</a> |
831 <a href="/shortlog?style=gitweb">shortlog</a> |
823 <a href="/log/2?style=gitweb">changelog</a> |
832 <a href="/log/2?style=gitweb">changelog</a> |
824 graph |
833 graph |
825 <a href="/tags?style=gitweb">tags</a> |
834 <a href="/tags?style=gitweb">tags</a> |
826 <a href="/bookmarks?style=gitweb">bookmarks</a> |
835 <a href="/bookmarks?style=gitweb">bookmarks</a> |
827 <a href="/branches?style=gitweb">branches</a> |
836 <a href="/branches?style=gitweb">branches</a> |
828 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
837 <a href="/file/1d22e65f027e?style=gitweb">files</a> |
829 <a href="/help?style=gitweb">help</a>
838 <a href="/help?style=gitweb">help</a>
830 <br/>
839 <br/>
831 <a href="/graph/2?style=gitweb&revcount=30">less</a>
840 <a href="/graph/2?style=gitweb&revcount=30">less</a>
832 <a href="/graph/2?style=gitweb&revcount=120">more</a>
841 <a href="/graph/2?style=gitweb&revcount=120">more</a>
833 | <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/>
842 | <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/>
834 </div>
843 </div>
835
844
836 <div class="title">&nbsp;</div>
845 <div class="title">&nbsp;</div>
837
846
838 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
847 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
839
848
840 <div id="wrapper">
849 <div id="wrapper">
841 <ul id="nodebgs"></ul>
850 <ul id="nodebgs"></ul>
842 <canvas id="graph" width="480" height="129"></canvas>
851 <canvas id="graph" width="480" height="129"></canvas>
843 <ul id="graphnodes"></ul>
852 <ul id="graphnodes"></ul>
844 </div>
853 </div>
845
854
846 <script type="text/javascript" src="/static/graph.js"></script>
847 <script>
855 <script>
848 <!-- hide script content
856 <!-- hide script content
849
857
850 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
858 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
851 var graph = new Graph();
859 var graph = new Graph();
852 graph.scale(39);
860 graph.scale(39);
853
861
854 graph.edge = function(x0, y0, x1, y1, color) {
862 graph.edge = function(x0, y0, x1, y1, color) {
855
863
856 this.setColor(color, 0.0, 0.65);
864 this.setColor(color, 0.0, 0.65);
857 this.ctx.beginPath();
865 this.ctx.beginPath();
858 this.ctx.moveTo(x0, y0);
866 this.ctx.moveTo(x0, y0);
859 this.ctx.lineTo(x1, y1);
867 this.ctx.lineTo(x1, y1);
860 this.ctx.stroke();
868 this.ctx.stroke();
861
869
862 }
870 }
863
871
864 var revlink = '<li style="_STYLE"><span class="desc">';
872 var revlink = '<li style="_STYLE"><span class="desc">';
865 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
873 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
866 revlink += '</span> _TAGS';
874 revlink += '</span> _TAGS';
867 revlink += '<span class="info">_DATE, by _USER</span></li>';
875 revlink += '<span class="info">_DATE, by _USER</span></li>';
868
876
869 graph.vertex = function(x, y, color, parity, cur) {
877 graph.vertex = function(x, y, color, parity, cur) {
870
878
871 this.ctx.beginPath();
879 this.ctx.beginPath();
872 color = this.setColor(color, 0.25, 0.75);
880 color = this.setColor(color, 0.25, 0.75);
873 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
881 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
874 this.ctx.fill();
882 this.ctx.fill();
875
883
876 var bg = '<li class="bg parity' + parity + '"></li>';
884 var bg = '<li class="bg parity' + parity + '"></li>';
877 var left = (this.columns + 1) * this.bg_height;
885 var left = (this.columns + 1) * this.bg_height;
878 var nstyle = 'padding-left: ' + left + 'px;';
886 var nstyle = 'padding-left: ' + left + 'px;';
879 var item = revlink.replace(/_STYLE/, nstyle);
887 var item = revlink.replace(/_STYLE/, nstyle);
880 item = item.replace(/_PARITY/, 'parity' + parity);
888 item = item.replace(/_PARITY/, 'parity' + parity);
881 item = item.replace(/_NODEID/, cur[0]);
889 item = item.replace(/_NODEID/, cur[0]);
882 item = item.replace(/_NODEID/, cur[0]);
890 item = item.replace(/_NODEID/, cur[0]);
883 item = item.replace(/_DESC/, cur[3]);
891 item = item.replace(/_DESC/, cur[3]);
884 item = item.replace(/_USER/, cur[4]);
892 item = item.replace(/_USER/, cur[4]);
885 item = item.replace(/_DATE/, cur[5]);
893 item = item.replace(/_DATE/, cur[5]);
886
894
887 var tagspan = '';
895 var tagspan = '';
888 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
896 if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) {
889 tagspan = '<span class="logtags">';
897 tagspan = '<span class="logtags">';
890 if (cur[6][1]) {
898 if (cur[6][1]) {
891 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
899 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
892 tagspan += cur[6][0] + '</span> ';
900 tagspan += cur[6][0] + '</span> ';
893 } else if (!cur[6][1] && cur[6][0] != 'default') {
901 } else if (!cur[6][1] && cur[6][0] != 'default') {
894 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
902 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
895 tagspan += cur[6][0] + '</span> ';
903 tagspan += cur[6][0] + '</span> ';
896 }
904 }
897 if (cur[7].length) {
905 if (cur[7].length) {
898 for (var t in cur[7]) {
906 for (var t in cur[7]) {
899 var tag = cur[7][t];
907 var tag = cur[7][t];
900 tagspan += '<span class="tagtag">' + tag + '</span> ';
908 tagspan += '<span class="tagtag">' + tag + '</span> ';
901 }
909 }
902 }
910 }
903 if (cur[8].length) {
911 if (cur[8].length) {
904 for (var t in cur[8]) {
912 for (var t in cur[8]) {
905 var bookmark = cur[8][t];
913 var bookmark = cur[8][t];
906 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
914 tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
907 }
915 }
908 }
916 }
909 tagspan += '</span>';
917 tagspan += '</span>';
910 }
918 }
911
919
912 item = item.replace(/_TAGS/, tagspan);
920 item = item.replace(/_TAGS/, tagspan);
913 return [bg, item];
921 return [bg, item];
914
922
915 }
923 }
916
924
917 graph.render(data);
925 graph.render(data);
918
926
919 // stop hiding script -->
927 // stop hiding script -->
920 </script>
928 </script>
921
929
922 <div class="page_nav">
930 <div class="page_nav">
923 <a href="/graph/2?style=gitweb&revcount=30">less</a>
931 <a href="/graph/2?style=gitweb&revcount=30">less</a>
924 <a href="/graph/2?style=gitweb&revcount=120">more</a>
932 <a href="/graph/2?style=gitweb&revcount=120">more</a>
925 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
933 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
926 </div>
934 </div>
927
935
936 <script type="text/javascript">process_dates()</script>
928 <div class="page_footer">
937 <div class="page_footer">
929 <div class="page_footer_text">test</div>
938 <div class="page_footer_text">test</div>
930 <div class="rss_logo">
939 <div class="rss_logo">
931 <a href="/rss-log">RSS</a>
940 <a href="/rss-log">RSS</a>
932 <a href="/atom-log">Atom</a>
941 <a href="/atom-log">Atom</a>
933 </div>
942 </div>
934 <br />
943 <br />
935
944
936 </div>
945 </div>
937 </body>
946 </body>
938 </html>
947 </html>
939
948
940
949
941 capabilities
950 capabilities
942
951
943 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
952 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'; echo
944 200 Script output follows
953 200 Script output follows
945
954
946 lookup changegroupsubset branchmap pushkey known getbundle unbundlehash unbundle=HG10GZ,HG10BZ,HG10UN
955 lookup changegroupsubset branchmap pushkey known getbundle unbundlehash unbundle=HG10GZ,HG10BZ,HG10UN
947
956
948 heads
957 heads
949
958
950 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
959 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=heads'
951 200 Script output follows
960 200 Script output follows
952
961
953 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
962 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
954
963
955 branches
964 branches
956
965
957 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
966 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=branches&nodes=0000000000000000000000000000000000000000'
958 200 Script output follows
967 200 Script output follows
959
968
960 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
969 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
961
970
962 changegroup
971 changegroup
963
972
964 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
973 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=changegroup&roots=0000000000000000000000000000000000000000'
965 200 Script output follows
974 200 Script output follows
966
975
967 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)
976 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)
968 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)
977 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)
969 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3'\x859 (esc)
978 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3'\x859 (esc)
970 \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)
979 \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)
971
980
972 stream_out
981 stream_out
973
982
974 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
983 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=stream_out'
975 200 Script output follows
984 200 Script output follows
976
985
977 1
986 1
978
987
979 failing unbundle, requires POST request
988 failing unbundle, requires POST request
980
989
981 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
990 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=unbundle'
982 405 push requires POST request
991 405 push requires POST request
983
992
984 0
993 0
985 push requires POST request
994 push requires POST request
986 [1]
995 [1]
987
996
988 Static files
997 Static files
989
998
990 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
999 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/static/style.css'
991 200 Script output follows
1000 200 Script output follows
992
1001
993 a { text-decoration:none; }
1002 a { text-decoration:none; }
994 .age { white-space:nowrap; }
1003 .age { white-space:nowrap; }
995 .date { white-space:nowrap; }
1004 .date { white-space:nowrap; }
996 .indexlinks { white-space:nowrap; }
1005 .indexlinks { white-space:nowrap; }
997 .parity0 { background-color: #ddd; }
1006 .parity0 { background-color: #ddd; }
998 .parity1 { background-color: #eee; }
1007 .parity1 { background-color: #eee; }
999 .lineno { width: 60px; color: #aaa; font-size: smaller;
1008 .lineno { width: 60px; color: #aaa; font-size: smaller;
1000 text-align: right; }
1009 text-align: right; }
1001 .plusline { color: green; }
1010 .plusline { color: green; }
1002 .minusline { color: red; }
1011 .minusline { color: red; }
1003 .atline { color: purple; }
1012 .atline { color: purple; }
1004 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
1013 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
1005 .buttons a {
1014 .buttons a {
1006 background-color: #666;
1015 background-color: #666;
1007 padding: 2pt;
1016 padding: 2pt;
1008 color: white;
1017 color: white;
1009 font-family: sans;
1018 font-family: sans;
1010 font-weight: bold;
1019 font-weight: bold;
1011 }
1020 }
1012 .navigate a {
1021 .navigate a {
1013 background-color: #ccc;
1022 background-color: #ccc;
1014 padding: 2pt;
1023 padding: 2pt;
1015 font-family: sans;
1024 font-family: sans;
1016 color: black;
1025 color: black;
1017 }
1026 }
1018
1027
1019 .metatag {
1028 .metatag {
1020 background-color: #888;
1029 background-color: #888;
1021 color: white;
1030 color: white;
1022 text-align: right;
1031 text-align: right;
1023 }
1032 }
1024
1033
1025 /* Common */
1034 /* Common */
1026 pre { margin: 0; }
1035 pre { margin: 0; }
1027
1036
1028 .logo {
1037 .logo {
1029 float: right;
1038 float: right;
1030 clear: right;
1039 clear: right;
1031 }
1040 }
1032
1041
1033 /* Changelog/Filelog entries */
1042 /* Changelog/Filelog entries */
1034 .logEntry { width: 100%; }
1043 .logEntry { width: 100%; }
1035 .logEntry .age { width: 15%; }
1044 .logEntry .age { width: 15%; }
1036 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
1045 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
1037 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
1046 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
1038 .logEntry th.firstline { text-align: left; width: inherit; }
1047 .logEntry th.firstline { text-align: left; width: inherit; }
1039
1048
1040 /* Shortlog entries */
1049 /* Shortlog entries */
1041 .slogEntry { width: 100%; }
1050 .slogEntry { width: 100%; }
1042 .slogEntry .age { width: 8em; }
1051 .slogEntry .age { width: 8em; }
1043 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1052 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
1044 .slogEntry td.author { width: 15em; }
1053 .slogEntry td.author { width: 15em; }
1045
1054
1046 /* Tag entries */
1055 /* Tag entries */
1047 #tagEntries { list-style: none; margin: 0; padding: 0; }
1056 #tagEntries { list-style: none; margin: 0; padding: 0; }
1048 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1057 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
1049
1058
1050 /* Changeset entry */
1059 /* Changeset entry */
1051 #changesetEntry { }
1060 #changesetEntry { }
1052 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1061 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1053 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1062 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
1054
1063
1055 /* File diff view */
1064 /* File diff view */
1056 #filediffEntry { }
1065 #filediffEntry { }
1057 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1066 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
1058
1067
1059 /* Graph */
1068 /* Graph */
1060 div#wrapper {
1069 div#wrapper {
1061 position: relative;
1070 position: relative;
1062 margin: 0;
1071 margin: 0;
1063 padding: 0;
1072 padding: 0;
1064 }
1073 }
1065
1074
1066 canvas {
1075 canvas {
1067 position: absolute;
1076 position: absolute;
1068 z-index: 5;
1077 z-index: 5;
1069 top: -0.6em;
1078 top: -0.6em;
1070 margin: 0;
1079 margin: 0;
1071 }
1080 }
1072
1081
1073 ul#nodebgs {
1082 ul#nodebgs {
1074 list-style: none inside none;
1083 list-style: none inside none;
1075 padding: 0;
1084 padding: 0;
1076 margin: 0;
1085 margin: 0;
1077 top: -0.7em;
1086 top: -0.7em;
1078 }
1087 }
1079
1088
1080 ul#graphnodes li, ul#nodebgs li {
1089 ul#graphnodes li, ul#nodebgs li {
1081 height: 39px;
1090 height: 39px;
1082 }
1091 }
1083
1092
1084 ul#graphnodes {
1093 ul#graphnodes {
1085 position: absolute;
1094 position: absolute;
1086 z-index: 10;
1095 z-index: 10;
1087 top: -0.85em;
1096 top: -0.85em;
1088 list-style: none inside none;
1097 list-style: none inside none;
1089 padding: 0;
1098 padding: 0;
1090 }
1099 }
1091
1100
1092 ul#graphnodes li .info {
1101 ul#graphnodes li .info {
1093 display: block;
1102 display: block;
1094 font-size: 70%;
1103 font-size: 70%;
1095 position: relative;
1104 position: relative;
1096 top: -1px;
1105 top: -1px;
1097 }
1106 }
1098
1107
1099 Stop and restart with HGENCODING=cp932
1108 Stop and restart with HGENCODING=cp932
1100
1109
1101 $ "$TESTDIR/killdaemons.py"
1110 $ "$TESTDIR/killdaemons.py"
1102 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1111 $ HGENCODING=cp932 hg serve --config server.uncompressed=False -n test \
1103 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1112 > -p $HGPORT -d --pid-file=hg.pid -E errors.log
1104 $ cat hg.pid >> $DAEMON_PIDS
1113 $ cat hg.pid >> $DAEMON_PIDS
1105
1114
1106 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1115 commit message with Japanese Kanji 'Noh', which ends with '\x5c'
1107
1116
1108 $ echo foo >> foo
1117 $ echo foo >> foo
1109 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1118 $ HGENCODING=cp932 hg ci -m `python -c 'print("\x94\x5c")'`
1110
1119
1111 Graph json escape of multibyte character
1120 Graph json escape of multibyte character
1112
1121
1113 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1122 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/' \
1114 > | grep '^var data ='
1123 > | grep '^var data ='
1115 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", false], [], []], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
1124 var data = [["40b4d6888e92", [0, 1], [[0, 0, 1]], "\u80fd", "test", "1970-01-01", ["stable", true], ["tip"], ["something"]], ["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", false], [], []], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], [], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"], ["anotherthing"]]];
1116
1125
1117 ERRORS ENCOUNTERED
1126 ERRORS ENCOUNTERED
1118
1127
1119 $ cat errors.log
1128 $ cat errors.log
@@ -1,138 +1,140 b''
1 Test chains of near empty directories, terminating 3 different ways:
1 Test chains of near empty directories, terminating 3 different ways:
2 - a1: file at level 4 (deepest)
2 - a1: file at level 4 (deepest)
3 - b1: two dirs at level 3
3 - b1: two dirs at level 3
4 - e1: file at level 2
4 - e1: file at level 2
5
5
6 Set up the repo
6 Set up the repo
7
7
8 $ hg init test
8 $ hg init test
9 $ cd test
9 $ cd test
10 $ mkdir -p a1/a2/a3/a4
10 $ mkdir -p a1/a2/a3/a4
11 $ mkdir -p b1/b2/b3/b4
11 $ mkdir -p b1/b2/b3/b4
12 $ mkdir -p b1/b2/c3/c4
12 $ mkdir -p b1/b2/c3/c4
13 $ mkdir -p d1/d2/d3/d4
13 $ mkdir -p d1/d2/d3/d4
14 $ echo foo > a1/a2/a3/a4/foo
14 $ echo foo > a1/a2/a3/a4/foo
15 $ echo foo > b1/b2/b3/b4/foo
15 $ echo foo > b1/b2/b3/b4/foo
16 $ echo foo > b1/b2/c3/c4/foo
16 $ echo foo > b1/b2/c3/c4/foo
17 $ echo foo > d1/d2/d3/d4/foo
17 $ echo foo > d1/d2/d3/d4/foo
18 $ echo foo > d1/d2/foo
18 $ echo foo > d1/d2/foo
19 $ hg ci -Ama
19 $ hg ci -Ama
20 adding a1/a2/a3/a4/foo
20 adding a1/a2/a3/a4/foo
21 adding b1/b2/b3/b4/foo
21 adding b1/b2/b3/b4/foo
22 adding b1/b2/c3/c4/foo
22 adding b1/b2/c3/c4/foo
23 adding d1/d2/d3/d4/foo
23 adding d1/d2/d3/d4/foo
24 adding d1/d2/foo
24 adding d1/d2/foo
25 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
25 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
26 $ cat hg.pid >> $DAEMON_PIDS
26 $ cat hg.pid >> $DAEMON_PIDS
27
27
28 manifest with descending
28 manifest with descending
29
29
30 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file'
30 $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file'
31 200 Script output follows
31 200 Script output follows
32
32
33 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
33 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
34 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
34 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
35 <head>
35 <head>
36 <link rel="icon" href="/static/hgicon.png" type="image/png" />
36 <link rel="icon" href="/static/hgicon.png" type="image/png" />
37 <meta name="robots" content="index, nofollow" />
37 <meta name="robots" content="index, nofollow" />
38 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
38 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
39 <script type="text/javascript" src="/static/mercurial.js"></script>
39
40
40 <title>test: 9087c84a0f5d /</title>
41 <title>test: 9087c84a0f5d /</title>
41 </head>
42 </head>
42 <body>
43 <body>
43
44
44 <div class="container">
45 <div class="container">
45 <div class="menu">
46 <div class="menu">
46 <div class="logo">
47 <div class="logo">
47 <a href="http://mercurial.selenic.com/">
48 <a href="http://mercurial.selenic.com/">
48 <img src="/static/hglogo.png" alt="mercurial" /></a>
49 <img src="/static/hglogo.png" alt="mercurial" /></a>
49 </div>
50 </div>
50 <ul>
51 <ul>
51 <li><a href="/shortlog/9087c84a0f5d">log</a></li>
52 <li><a href="/shortlog/9087c84a0f5d">log</a></li>
52 <li><a href="/graph/9087c84a0f5d">graph</a></li>
53 <li><a href="/graph/9087c84a0f5d">graph</a></li>
53 <li><a href="/tags">tags</a></li>
54 <li><a href="/tags">tags</a></li>
54 <li><a href="/bookmarks">bookmarks</a></li>
55 <li><a href="/bookmarks">bookmarks</a></li>
55 <li><a href="/branches">branches</a></li>
56 <li><a href="/branches">branches</a></li>
56 </ul>
57 </ul>
57 <ul>
58 <ul>
58 <li><a href="/rev/9087c84a0f5d">changeset</a></li>
59 <li><a href="/rev/9087c84a0f5d">changeset</a></li>
59 <li class="active">browse</li>
60 <li class="active">browse</li>
60 </ul>
61 </ul>
61 <ul>
62 <ul>
62
63
63 </ul>
64 </ul>
64 <ul>
65 <ul>
65 <li><a href="/help">help</a></li>
66 <li><a href="/help">help</a></li>
66 </ul>
67 </ul>
67 </div>
68 </div>
68
69
69 <div class="main">
70 <div class="main">
70 <h2><a href="/">test</a></h2>
71 <h2><a href="/">test</a></h2>
71 <h3>directory / @ 0:9087c84a0f5d <span class="tag">tip</span> </h3>
72 <h3>directory / @ 0:9087c84a0f5d <span class="tag">tip</span> </h3>
72
73
73 <form class="search" action="/log">
74 <form class="search" action="/log">
74
75
75 <p><input name="rev" id="search1" type="text" size="30" /></p>
76 <p><input name="rev" id="search1" type="text" size="30" /></p>
76 <div id="hint">find changesets by author, revision,
77 <div id="hint">find changesets by author, revision,
77 files, or words in the commit message</div>
78 files, or words in the commit message</div>
78 </form>
79 </form>
79
80
80 <table class="bigtable">
81 <table class="bigtable">
81 <tr>
82 <tr>
82 <th class="name">name</th>
83 <th class="name">name</th>
83 <th class="size">size</th>
84 <th class="size">size</th>
84 <th class="permissions">permissions</th>
85 <th class="permissions">permissions</th>
85 </tr>
86 </tr>
86 <tr class="fileline parity0">
87 <tr class="fileline parity0">
87 <td class="name"><a href="/file/9087c84a0f5d/">[up]</a></td>
88 <td class="name"><a href="/file/9087c84a0f5d/">[up]</a></td>
88 <td class="size"></td>
89 <td class="size"></td>
89 <td class="permissions">drwxr-xr-x</td>
90 <td class="permissions">drwxr-xr-x</td>
90 </tr>
91 </tr>
91
92
92 <tr class="fileline parity1">
93 <tr class="fileline parity1">
93 <td class="name">
94 <td class="name">
94 <a href="/file/9087c84a0f5d/a1">
95 <a href="/file/9087c84a0f5d/a1">
95 <img src="/static/coal-folder.png" alt="dir."/> a1/
96 <img src="/static/coal-folder.png" alt="dir."/> a1/
96 </a>
97 </a>
97 <a href="/file/9087c84a0f5d/a1/a2/a3/a4">
98 <a href="/file/9087c84a0f5d/a1/a2/a3/a4">
98 a2/a3/a4
99 a2/a3/a4
99 </a>
100 </a>
100 </td>
101 </td>
101 <td class="size"></td>
102 <td class="size"></td>
102 <td class="permissions">drwxr-xr-x</td>
103 <td class="permissions">drwxr-xr-x</td>
103 </tr>
104 </tr>
104 <tr class="fileline parity0">
105 <tr class="fileline parity0">
105 <td class="name">
106 <td class="name">
106 <a href="/file/9087c84a0f5d/b1">
107 <a href="/file/9087c84a0f5d/b1">
107 <img src="/static/coal-folder.png" alt="dir."/> b1/
108 <img src="/static/coal-folder.png" alt="dir."/> b1/
108 </a>
109 </a>
109 <a href="/file/9087c84a0f5d/b1/b2">
110 <a href="/file/9087c84a0f5d/b1/b2">
110 b2
111 b2
111 </a>
112 </a>
112 </td>
113 </td>
113 <td class="size"></td>
114 <td class="size"></td>
114 <td class="permissions">drwxr-xr-x</td>
115 <td class="permissions">drwxr-xr-x</td>
115 </tr>
116 </tr>
116 <tr class="fileline parity1">
117 <tr class="fileline parity1">
117 <td class="name">
118 <td class="name">
118 <a href="/file/9087c84a0f5d/d1">
119 <a href="/file/9087c84a0f5d/d1">
119 <img src="/static/coal-folder.png" alt="dir."/> d1/
120 <img src="/static/coal-folder.png" alt="dir."/> d1/
120 </a>
121 </a>
121 <a href="/file/9087c84a0f5d/d1/d2">
122 <a href="/file/9087c84a0f5d/d1/d2">
122 d2
123 d2
123 </a>
124 </a>
124 </td>
125 </td>
125 <td class="size"></td>
126 <td class="size"></td>
126 <td class="permissions">drwxr-xr-x</td>
127 <td class="permissions">drwxr-xr-x</td>
127 </tr>
128 </tr>
128
129
129 </table>
130 </table>
130 </div>
131 </div>
131 </div>
132 </div>
133 <script type="text/javascript">process_dates()</script>
132
134
133
135
134 </body>
136 </body>
135 </html>
137 </html>
136
138
137
139
138 $ cat errors.log
140 $ cat errors.log
@@ -1,489 +1,497 b''
1 setting up repo
1 setting up repo
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo a > a
5 $ echo a > a
6 $ echo b > b
6 $ echo b > b
7 $ hg ci -Ama
7 $ hg ci -Ama
8 adding a
8 adding a
9 adding b
9 adding b
10
10
11 change permissions for git diffs
11 change permissions for git diffs
12
12
13 $ chmod 755 a
13 $ chmod 755 a
14 $ hg ci -Amb
14 $ hg ci -Amb
15
15
16 set up hgweb
16 set up hgweb
17
17
18 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
18 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
19 $ cat hg.pid >> $DAEMON_PIDS
19 $ cat hg.pid >> $DAEMON_PIDS
20
20
21 revision
21 revision
22
22
23 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
23 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
24 200 Script output follows
24 200 Script output follows
25
25
26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
27 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
27 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
28 <head>
28 <head>
29 <link rel="icon" href="/static/hgicon.png" type="image/png" />
29 <link rel="icon" href="/static/hgicon.png" type="image/png" />
30 <meta name="robots" content="index, nofollow" />
30 <meta name="robots" content="index, nofollow" />
31 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
31 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
32 <script type="text/javascript" src="/static/mercurial.js"></script>
32
33
33 <title>test: 0cd96de13884</title>
34 <title>test: 0cd96de13884</title>
34 </head>
35 </head>
35 <body>
36 <body>
36 <div class="container">
37 <div class="container">
37 <div class="menu">
38 <div class="menu">
38 <div class="logo">
39 <div class="logo">
39 <a href="http://mercurial.selenic.com/">
40 <a href="http://mercurial.selenic.com/">
40 <img src="/static/hglogo.png" alt="mercurial" /></a>
41 <img src="/static/hglogo.png" alt="mercurial" /></a>
41 </div>
42 </div>
42 <ul>
43 <ul>
43 <li><a href="/shortlog/0cd96de13884">log</a></li>
44 <li><a href="/shortlog/0cd96de13884">log</a></li>
44 <li><a href="/graph/0cd96de13884">graph</a></li>
45 <li><a href="/graph/0cd96de13884">graph</a></li>
45 <li><a href="/tags">tags</a></li>
46 <li><a href="/tags">tags</a></li>
46 <li><a href="/bookmarks">bookmarks</a></li>
47 <li><a href="/bookmarks">bookmarks</a></li>
47 <li><a href="/branches">branches</a></li>
48 <li><a href="/branches">branches</a></li>
48 </ul>
49 </ul>
49 <ul>
50 <ul>
50 <li class="active">changeset</li>
51 <li class="active">changeset</li>
51 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
52 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
52 <li><a href="/file/0cd96de13884">browse</a></li>
53 <li><a href="/file/0cd96de13884">browse</a></li>
53 </ul>
54 </ul>
54 <ul>
55 <ul>
55
56
56 </ul>
57 </ul>
57 <ul>
58 <ul>
58 <li><a href="/help">help</a></li>
59 <li><a href="/help">help</a></li>
59 </ul>
60 </ul>
60 </div>
61 </div>
61
62
62 <div class="main">
63 <div class="main">
63
64
64 <h2><a href="/">test</a></h2>
65 <h2><a href="/">test</a></h2>
65 <h3>changeset 0:0cd96de13884 </h3>
66 <h3>changeset 0:0cd96de13884 </h3>
66
67
67 <form class="search" action="/log">
68 <form class="search" action="/log">
68
69
69 <p><input name="rev" id="search1" type="text" size="30" /></p>
70 <p><input name="rev" id="search1" type="text" size="30" /></p>
70 <div id="hint">find changesets by author, revision,
71 <div id="hint">find changesets by author, revision,
71 files, or words in the commit message</div>
72 files, or words in the commit message</div>
72 </form>
73 </form>
73
74
74 <div class="description">a</div>
75 <div class="description">a</div>
75
76
76 <table id="changesetEntry">
77 <table id="changesetEntry">
77 <tr>
78 <tr>
78 <th class="author">author</th>
79 <th class="author">author</th>
79 <td class="author">&#116;&#101;&#115;&#116;</td>
80 <td class="author">&#116;&#101;&#115;&#116;</td>
80 </tr>
81 </tr>
81 <tr>
82 <tr>
82 <th class="date">date</th>
83 <th class="date">date</th>
83 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
84 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
84 <tr>
85 <tr>
85 <th class="author">parents</th>
86 <th class="author">parents</th>
86 <td class="author"></td>
87 <td class="author"></td>
87 </tr>
88 </tr>
88 <tr>
89 <tr>
89 <th class="author">children</th>
90 <th class="author">children</th>
90 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
91 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
91 </tr>
92 </tr>
92 <tr>
93 <tr>
93 <th class="files">files</th>
94 <th class="files">files</th>
94 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
95 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
95 </tr>
96 </tr>
96 </table>
97 </table>
97
98
98 <div class="overflow">
99 <div class="overflow">
99 <div class="sourcefirst"> line diff</div>
100 <div class="sourcefirst"> line diff</div>
100
101
101 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
103 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
103 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
104 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
104 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
105 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
105 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
106 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> <span class="minusline">--- /dev/null Thu Jan 01 00:00:00 1970 +0000
106 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
107 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
107 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
108 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
108 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
109 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
109 </span></pre></div>
110 </span></pre></div>
110 </div>
111 </div>
111
112
112 </div>
113 </div>
113 </div>
114 </div>
115 <script type="text/javascript">process_dates()</script>
114
116
115
117
116 </body>
118 </body>
117 </html>
119 </html>
118
120
119
121
120 raw revision
122 raw revision
121
123
122 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
124 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
123 200 Script output follows
125 200 Script output follows
124
126
125
127
126 # HG changeset patch
128 # HG changeset patch
127 # User test
129 # User test
128 # Date 0 0
130 # Date 0 0
129 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
131 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
130
132
131 a
133 a
132
134
133 diff -r 000000000000 -r 0cd96de13884 a
135 diff -r 000000000000 -r 0cd96de13884 a
134 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
136 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
135 +++ b/a Thu Jan 01 00:00:00 1970 +0000
137 +++ b/a Thu Jan 01 00:00:00 1970 +0000
136 @@ -0,0 +1,1 @@
138 @@ -0,0 +1,1 @@
137 +a
139 +a
138 diff -r 000000000000 -r 0cd96de13884 b
140 diff -r 000000000000 -r 0cd96de13884 b
139 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
141 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
140 +++ b/b Thu Jan 01 00:00:00 1970 +0000
142 +++ b/b Thu Jan 01 00:00:00 1970 +0000
141 @@ -0,0 +1,1 @@
143 @@ -0,0 +1,1 @@
142 +b
144 +b
143
145
144
146
145 diff removed file
147 diff removed file
146
148
147 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
149 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
148 200 Script output follows
150 200 Script output follows
149
151
150 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
152 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
151 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
153 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
152 <head>
154 <head>
153 <link rel="icon" href="/static/hgicon.png" type="image/png" />
155 <link rel="icon" href="/static/hgicon.png" type="image/png" />
154 <meta name="robots" content="index, nofollow" />
156 <meta name="robots" content="index, nofollow" />
155 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
157 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
158 <script type="text/javascript" src="/static/mercurial.js"></script>
156
159
157 <title>test: a diff</title>
160 <title>test: a diff</title>
158 </head>
161 </head>
159 <body>
162 <body>
160
163
161 <div class="container">
164 <div class="container">
162 <div class="menu">
165 <div class="menu">
163 <div class="logo">
166 <div class="logo">
164 <a href="http://mercurial.selenic.com/">
167 <a href="http://mercurial.selenic.com/">
165 <img src="/static/hglogo.png" alt="mercurial" /></a>
168 <img src="/static/hglogo.png" alt="mercurial" /></a>
166 </div>
169 </div>
167 <ul>
170 <ul>
168 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
171 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
169 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
172 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
170 <li><a href="/tags">tags</a></li>
173 <li><a href="/tags">tags</a></li>
171 <li><a href="/bookmarks">bookmarks</a></li>
174 <li><a href="/bookmarks">bookmarks</a></li>
172 <li><a href="/branches">branches</a></li>
175 <li><a href="/branches">branches</a></li>
173 </ul>
176 </ul>
174 <ul>
177 <ul>
175 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
178 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
176 <li><a href="/file/78e4ebad7cdf">browse</a></li>
179 <li><a href="/file/78e4ebad7cdf">browse</a></li>
177 </ul>
180 </ul>
178 <ul>
181 <ul>
179 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
182 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
180 <li><a href="/file/tip/a">latest</a></li>
183 <li><a href="/file/tip/a">latest</a></li>
181 <li class="active">diff</li>
184 <li class="active">diff</li>
182 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
185 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
183 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
186 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
184 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
187 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
185 </ul>
188 </ul>
186 <ul>
189 <ul>
187 <li><a href="/help">help</a></li>
190 <li><a href="/help">help</a></li>
188 </ul>
191 </ul>
189 </div>
192 </div>
190
193
191 <div class="main">
194 <div class="main">
192 <h2><a href="/">test</a></h2>
195 <h2><a href="/">test</a></h2>
193 <h3>diff a @ 1:78e4ebad7cdf</h3>
196 <h3>diff a @ 1:78e4ebad7cdf</h3>
194
197
195 <form class="search" action="/log">
198 <form class="search" action="/log">
196 <p></p>
199 <p></p>
197 <p><input name="rev" id="search1" type="text" size="30" /></p>
200 <p><input name="rev" id="search1" type="text" size="30" /></p>
198 <div id="hint">find changesets by author, revision,
201 <div id="hint">find changesets by author, revision,
199 files, or words in the commit message</div>
202 files, or words in the commit message</div>
200 </form>
203 </form>
201
204
202 <div class="description">b</div>
205 <div class="description">b</div>
203
206
204 <table id="changesetEntry">
207 <table id="changesetEntry">
205 <tr>
208 <tr>
206 <th>author</th>
209 <th>author</th>
207 <td>&#116;&#101;&#115;&#116;</td>
210 <td>&#116;&#101;&#115;&#116;</td>
208 </tr>
211 </tr>
209 <tr>
212 <tr>
210 <th>date</th>
213 <th>date</th>
211 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
214 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
212 </tr>
215 </tr>
213 <tr>
216 <tr>
214 <th>parents</th>
217 <th>parents</th>
215 <td></td>
218 <td></td>
216 </tr>
219 </tr>
217 <tr>
220 <tr>
218 <th>children</th>
221 <th>children</th>
219 <td></td>
222 <td></td>
220 </tr>
223 </tr>
221
224
222 </table>
225 </table>
223
226
224 <div class="overflow">
227 <div class="overflow">
225 <div class="sourcefirst"> line diff</div>
228 <div class="sourcefirst"> line diff</div>
226
229
227 <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
230 <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
228 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
231 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
229 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
232 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
230 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
233 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
231 </span></pre></div>
234 </span></pre></div>
232 </div>
235 </div>
233 </div>
236 </div>
234 </div>
237 </div>
235
238
239 <script type="text/javascript">process_dates()</script>
236
240
237
241
238 </body>
242 </body>
239 </html>
243 </html>
240
244
241
245
242 set up hgweb with git diffs
246 set up hgweb with git diffs
243
247
244 $ "$TESTDIR/killdaemons.py"
248 $ "$TESTDIR/killdaemons.py"
245 $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
249 $ hg serve --config 'diff.git=1' -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
246 $ cat hg.pid >> $DAEMON_PIDS
250 $ cat hg.pid >> $DAEMON_PIDS
247
251
248 revision
252 revision
249
253
250 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
254 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/0'
251 200 Script output follows
255 200 Script output follows
252
256
253 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
257 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
254 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
258 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
255 <head>
259 <head>
256 <link rel="icon" href="/static/hgicon.png" type="image/png" />
260 <link rel="icon" href="/static/hgicon.png" type="image/png" />
257 <meta name="robots" content="index, nofollow" />
261 <meta name="robots" content="index, nofollow" />
258 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
262 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
263 <script type="text/javascript" src="/static/mercurial.js"></script>
259
264
260 <title>test: 0cd96de13884</title>
265 <title>test: 0cd96de13884</title>
261 </head>
266 </head>
262 <body>
267 <body>
263 <div class="container">
268 <div class="container">
264 <div class="menu">
269 <div class="menu">
265 <div class="logo">
270 <div class="logo">
266 <a href="http://mercurial.selenic.com/">
271 <a href="http://mercurial.selenic.com/">
267 <img src="/static/hglogo.png" alt="mercurial" /></a>
272 <img src="/static/hglogo.png" alt="mercurial" /></a>
268 </div>
273 </div>
269 <ul>
274 <ul>
270 <li><a href="/shortlog/0cd96de13884">log</a></li>
275 <li><a href="/shortlog/0cd96de13884">log</a></li>
271 <li><a href="/graph/0cd96de13884">graph</a></li>
276 <li><a href="/graph/0cd96de13884">graph</a></li>
272 <li><a href="/tags">tags</a></li>
277 <li><a href="/tags">tags</a></li>
273 <li><a href="/bookmarks">bookmarks</a></li>
278 <li><a href="/bookmarks">bookmarks</a></li>
274 <li><a href="/branches">branches</a></li>
279 <li><a href="/branches">branches</a></li>
275 </ul>
280 </ul>
276 <ul>
281 <ul>
277 <li class="active">changeset</li>
282 <li class="active">changeset</li>
278 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
283 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
279 <li><a href="/file/0cd96de13884">browse</a></li>
284 <li><a href="/file/0cd96de13884">browse</a></li>
280 </ul>
285 </ul>
281 <ul>
286 <ul>
282
287
283 </ul>
288 </ul>
284 <ul>
289 <ul>
285 <li><a href="/help">help</a></li>
290 <li><a href="/help">help</a></li>
286 </ul>
291 </ul>
287 </div>
292 </div>
288
293
289 <div class="main">
294 <div class="main">
290
295
291 <h2><a href="/">test</a></h2>
296 <h2><a href="/">test</a></h2>
292 <h3>changeset 0:0cd96de13884 </h3>
297 <h3>changeset 0:0cd96de13884 </h3>
293
298
294 <form class="search" action="/log">
299 <form class="search" action="/log">
295
300
296 <p><input name="rev" id="search1" type="text" size="30" /></p>
301 <p><input name="rev" id="search1" type="text" size="30" /></p>
297 <div id="hint">find changesets by author, revision,
302 <div id="hint">find changesets by author, revision,
298 files, or words in the commit message</div>
303 files, or words in the commit message</div>
299 </form>
304 </form>
300
305
301 <div class="description">a</div>
306 <div class="description">a</div>
302
307
303 <table id="changesetEntry">
308 <table id="changesetEntry">
304 <tr>
309 <tr>
305 <th class="author">author</th>
310 <th class="author">author</th>
306 <td class="author">&#116;&#101;&#115;&#116;</td>
311 <td class="author">&#116;&#101;&#115;&#116;</td>
307 </tr>
312 </tr>
308 <tr>
313 <tr>
309 <th class="date">date</th>
314 <th class="date">date</th>
310 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
315 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
311 <tr>
316 <tr>
312 <th class="author">parents</th>
317 <th class="author">parents</th>
313 <td class="author"></td>
318 <td class="author"></td>
314 </tr>
319 </tr>
315 <tr>
320 <tr>
316 <th class="author">children</th>
321 <th class="author">children</th>
317 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
322 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
318 </tr>
323 </tr>
319 <tr>
324 <tr>
320 <th class="files">files</th>
325 <th class="files">files</th>
321 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
326 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
322 </tr>
327 </tr>
323 </table>
328 </table>
324
329
325 <div class="overflow">
330 <div class="overflow">
326 <div class="sourcefirst"> line diff</div>
331 <div class="sourcefirst"> line diff</div>
327
332
328 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
333 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
329 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
334 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
330 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
335 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
331 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
336 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
332 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
337 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
333 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
338 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
334 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
339 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
335 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
340 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
336 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
341 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
337 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
342 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
338 </span></pre></div>
343 </span></pre></div>
339 </div>
344 </div>
340
345
341 </div>
346 </div>
342 </div>
347 </div>
348 <script type="text/javascript">process_dates()</script>
343
349
344
350
345 </body>
351 </body>
346 </html>
352 </html>
347
353
348
354
349 revision
355 revision
350
356
351 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
357 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/raw-rev/0'
352 200 Script output follows
358 200 Script output follows
353
359
354
360
355 # HG changeset patch
361 # HG changeset patch
356 # User test
362 # User test
357 # Date 0 0
363 # Date 0 0
358 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
364 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
359
365
360 a
366 a
361
367
362 diff --git a/a b/a
368 diff --git a/a b/a
363 new file mode 100644
369 new file mode 100644
364 --- /dev/null
370 --- /dev/null
365 +++ b/a
371 +++ b/a
366 @@ -0,0 +1,1 @@
372 @@ -0,0 +1,1 @@
367 +a
373 +a
368 diff --git a/b b/b
374 diff --git a/b b/b
369 new file mode 100644
375 new file mode 100644
370 --- /dev/null
376 --- /dev/null
371 +++ b/b
377 +++ b/b
372 @@ -0,0 +1,1 @@
378 @@ -0,0 +1,1 @@
373 +b
379 +b
374
380
375
381
376 diff removed file
382 diff removed file
377
383
378 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
384 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
379 200 Script output follows
385 200 Script output follows
380
386
381 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
387 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
382 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
388 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
383 <head>
389 <head>
384 <link rel="icon" href="/static/hgicon.png" type="image/png" />
390 <link rel="icon" href="/static/hgicon.png" type="image/png" />
385 <meta name="robots" content="index, nofollow" />
391 <meta name="robots" content="index, nofollow" />
386 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
392 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
393 <script type="text/javascript" src="/static/mercurial.js"></script>
387
394
388 <title>test: a diff</title>
395 <title>test: a diff</title>
389 </head>
396 </head>
390 <body>
397 <body>
391
398
392 <div class="container">
399 <div class="container">
393 <div class="menu">
400 <div class="menu">
394 <div class="logo">
401 <div class="logo">
395 <a href="http://mercurial.selenic.com/">
402 <a href="http://mercurial.selenic.com/">
396 <img src="/static/hglogo.png" alt="mercurial" /></a>
403 <img src="/static/hglogo.png" alt="mercurial" /></a>
397 </div>
404 </div>
398 <ul>
405 <ul>
399 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
406 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
400 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
407 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
401 <li><a href="/tags">tags</a></li>
408 <li><a href="/tags">tags</a></li>
402 <li><a href="/bookmarks">bookmarks</a></li>
409 <li><a href="/bookmarks">bookmarks</a></li>
403 <li><a href="/branches">branches</a></li>
410 <li><a href="/branches">branches</a></li>
404 </ul>
411 </ul>
405 <ul>
412 <ul>
406 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
413 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
407 <li><a href="/file/78e4ebad7cdf">browse</a></li>
414 <li><a href="/file/78e4ebad7cdf">browse</a></li>
408 </ul>
415 </ul>
409 <ul>
416 <ul>
410 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
417 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
411 <li><a href="/file/tip/a">latest</a></li>
418 <li><a href="/file/tip/a">latest</a></li>
412 <li class="active">diff</li>
419 <li class="active">diff</li>
413 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
420 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
414 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
421 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
415 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
422 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
416 </ul>
423 </ul>
417 <ul>
424 <ul>
418 <li><a href="/help">help</a></li>
425 <li><a href="/help">help</a></li>
419 </ul>
426 </ul>
420 </div>
427 </div>
421
428
422 <div class="main">
429 <div class="main">
423 <h2><a href="/">test</a></h2>
430 <h2><a href="/">test</a></h2>
424 <h3>diff a @ 1:78e4ebad7cdf</h3>
431 <h3>diff a @ 1:78e4ebad7cdf</h3>
425
432
426 <form class="search" action="/log">
433 <form class="search" action="/log">
427 <p></p>
434 <p></p>
428 <p><input name="rev" id="search1" type="text" size="30" /></p>
435 <p><input name="rev" id="search1" type="text" size="30" /></p>
429 <div id="hint">find changesets by author, revision,
436 <div id="hint">find changesets by author, revision,
430 files, or words in the commit message</div>
437 files, or words in the commit message</div>
431 </form>
438 </form>
432
439
433 <div class="description">b</div>
440 <div class="description">b</div>
434
441
435 <table id="changesetEntry">
442 <table id="changesetEntry">
436 <tr>
443 <tr>
437 <th>author</th>
444 <th>author</th>
438 <td>&#116;&#101;&#115;&#116;</td>
445 <td>&#116;&#101;&#115;&#116;</td>
439 </tr>
446 </tr>
440 <tr>
447 <tr>
441 <th>date</th>
448 <th>date</th>
442 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
449 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
443 </tr>
450 </tr>
444 <tr>
451 <tr>
445 <th>parents</th>
452 <th>parents</th>
446 <td></td>
453 <td></td>
447 </tr>
454 </tr>
448 <tr>
455 <tr>
449 <th>children</th>
456 <th>children</th>
450 <td></td>
457 <td></td>
451 </tr>
458 </tr>
452
459
453 </table>
460 </table>
454
461
455 <div class="overflow">
462 <div class="overflow">
456 <div class="sourcefirst"> line diff</div>
463 <div class="sourcefirst"> line diff</div>
457
464
458 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
465 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
459 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
466 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
460 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
467 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
461 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
468 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
462 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
469 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
463 </span></pre></div>
470 </span></pre></div>
464 </div>
471 </div>
465 </div>
472 </div>
466 </div>
473 </div>
467
474
475 <script type="text/javascript">process_dates()</script>
468
476
469
477
470 </body>
478 </body>
471 </html>
479 </html>
472
480
473 $ cd ..
481 $ cd ..
474
482
475 test import rev as raw-rev
483 test import rev as raw-rev
476
484
477 $ hg clone -r0 test test1
485 $ hg clone -r0 test test1
478 adding changesets
486 adding changesets
479 adding manifests
487 adding manifests
480 adding file changes
488 adding file changes
481 added 1 changesets with 2 changes to 2 files
489 added 1 changesets with 2 changes to 2 files
482 updating to branch default
490 updating to branch default
483 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
491 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
484 $ cd test1
492 $ cd test1
485 $ hg import -q --exact http://localhost:$HGPORT/rev/1
493 $ hg import -q --exact http://localhost:$HGPORT/rev/1
486
494
487 errors
495 errors
488
496
489 $ cat ../test/errors.log
497 $ cat ../test/errors.log
@@ -1,398 +1,405 b''
1 Some tests for hgweb in an empty repository
1 Some tests for hgweb in an empty repository
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
5 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
6 $ cat hg.pid >> $DAEMON_PIDS
6 $ cat hg.pid >> $DAEMON_PIDS
7 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/shortlog')
7 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/shortlog')
8 200 Script output follows
8 200 Script output follows
9
9
10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
11 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
11 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
12 <head>
12 <head>
13 <link rel="icon" href="/static/hgicon.png" type="image/png" />
13 <link rel="icon" href="/static/hgicon.png" type="image/png" />
14 <meta name="robots" content="index, nofollow" />
14 <meta name="robots" content="index, nofollow" />
15 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
15 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
16 <script type="text/javascript" src="/static/mercurial.js"></script>
16
17
17 <title>test: log</title>
18 <title>test: log</title>
18 <link rel="alternate" type="application/atom+xml"
19 <link rel="alternate" type="application/atom+xml"
19 href="/atom-log" title="Atom feed for test" />
20 href="/atom-log" title="Atom feed for test" />
20 <link rel="alternate" type="application/rss+xml"
21 <link rel="alternate" type="application/rss+xml"
21 href="/rss-log" title="RSS feed for test" />
22 href="/rss-log" title="RSS feed for test" />
22 </head>
23 </head>
23 <body>
24 <body>
24
25
25 <div class="container">
26 <div class="container">
26 <div class="menu">
27 <div class="menu">
27 <div class="logo">
28 <div class="logo">
28 <a href="http://mercurial.selenic.com/">
29 <a href="http://mercurial.selenic.com/">
29 <img src="/static/hglogo.png" alt="mercurial" /></a>
30 <img src="/static/hglogo.png" alt="mercurial" /></a>
30 </div>
31 </div>
31 <ul>
32 <ul>
32 <li class="active">log</li>
33 <li class="active">log</li>
33 <li><a href="/graph/000000000000">graph</a></li>
34 <li><a href="/graph/000000000000">graph</a></li>
34 <li><a href="/tags">tags</a></li>
35 <li><a href="/tags">tags</a></li>
35 <li><a href="/bookmarks">bookmarks</a></li>
36 <li><a href="/bookmarks">bookmarks</a></li>
36 <li><a href="/branches">branches</a></li>
37 <li><a href="/branches">branches</a></li>
37 </ul>
38 </ul>
38 <ul>
39 <ul>
39 <li><a href="/rev/000000000000">changeset</a></li>
40 <li><a href="/rev/000000000000">changeset</a></li>
40 <li><a href="/file/000000000000">browse</a></li>
41 <li><a href="/file/000000000000">browse</a></li>
41 </ul>
42 </ul>
42 <ul>
43 <ul>
43
44
44 </ul>
45 </ul>
45 <ul>
46 <ul>
46 <li><a href="/help">help</a></li>
47 <li><a href="/help">help</a></li>
47 </ul>
48 </ul>
48 </div>
49 </div>
49
50
50 <div class="main">
51 <div class="main">
51 <h2><a href="/">test</a></h2>
52 <h2><a href="/">test</a></h2>
52 <h3>log</h3>
53 <h3>log</h3>
53
54
54 <form class="search" action="/log">
55 <form class="search" action="/log">
55
56
56 <p><input name="rev" id="search1" type="text" size="30" /></p>
57 <p><input name="rev" id="search1" type="text" size="30" /></p>
57 <div id="hint">find changesets by author, revision,
58 <div id="hint">find changesets by author, revision,
58 files, or words in the commit message</div>
59 files, or words in the commit message</div>
59 </form>
60 </form>
60
61
61 <div class="navigate">
62 <div class="navigate">
62 <a href="/shortlog/-1?revcount=30">less</a>
63 <a href="/shortlog/-1?revcount=30">less</a>
63 <a href="/shortlog/-1?revcount=120">more</a>
64 <a href="/shortlog/-1?revcount=120">more</a>
64 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
65 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
65 </div>
66 </div>
66
67
67 <table class="bigtable">
68 <table class="bigtable">
68 <tr>
69 <tr>
69 <th class="age">age</th>
70 <th class="age">age</th>
70 <th class="author">author</th>
71 <th class="author">author</th>
71 <th class="description">description</th>
72 <th class="description">description</th>
72 </tr>
73 </tr>
73
74
74 </table>
75 </table>
75
76
76 <div class="navigate">
77 <div class="navigate">
77 <a href="/shortlog/-1?revcount=30">less</a>
78 <a href="/shortlog/-1?revcount=30">less</a>
78 <a href="/shortlog/-1?revcount=120">more</a>
79 <a href="/shortlog/-1?revcount=120">more</a>
79 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
80 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
80 </div>
81 </div>
81
82
82 </div>
83 </div>
83 </div>
84 </div>
84
85
86 <script type="text/javascript">process_dates()</script>
85
87
86
88
87 </body>
89 </body>
88 </html>
90 </html>
89
91
90 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log')
92 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log')
91 200 Script output follows
93 200 Script output follows
92
94
93 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
95 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
94 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
96 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
95 <head>
97 <head>
96 <link rel="icon" href="/static/hgicon.png" type="image/png" />
98 <link rel="icon" href="/static/hgicon.png" type="image/png" />
97 <meta name="robots" content="index, nofollow" />
99 <meta name="robots" content="index, nofollow" />
98 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
100 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
101 <script type="text/javascript" src="/static/mercurial.js"></script>
99
102
100 <title>test: log</title>
103 <title>test: log</title>
101 <link rel="alternate" type="application/atom+xml"
104 <link rel="alternate" type="application/atom+xml"
102 href="/atom-log" title="Atom feed for test" />
105 href="/atom-log" title="Atom feed for test" />
103 <link rel="alternate" type="application/rss+xml"
106 <link rel="alternate" type="application/rss+xml"
104 href="/rss-log" title="RSS feed for test" />
107 href="/rss-log" title="RSS feed for test" />
105 </head>
108 </head>
106 <body>
109 <body>
107
110
108 <div class="container">
111 <div class="container">
109 <div class="menu">
112 <div class="menu">
110 <div class="logo">
113 <div class="logo">
111 <a href="http://mercurial.selenic.com/">
114 <a href="http://mercurial.selenic.com/">
112 <img src="/static/hglogo.png" alt="mercurial" /></a>
115 <img src="/static/hglogo.png" alt="mercurial" /></a>
113 </div>
116 </div>
114 <ul>
117 <ul>
115 <li class="active">log</li>
118 <li class="active">log</li>
116 <li><a href="/graph/000000000000">graph</a></li>
119 <li><a href="/graph/000000000000">graph</a></li>
117 <li><a href="/tags">tags</a></li>
120 <li><a href="/tags">tags</a></li>
118 <li><a href="/bookmarks">bookmarks</a></li>
121 <li><a href="/bookmarks">bookmarks</a></li>
119 <li><a href="/branches">branches</a></li>
122 <li><a href="/branches">branches</a></li>
120 </ul>
123 </ul>
121 <ul>
124 <ul>
122 <li><a href="/rev/000000000000">changeset</a></li>
125 <li><a href="/rev/000000000000">changeset</a></li>
123 <li><a href="/file/000000000000">browse</a></li>
126 <li><a href="/file/000000000000">browse</a></li>
124 </ul>
127 </ul>
125 <ul>
128 <ul>
126
129
127 </ul>
130 </ul>
128 <ul>
131 <ul>
129 <li><a href="/help">help</a></li>
132 <li><a href="/help">help</a></li>
130 </ul>
133 </ul>
131 </div>
134 </div>
132
135
133 <div class="main">
136 <div class="main">
134 <h2><a href="/">test</a></h2>
137 <h2><a href="/">test</a></h2>
135 <h3>log</h3>
138 <h3>log</h3>
136
139
137 <form class="search" action="/log">
140 <form class="search" action="/log">
138
141
139 <p><input name="rev" id="search1" type="text" size="30" /></p>
142 <p><input name="rev" id="search1" type="text" size="30" /></p>
140 <div id="hint">find changesets by author, revision,
143 <div id="hint">find changesets by author, revision,
141 files, or words in the commit message</div>
144 files, or words in the commit message</div>
142 </form>
145 </form>
143
146
144 <div class="navigate">
147 <div class="navigate">
145 <a href="/shortlog/-1?revcount=5">less</a>
148 <a href="/shortlog/-1?revcount=5">less</a>
146 <a href="/shortlog/-1?revcount=20">more</a>
149 <a href="/shortlog/-1?revcount=20">more</a>
147 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
150 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
148 </div>
151 </div>
149
152
150 <table class="bigtable">
153 <table class="bigtable">
151 <tr>
154 <tr>
152 <th class="age">age</th>
155 <th class="age">age</th>
153 <th class="author">author</th>
156 <th class="author">author</th>
154 <th class="description">description</th>
157 <th class="description">description</th>
155 </tr>
158 </tr>
156
159
157 </table>
160 </table>
158
161
159 <div class="navigate">
162 <div class="navigate">
160 <a href="/shortlog/-1?revcount=5">less</a>
163 <a href="/shortlog/-1?revcount=5">less</a>
161 <a href="/shortlog/-1?revcount=20">more</a>
164 <a href="/shortlog/-1?revcount=20">more</a>
162 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
165 | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a>
163 </div>
166 </div>
164
167
165 </div>
168 </div>
166 </div>
169 </div>
167
170
171 <script type="text/javascript">process_dates()</script>
168
172
169
173
170 </body>
174 </body>
171 </html>
175 </html>
172
176
173 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/graph')
177 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/graph')
174 200 Script output follows
178 200 Script output follows
175
179
176 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
180 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
177 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
181 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
178 <head>
182 <head>
179 <link rel="icon" href="/static/hgicon.png" type="image/png" />
183 <link rel="icon" href="/static/hgicon.png" type="image/png" />
180 <meta name="robots" content="index, nofollow" />
184 <meta name="robots" content="index, nofollow" />
181 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
185 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
186 <script type="text/javascript" src="/static/mercurial.js"></script>
182
187
183 <title>test: revision graph</title>
188 <title>test: revision graph</title>
184 <link rel="alternate" type="application/atom+xml"
189 <link rel="alternate" type="application/atom+xml"
185 href="/atom-log" title="Atom feed for test: log" />
190 href="/atom-log" title="Atom feed for test: log" />
186 <link rel="alternate" type="application/rss+xml"
191 <link rel="alternate" type="application/rss+xml"
187 href="/rss-log" title="RSS feed for test: log" />
192 href="/rss-log" title="RSS feed for test: log" />
188 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
193 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
189 </head>
194 </head>
190 <body>
195 <body>
191
196
192 <div class="container">
197 <div class="container">
193 <div class="menu">
198 <div class="menu">
194 <div class="logo">
199 <div class="logo">
195 <a href="http://mercurial.selenic.com/">
200 <a href="http://mercurial.selenic.com/">
196 <img src="/static/hglogo.png" alt="mercurial" /></a>
201 <img src="/static/hglogo.png" alt="mercurial" /></a>
197 </div>
202 </div>
198 <ul>
203 <ul>
199 <li><a href="/shortlog/000000000000">log</a></li>
204 <li><a href="/shortlog/000000000000">log</a></li>
200 <li class="active">graph</li>
205 <li class="active">graph</li>
201 <li><a href="/tags">tags</a></li>
206 <li><a href="/tags">tags</a></li>
202 <li><a href="/bookmarks">bookmarks</a></li>
207 <li><a href="/bookmarks">bookmarks</a></li>
203 <li><a href="/branches">branches</a></li>
208 <li><a href="/branches">branches</a></li>
204 </ul>
209 </ul>
205 <ul>
210 <ul>
206 <li><a href="/rev/000000000000">changeset</a></li>
211 <li><a href="/rev/000000000000">changeset</a></li>
207 <li><a href="/file/000000000000">browse</a></li>
212 <li><a href="/file/000000000000">browse</a></li>
208 </ul>
213 </ul>
209 <ul>
214 <ul>
210 <li><a href="/help">help</a></li>
215 <li><a href="/help">help</a></li>
211 </ul>
216 </ul>
212 </div>
217 </div>
213
218
214 <div class="main">
219 <div class="main">
215 <h2><a href="/">test</a></h2>
220 <h2><a href="/">test</a></h2>
216 <h3>graph</h3>
221 <h3>graph</h3>
217
222
218 <form class="search" action="/log">
223 <form class="search" action="/log">
219
224
220 <p><input name="rev" id="search1" type="text" size="30" /></p>
225 <p><input name="rev" id="search1" type="text" size="30" /></p>
221 <div id="hint">find changesets by author, revision,
226 <div id="hint">find changesets by author, revision,
222 files, or words in the commit message</div>
227 files, or words in the commit message</div>
223 </form>
228 </form>
224
229
225 <div class="navigate">
230 <div class="navigate">
226 <a href="/graph/-1?revcount=30">less</a>
231 <a href="/graph/-1?revcount=30">less</a>
227 <a href="/graph/-1?revcount=120">more</a>
232 <a href="/graph/-1?revcount=120">more</a>
228 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
233 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
229 </div>
234 </div>
230
235
231 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
236 <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
232
237
233 <div id="wrapper">
238 <div id="wrapper">
234 <ul id="nodebgs"></ul>
239 <ul id="nodebgs"></ul>
235 <canvas id="graph" width="480" height="12"></canvas>
240 <canvas id="graph" width="480" height="12"></canvas>
236 <ul id="graphnodes"></ul>
241 <ul id="graphnodes"></ul>
237 </div>
242 </div>
238
243
239 <script type="text/javascript" src="/static/graph.js"></script>
240 <script type="text/javascript">
244 <script type="text/javascript">
241 <!-- hide script content
245 <!-- hide script content
242
246
243 var data = [];
247 var data = [];
244 var graph = new Graph();
248 var graph = new Graph();
245 graph.scale(39);
249 graph.scale(39);
246
250
247 graph.edge = function(x0, y0, x1, y1, color) {
251 graph.edge = function(x0, y0, x1, y1, color) {
248
252
249 this.setColor(color, 0.0, 0.65);
253 this.setColor(color, 0.0, 0.65);
250 this.ctx.beginPath();
254 this.ctx.beginPath();
251 this.ctx.moveTo(x0, y0);
255 this.ctx.moveTo(x0, y0);
252 this.ctx.lineTo(x1, y1);
256 this.ctx.lineTo(x1, y1);
253 this.ctx.stroke();
257 this.ctx.stroke();
254
258
255 }
259 }
256
260
257 var revlink = '<li style="_STYLE"><span class="desc">';
261 var revlink = '<li style="_STYLE"><span class="desc">';
258 revlink += '<a href="/rev/_NODEID" title="_NODEID">_DESC</a>';
262 revlink += '<a href="/rev/_NODEID" title="_NODEID">_DESC</a>';
259 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
263 revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';
260
264
261 graph.vertex = function(x, y, color, parity, cur) {
265 graph.vertex = function(x, y, color, parity, cur) {
262
266
263 this.ctx.beginPath();
267 this.ctx.beginPath();
264 color = this.setColor(color, 0.25, 0.75);
268 color = this.setColor(color, 0.25, 0.75);
265 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
269 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
266 this.ctx.fill();
270 this.ctx.fill();
267
271
268 var bg = '<li class="bg parity' + parity + '"></li>';
272 var bg = '<li class="bg parity' + parity + '"></li>';
269 var left = (this.columns + 1) * this.bg_height;
273 var left = (this.columns + 1) * this.bg_height;
270 var nstyle = 'padding-left: ' + left + 'px;';
274 var nstyle = 'padding-left: ' + left + 'px;';
271 var item = revlink.replace(/_STYLE/, nstyle);
275 var item = revlink.replace(/_STYLE/, nstyle);
272 item = item.replace(/_PARITY/, 'parity' + parity);
276 item = item.replace(/_PARITY/, 'parity' + parity);
273 item = item.replace(/_NODEID/, cur[0]);
277 item = item.replace(/_NODEID/, cur[0]);
274 item = item.replace(/_NODEID/, cur[0]);
278 item = item.replace(/_NODEID/, cur[0]);
275 item = item.replace(/_DESC/, cur[3]);
279 item = item.replace(/_DESC/, cur[3]);
276 item = item.replace(/_USER/, cur[4]);
280 item = item.replace(/_USER/, cur[4]);
277 item = item.replace(/_DATE/, cur[5]);
281 item = item.replace(/_DATE/, cur[5]);
278
282
279 var tagspan = '';
283 var tagspan = '';
280 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
284 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
281 tagspan = '<span class="logtags">';
285 tagspan = '<span class="logtags">';
282 if (cur[6][1]) {
286 if (cur[6][1]) {
283 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
287 tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
284 tagspan += cur[6][0] + '</span> ';
288 tagspan += cur[6][0] + '</span> ';
285 } else if (!cur[6][1] && cur[6][0] != 'default') {
289 } else if (!cur[6][1] && cur[6][0] != 'default') {
286 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
290 tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
287 tagspan += cur[6][0] + '</span> ';
291 tagspan += cur[6][0] + '</span> ';
288 }
292 }
289 if (cur[7].length) {
293 if (cur[7].length) {
290 for (var t in cur[7]) {
294 for (var t in cur[7]) {
291 var tag = cur[7][t];
295 var tag = cur[7][t];
292 tagspan += '<span class="tag">' + tag + '</span> ';
296 tagspan += '<span class="tag">' + tag + '</span> ';
293 }
297 }
294 }
298 }
295 if (cur[8].length) {
299 if (cur[8].length) {
296 for (var b in cur[8]) {
300 for (var b in cur[8]) {
297 var bookmark = cur[8][b];
301 var bookmark = cur[8][b];
298 tagspan += '<span class="tag">' + bookmark + '</span> ';
302 tagspan += '<span class="tag">' + bookmark + '</span> ';
299 }
303 }
300 }
304 }
301 tagspan += '</span>';
305 tagspan += '</span>';
302 }
306 }
303
307
304 item = item.replace(/_TAGS/, tagspan);
308 item = item.replace(/_TAGS/, tagspan);
305 return [bg, item];
309 return [bg, item];
306
310
307 }
311 }
308
312
309 graph.render(data);
313 graph.render(data);
310
314
311 // stop hiding script -->
315 // stop hiding script -->
312 </script>
316 </script>
313
317
314 <div class="navigate">
318 <div class="navigate">
315 <a href="/graph/-1?revcount=30">less</a>
319 <a href="/graph/-1?revcount=30">less</a>
316 <a href="/graph/-1?revcount=120">more</a>
320 <a href="/graph/-1?revcount=120">more</a>
317 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
321 | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a>
318 </div>
322 </div>
319
323
320 </div>
324 </div>
321 </div>
325 </div>
322
326
327 <script type="text/javascript">process_dates()</script>
323
328
324
329
325 </body>
330 </body>
326 </html>
331 </html>
327
332
328 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file')
333 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file')
329 200 Script output follows
334 200 Script output follows
330
335
331 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
336 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
332 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
337 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
333 <head>
338 <head>
334 <link rel="icon" href="/static/hgicon.png" type="image/png" />
339 <link rel="icon" href="/static/hgicon.png" type="image/png" />
335 <meta name="robots" content="index, nofollow" />
340 <meta name="robots" content="index, nofollow" />
336 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
341 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
342 <script type="text/javascript" src="/static/mercurial.js"></script>
337
343
338 <title>test: 000000000000 /</title>
344 <title>test: 000000000000 /</title>
339 </head>
345 </head>
340 <body>
346 <body>
341
347
342 <div class="container">
348 <div class="container">
343 <div class="menu">
349 <div class="menu">
344 <div class="logo">
350 <div class="logo">
345 <a href="http://mercurial.selenic.com/">
351 <a href="http://mercurial.selenic.com/">
346 <img src="/static/hglogo.png" alt="mercurial" /></a>
352 <img src="/static/hglogo.png" alt="mercurial" /></a>
347 </div>
353 </div>
348 <ul>
354 <ul>
349 <li><a href="/shortlog/000000000000">log</a></li>
355 <li><a href="/shortlog/000000000000">log</a></li>
350 <li><a href="/graph/000000000000">graph</a></li>
356 <li><a href="/graph/000000000000">graph</a></li>
351 <li><a href="/tags">tags</a></li>
357 <li><a href="/tags">tags</a></li>
352 <li><a href="/bookmarks">bookmarks</a></li>
358 <li><a href="/bookmarks">bookmarks</a></li>
353 <li><a href="/branches">branches</a></li>
359 <li><a href="/branches">branches</a></li>
354 </ul>
360 </ul>
355 <ul>
361 <ul>
356 <li><a href="/rev/000000000000">changeset</a></li>
362 <li><a href="/rev/000000000000">changeset</a></li>
357 <li class="active">browse</li>
363 <li class="active">browse</li>
358 </ul>
364 </ul>
359 <ul>
365 <ul>
360
366
361 </ul>
367 </ul>
362 <ul>
368 <ul>
363 <li><a href="/help">help</a></li>
369 <li><a href="/help">help</a></li>
364 </ul>
370 </ul>
365 </div>
371 </div>
366
372
367 <div class="main">
373 <div class="main">
368 <h2><a href="/">test</a></h2>
374 <h2><a href="/">test</a></h2>
369 <h3>directory / @ -1:000000000000 <span class="tag">tip</span> </h3>
375 <h3>directory / @ -1:000000000000 <span class="tag">tip</span> </h3>
370
376
371 <form class="search" action="/log">
377 <form class="search" action="/log">
372
378
373 <p><input name="rev" id="search1" type="text" size="30" /></p>
379 <p><input name="rev" id="search1" type="text" size="30" /></p>
374 <div id="hint">find changesets by author, revision,
380 <div id="hint">find changesets by author, revision,
375 files, or words in the commit message</div>
381 files, or words in the commit message</div>
376 </form>
382 </form>
377
383
378 <table class="bigtable">
384 <table class="bigtable">
379 <tr>
385 <tr>
380 <th class="name">name</th>
386 <th class="name">name</th>
381 <th class="size">size</th>
387 <th class="size">size</th>
382 <th class="permissions">permissions</th>
388 <th class="permissions">permissions</th>
383 </tr>
389 </tr>
384 <tr class="fileline parity0">
390 <tr class="fileline parity0">
385 <td class="name"><a href="/file/000000000000/">[up]</a></td>
391 <td class="name"><a href="/file/000000000000/">[up]</a></td>
386 <td class="size"></td>
392 <td class="size"></td>
387 <td class="permissions">drwxr-xr-x</td>
393 <td class="permissions">drwxr-xr-x</td>
388 </tr>
394 </tr>
389
395
390
396
391 </table>
397 </table>
392 </div>
398 </div>
393 </div>
399 </div>
400 <script type="text/javascript">process_dates()</script>
394
401
395
402
396 </body>
403 </body>
397 </html>
404 </html>
398
405
@@ -1,744 +1,756 b''
1
1
2 $ hg init test
2 $ hg init test
3 $ cd test
3 $ cd test
4 $ echo b > b
4 $ echo b > b
5 $ hg ci -Am "b"
5 $ hg ci -Am "b"
6 adding b
6 adding b
7 $ echo a > a
7 $ echo a > a
8 $ hg ci -Am "first a"
8 $ hg ci -Am "first a"
9 adding a
9 adding a
10 $ hg rm a
10 $ hg rm a
11 $ hg ci -m "del a"
11 $ hg ci -m "del a"
12 $ echo b > a
12 $ echo b > a
13 $ hg ci -Am "second a"
13 $ hg ci -Am "second a"
14 adding a
14 adding a
15 $ hg rm a
15 $ hg rm a
16 $ hg ci -m "del2 a"
16 $ hg ci -m "del2 a"
17 $ hg mv b c
17 $ hg mv b c
18 $ hg ci -m "mv b"
18 $ hg ci -m "mv b"
19 $ echo c >> c
19 $ echo c >> c
20 $ hg ci -m "change c"
20 $ hg ci -m "change c"
21 $ hg log -p
21 $ hg log -p
22 changeset: 6:b7682196df1c
22 changeset: 6:b7682196df1c
23 tag: tip
23 tag: tip
24 user: test
24 user: test
25 date: Thu Jan 01 00:00:00 1970 +0000
25 date: Thu Jan 01 00:00:00 1970 +0000
26 summary: change c
26 summary: change c
27
27
28 diff -r 1a6696706df2 -r b7682196df1c c
28 diff -r 1a6696706df2 -r b7682196df1c c
29 --- a/c Thu Jan 01 00:00:00 1970 +0000
29 --- a/c Thu Jan 01 00:00:00 1970 +0000
30 +++ b/c Thu Jan 01 00:00:00 1970 +0000
30 +++ b/c Thu Jan 01 00:00:00 1970 +0000
31 @@ -1,1 +1,2 @@
31 @@ -1,1 +1,2 @@
32 b
32 b
33 +c
33 +c
34
34
35 changeset: 5:1a6696706df2
35 changeset: 5:1a6696706df2
36 user: test
36 user: test
37 date: Thu Jan 01 00:00:00 1970 +0000
37 date: Thu Jan 01 00:00:00 1970 +0000
38 summary: mv b
38 summary: mv b
39
39
40 diff -r 52e848cdcd88 -r 1a6696706df2 b
40 diff -r 52e848cdcd88 -r 1a6696706df2 b
41 --- a/b Thu Jan 01 00:00:00 1970 +0000
41 --- a/b Thu Jan 01 00:00:00 1970 +0000
42 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
42 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
43 @@ -1,1 +0,0 @@
43 @@ -1,1 +0,0 @@
44 -b
44 -b
45 diff -r 52e848cdcd88 -r 1a6696706df2 c
45 diff -r 52e848cdcd88 -r 1a6696706df2 c
46 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
46 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
47 +++ b/c Thu Jan 01 00:00:00 1970 +0000
47 +++ b/c Thu Jan 01 00:00:00 1970 +0000
48 @@ -0,0 +1,1 @@
48 @@ -0,0 +1,1 @@
49 +b
49 +b
50
50
51 changeset: 4:52e848cdcd88
51 changeset: 4:52e848cdcd88
52 user: test
52 user: test
53 date: Thu Jan 01 00:00:00 1970 +0000
53 date: Thu Jan 01 00:00:00 1970 +0000
54 summary: del2 a
54 summary: del2 a
55
55
56 diff -r 01de2d66a28d -r 52e848cdcd88 a
56 diff -r 01de2d66a28d -r 52e848cdcd88 a
57 --- a/a Thu Jan 01 00:00:00 1970 +0000
57 --- a/a Thu Jan 01 00:00:00 1970 +0000
58 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
58 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
59 @@ -1,1 +0,0 @@
59 @@ -1,1 +0,0 @@
60 -b
60 -b
61
61
62 changeset: 3:01de2d66a28d
62 changeset: 3:01de2d66a28d
63 user: test
63 user: test
64 date: Thu Jan 01 00:00:00 1970 +0000
64 date: Thu Jan 01 00:00:00 1970 +0000
65 summary: second a
65 summary: second a
66
66
67 diff -r be3ebcc91739 -r 01de2d66a28d a
67 diff -r be3ebcc91739 -r 01de2d66a28d a
68 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
68 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
69 +++ b/a Thu Jan 01 00:00:00 1970 +0000
69 +++ b/a Thu Jan 01 00:00:00 1970 +0000
70 @@ -0,0 +1,1 @@
70 @@ -0,0 +1,1 @@
71 +b
71 +b
72
72
73 changeset: 2:be3ebcc91739
73 changeset: 2:be3ebcc91739
74 user: test
74 user: test
75 date: Thu Jan 01 00:00:00 1970 +0000
75 date: Thu Jan 01 00:00:00 1970 +0000
76 summary: del a
76 summary: del a
77
77
78 diff -r 5ed941583260 -r be3ebcc91739 a
78 diff -r 5ed941583260 -r be3ebcc91739 a
79 --- a/a Thu Jan 01 00:00:00 1970 +0000
79 --- a/a Thu Jan 01 00:00:00 1970 +0000
80 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
80 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
81 @@ -1,1 +0,0 @@
81 @@ -1,1 +0,0 @@
82 -a
82 -a
83
83
84 changeset: 1:5ed941583260
84 changeset: 1:5ed941583260
85 user: test
85 user: test
86 date: Thu Jan 01 00:00:00 1970 +0000
86 date: Thu Jan 01 00:00:00 1970 +0000
87 summary: first a
87 summary: first a
88
88
89 diff -r 6563da9dcf87 -r 5ed941583260 a
89 diff -r 6563da9dcf87 -r 5ed941583260 a
90 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
90 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
91 +++ b/a Thu Jan 01 00:00:00 1970 +0000
91 +++ b/a Thu Jan 01 00:00:00 1970 +0000
92 @@ -0,0 +1,1 @@
92 @@ -0,0 +1,1 @@
93 +a
93 +a
94
94
95 changeset: 0:6563da9dcf87
95 changeset: 0:6563da9dcf87
96 user: test
96 user: test
97 date: Thu Jan 01 00:00:00 1970 +0000
97 date: Thu Jan 01 00:00:00 1970 +0000
98 summary: b
98 summary: b
99
99
100 diff -r 000000000000 -r 6563da9dcf87 b
100 diff -r 000000000000 -r 6563da9dcf87 b
101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
101 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 +++ b/b Thu Jan 01 00:00:00 1970 +0000
102 +++ b/b Thu Jan 01 00:00:00 1970 +0000
103 @@ -0,0 +1,1 @@
103 @@ -0,0 +1,1 @@
104 +b
104 +b
105
105
106 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
106 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
107 $ cat hg.pid >> $DAEMON_PIDS
107 $ cat hg.pid >> $DAEMON_PIDS
108
108
109 tip - two revisions
109 tip - two revisions
110
110
111 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/a')
111 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/a')
112 200 Script output follows
112 200 Script output follows
113
113
114 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
114 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
115 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
115 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
116 <head>
116 <head>
117 <link rel="icon" href="/static/hgicon.png" type="image/png" />
117 <link rel="icon" href="/static/hgicon.png" type="image/png" />
118 <meta name="robots" content="index, nofollow" />
118 <meta name="robots" content="index, nofollow" />
119 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
119 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
120 <script type="text/javascript" src="/static/mercurial.js"></script>
120
121
121 <title>test: a history</title>
122 <title>test: a history</title>
122 <link rel="alternate" type="application/atom+xml"
123 <link rel="alternate" type="application/atom+xml"
123 href="/atom-log/tip/a" title="Atom feed for test:a" />
124 href="/atom-log/tip/a" title="Atom feed for test:a" />
124 <link rel="alternate" type="application/rss+xml"
125 <link rel="alternate" type="application/rss+xml"
125 href="/rss-log/tip/a" title="RSS feed for test:a" />
126 href="/rss-log/tip/a" title="RSS feed for test:a" />
126 </head>
127 </head>
127 <body>
128 <body>
128
129
129 <div class="container">
130 <div class="container">
130 <div class="menu">
131 <div class="menu">
131 <div class="logo">
132 <div class="logo">
132 <a href="http://mercurial.selenic.com/">
133 <a href="http://mercurial.selenic.com/">
133 <img src="/static/hglogo.png" alt="mercurial" /></a>
134 <img src="/static/hglogo.png" alt="mercurial" /></a>
134 </div>
135 </div>
135 <ul>
136 <ul>
136 <li><a href="/shortlog/01de2d66a28d">log</a></li>
137 <li><a href="/shortlog/01de2d66a28d">log</a></li>
137 <li><a href="/graph/01de2d66a28d">graph</a></li>
138 <li><a href="/graph/01de2d66a28d">graph</a></li>
138 <li><a href="/tags">tags</a></li>
139 <li><a href="/tags">tags</a></li>
139 <li><a href="/bookmarks">bookmarks</a></li>
140 <li><a href="/bookmarks">bookmarks</a></li>
140 <li><a href="/branches">branches</a></li>
141 <li><a href="/branches">branches</a></li>
141 </ul>
142 </ul>
142 <ul>
143 <ul>
143 <li><a href="/rev/01de2d66a28d">changeset</a></li>
144 <li><a href="/rev/01de2d66a28d">changeset</a></li>
144 <li><a href="/file/01de2d66a28d">browse</a></li>
145 <li><a href="/file/01de2d66a28d">browse</a></li>
145 </ul>
146 </ul>
146 <ul>
147 <ul>
147 <li><a href="/file/01de2d66a28d/a">file</a></li>
148 <li><a href="/file/01de2d66a28d/a">file</a></li>
148 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
149 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
149 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
150 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
150 <li class="active">file log</li>
151 <li class="active">file log</li>
151 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
152 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
152 </ul>
153 </ul>
153 <ul>
154 <ul>
154 <li><a href="/help">help</a></li>
155 <li><a href="/help">help</a></li>
155 </ul>
156 </ul>
156 </div>
157 </div>
157
158
158 <div class="main">
159 <div class="main">
159 <h2><a href="/">test</a></h2>
160 <h2><a href="/">test</a></h2>
160 <h3>log a</h3>
161 <h3>log a</h3>
161
162
162 <form class="search" action="/log">
163 <form class="search" action="/log">
163
164
164 <p><input name="rev" id="search1" type="text" size="30" /></p>
165 <p><input name="rev" id="search1" type="text" size="30" /></p>
165 <div id="hint">find changesets by author, revision,
166 <div id="hint">find changesets by author, revision,
166 files, or words in the commit message</div>
167 files, or words in the commit message</div>
167 </form>
168 </form>
168
169
169 <div class="navigate">
170 <div class="navigate">
170 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
171 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
171 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
172 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
172 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
173 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
173
174
174 <table class="bigtable">
175 <table class="bigtable">
175 <tr>
176 <tr>
176 <th class="age">age</th>
177 <th class="age">age</th>
177 <th class="author">author</th>
178 <th class="author">author</th>
178 <th class="description">description</th>
179 <th class="description">description</th>
179 </tr>
180 </tr>
180 <tr class="parity0">
181 <tr class="parity0">
181 <td class="age">1970-01-01</td>
182 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
182 <td class="author">test</td>
183 <td class="author">test</td>
183 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
184 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
184 </tr>
185 </tr>
185 <tr class="parity1">
186 <tr class="parity1">
186 <td class="age">1970-01-01</td>
187 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
187 <td class="author">test</td>
188 <td class="author">test</td>
188 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
189 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
189 </tr>
190 </tr>
190
191
191 </table>
192 </table>
192
193
193 <div class="navigate">
194 <div class="navigate">
194 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
195 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
195 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
196 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
196 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
197 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
197 </div>
198 </div>
198
199
199 </div>
200 </div>
200 </div>
201 </div>
201
202
203 <script type="text/javascript">process_dates()</script>
202
204
203
205
204 </body>
206 </body>
205 </html>
207 </html>
206
208
207
209
208 second version - two revisions
210 second version - two revisions
209
211
210 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/3/a')
212 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/3/a')
211 200 Script output follows
213 200 Script output follows
212
214
213 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
215 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
214 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
216 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
215 <head>
217 <head>
216 <link rel="icon" href="/static/hgicon.png" type="image/png" />
218 <link rel="icon" href="/static/hgicon.png" type="image/png" />
217 <meta name="robots" content="index, nofollow" />
219 <meta name="robots" content="index, nofollow" />
218 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
220 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
221 <script type="text/javascript" src="/static/mercurial.js"></script>
219
222
220 <title>test: a history</title>
223 <title>test: a history</title>
221 <link rel="alternate" type="application/atom+xml"
224 <link rel="alternate" type="application/atom+xml"
222 href="/atom-log/tip/a" title="Atom feed for test:a" />
225 href="/atom-log/tip/a" title="Atom feed for test:a" />
223 <link rel="alternate" type="application/rss+xml"
226 <link rel="alternate" type="application/rss+xml"
224 href="/rss-log/tip/a" title="RSS feed for test:a" />
227 href="/rss-log/tip/a" title="RSS feed for test:a" />
225 </head>
228 </head>
226 <body>
229 <body>
227
230
228 <div class="container">
231 <div class="container">
229 <div class="menu">
232 <div class="menu">
230 <div class="logo">
233 <div class="logo">
231 <a href="http://mercurial.selenic.com/">
234 <a href="http://mercurial.selenic.com/">
232 <img src="/static/hglogo.png" alt="mercurial" /></a>
235 <img src="/static/hglogo.png" alt="mercurial" /></a>
233 </div>
236 </div>
234 <ul>
237 <ul>
235 <li><a href="/shortlog/01de2d66a28d">log</a></li>
238 <li><a href="/shortlog/01de2d66a28d">log</a></li>
236 <li><a href="/graph/01de2d66a28d">graph</a></li>
239 <li><a href="/graph/01de2d66a28d">graph</a></li>
237 <li><a href="/tags">tags</a></li>
240 <li><a href="/tags">tags</a></li>
238 <li><a href="/bookmarks">bookmarks</a></li>
241 <li><a href="/bookmarks">bookmarks</a></li>
239 <li><a href="/branches">branches</a></li>
242 <li><a href="/branches">branches</a></li>
240 </ul>
243 </ul>
241 <ul>
244 <ul>
242 <li><a href="/rev/01de2d66a28d">changeset</a></li>
245 <li><a href="/rev/01de2d66a28d">changeset</a></li>
243 <li><a href="/file/01de2d66a28d">browse</a></li>
246 <li><a href="/file/01de2d66a28d">browse</a></li>
244 </ul>
247 </ul>
245 <ul>
248 <ul>
246 <li><a href="/file/01de2d66a28d/a">file</a></li>
249 <li><a href="/file/01de2d66a28d/a">file</a></li>
247 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
250 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
248 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
251 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
249 <li class="active">file log</li>
252 <li class="active">file log</li>
250 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
253 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
251 </ul>
254 </ul>
252 <ul>
255 <ul>
253 <li><a href="/help">help</a></li>
256 <li><a href="/help">help</a></li>
254 </ul>
257 </ul>
255 </div>
258 </div>
256
259
257 <div class="main">
260 <div class="main">
258 <h2><a href="/">test</a></h2>
261 <h2><a href="/">test</a></h2>
259 <h3>log a</h3>
262 <h3>log a</h3>
260
263
261 <form class="search" action="/log">
264 <form class="search" action="/log">
262
265
263 <p><input name="rev" id="search1" type="text" size="30" /></p>
266 <p><input name="rev" id="search1" type="text" size="30" /></p>
264 <div id="hint">find changesets by author, revision,
267 <div id="hint">find changesets by author, revision,
265 files, or words in the commit message</div>
268 files, or words in the commit message</div>
266 </form>
269 </form>
267
270
268 <div class="navigate">
271 <div class="navigate">
269 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
272 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
270 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
273 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
271 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
274 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
272
275
273 <table class="bigtable">
276 <table class="bigtable">
274 <tr>
277 <tr>
275 <th class="age">age</th>
278 <th class="age">age</th>
276 <th class="author">author</th>
279 <th class="author">author</th>
277 <th class="description">description</th>
280 <th class="description">description</th>
278 </tr>
281 </tr>
279 <tr class="parity0">
282 <tr class="parity0">
280 <td class="age">1970-01-01</td>
283 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
281 <td class="author">test</td>
284 <td class="author">test</td>
282 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
285 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
283 </tr>
286 </tr>
284 <tr class="parity1">
287 <tr class="parity1">
285 <td class="age">1970-01-01</td>
288 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
286 <td class="author">test</td>
289 <td class="author">test</td>
287 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
290 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
288 </tr>
291 </tr>
289
292
290 </table>
293 </table>
291
294
292 <div class="navigate">
295 <div class="navigate">
293 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
296 <a href="/log/01de2d66a28d/a?revcount=30">less</a>
294 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
297 <a href="/log/01de2d66a28d/a?revcount=120">more</a>
295 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
298 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
296 </div>
299 </div>
297
300
298 </div>
301 </div>
299 </div>
302 </div>
300
303
304 <script type="text/javascript">process_dates()</script>
301
305
302
306
303 </body>
307 </body>
304 </html>
308 </html>
305
309
306
310
307 first deleted - one revision
311 first deleted - one revision
308
312
309 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/2/a')
313 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/2/a')
310 200 Script output follows
314 200 Script output follows
311
315
312 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
316 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
313 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
317 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
314 <head>
318 <head>
315 <link rel="icon" href="/static/hgicon.png" type="image/png" />
319 <link rel="icon" href="/static/hgicon.png" type="image/png" />
316 <meta name="robots" content="index, nofollow" />
320 <meta name="robots" content="index, nofollow" />
317 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
321 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
322 <script type="text/javascript" src="/static/mercurial.js"></script>
318
323
319 <title>test: a history</title>
324 <title>test: a history</title>
320 <link rel="alternate" type="application/atom+xml"
325 <link rel="alternate" type="application/atom+xml"
321 href="/atom-log/tip/a" title="Atom feed for test:a" />
326 href="/atom-log/tip/a" title="Atom feed for test:a" />
322 <link rel="alternate" type="application/rss+xml"
327 <link rel="alternate" type="application/rss+xml"
323 href="/rss-log/tip/a" title="RSS feed for test:a" />
328 href="/rss-log/tip/a" title="RSS feed for test:a" />
324 </head>
329 </head>
325 <body>
330 <body>
326
331
327 <div class="container">
332 <div class="container">
328 <div class="menu">
333 <div class="menu">
329 <div class="logo">
334 <div class="logo">
330 <a href="http://mercurial.selenic.com/">
335 <a href="http://mercurial.selenic.com/">
331 <img src="/static/hglogo.png" alt="mercurial" /></a>
336 <img src="/static/hglogo.png" alt="mercurial" /></a>
332 </div>
337 </div>
333 <ul>
338 <ul>
334 <li><a href="/shortlog/5ed941583260">log</a></li>
339 <li><a href="/shortlog/5ed941583260">log</a></li>
335 <li><a href="/graph/5ed941583260">graph</a></li>
340 <li><a href="/graph/5ed941583260">graph</a></li>
336 <li><a href="/tags">tags</a></li>
341 <li><a href="/tags">tags</a></li>
337 <li><a href="/bookmarks">bookmarks</a></li>
342 <li><a href="/bookmarks">bookmarks</a></li>
338 <li><a href="/branches">branches</a></li>
343 <li><a href="/branches">branches</a></li>
339 </ul>
344 </ul>
340 <ul>
345 <ul>
341 <li><a href="/rev/5ed941583260">changeset</a></li>
346 <li><a href="/rev/5ed941583260">changeset</a></li>
342 <li><a href="/file/5ed941583260">browse</a></li>
347 <li><a href="/file/5ed941583260">browse</a></li>
343 </ul>
348 </ul>
344 <ul>
349 <ul>
345 <li><a href="/file/5ed941583260/a">file</a></li>
350 <li><a href="/file/5ed941583260/a">file</a></li>
346 <li><a href="/diff/5ed941583260/a">diff</a></li>
351 <li><a href="/diff/5ed941583260/a">diff</a></li>
347 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
352 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
348 <li class="active">file log</li>
353 <li class="active">file log</li>
349 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
354 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
350 </ul>
355 </ul>
351 <ul>
356 <ul>
352 <li><a href="/help">help</a></li>
357 <li><a href="/help">help</a></li>
353 </ul>
358 </ul>
354 </div>
359 </div>
355
360
356 <div class="main">
361 <div class="main">
357 <h2><a href="/">test</a></h2>
362 <h2><a href="/">test</a></h2>
358 <h3>log a</h3>
363 <h3>log a</h3>
359
364
360 <form class="search" action="/log">
365 <form class="search" action="/log">
361
366
362 <p><input name="rev" id="search1" type="text" size="30" /></p>
367 <p><input name="rev" id="search1" type="text" size="30" /></p>
363 <div id="hint">find changesets by author, revision,
368 <div id="hint">find changesets by author, revision,
364 files, or words in the commit message</div>
369 files, or words in the commit message</div>
365 </form>
370 </form>
366
371
367 <div class="navigate">
372 <div class="navigate">
368 <a href="/log/5ed941583260/a?revcount=30">less</a>
373 <a href="/log/5ed941583260/a?revcount=30">less</a>
369 <a href="/log/5ed941583260/a?revcount=120">more</a>
374 <a href="/log/5ed941583260/a?revcount=120">more</a>
370 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
375 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
371
376
372 <table class="bigtable">
377 <table class="bigtable">
373 <tr>
378 <tr>
374 <th class="age">age</th>
379 <th class="age">age</th>
375 <th class="author">author</th>
380 <th class="author">author</th>
376 <th class="description">description</th>
381 <th class="description">description</th>
377 </tr>
382 </tr>
378 <tr class="parity0">
383 <tr class="parity0">
379 <td class="age">1970-01-01</td>
384 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
380 <td class="author">test</td>
385 <td class="author">test</td>
381 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
386 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
382 </tr>
387 </tr>
383
388
384 </table>
389 </table>
385
390
386 <div class="navigate">
391 <div class="navigate">
387 <a href="/log/5ed941583260/a?revcount=30">less</a>
392 <a href="/log/5ed941583260/a?revcount=30">less</a>
388 <a href="/log/5ed941583260/a?revcount=120">more</a>
393 <a href="/log/5ed941583260/a?revcount=120">more</a>
389 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
394 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
390 </div>
395 </div>
391
396
392 </div>
397 </div>
393 </div>
398 </div>
394
399
400 <script type="text/javascript">process_dates()</script>
395
401
396
402
397 </body>
403 </body>
398 </html>
404 </html>
399
405
400
406
401 first version - one revision
407 first version - one revision
402
408
403 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/1/a')
409 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/1/a')
404 200 Script output follows
410 200 Script output follows
405
411
406 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
412 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
407 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
413 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
408 <head>
414 <head>
409 <link rel="icon" href="/static/hgicon.png" type="image/png" />
415 <link rel="icon" href="/static/hgicon.png" type="image/png" />
410 <meta name="robots" content="index, nofollow" />
416 <meta name="robots" content="index, nofollow" />
411 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
417 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
418 <script type="text/javascript" src="/static/mercurial.js"></script>
412
419
413 <title>test: a history</title>
420 <title>test: a history</title>
414 <link rel="alternate" type="application/atom+xml"
421 <link rel="alternate" type="application/atom+xml"
415 href="/atom-log/tip/a" title="Atom feed for test:a" />
422 href="/atom-log/tip/a" title="Atom feed for test:a" />
416 <link rel="alternate" type="application/rss+xml"
423 <link rel="alternate" type="application/rss+xml"
417 href="/rss-log/tip/a" title="RSS feed for test:a" />
424 href="/rss-log/tip/a" title="RSS feed for test:a" />
418 </head>
425 </head>
419 <body>
426 <body>
420
427
421 <div class="container">
428 <div class="container">
422 <div class="menu">
429 <div class="menu">
423 <div class="logo">
430 <div class="logo">
424 <a href="http://mercurial.selenic.com/">
431 <a href="http://mercurial.selenic.com/">
425 <img src="/static/hglogo.png" alt="mercurial" /></a>
432 <img src="/static/hglogo.png" alt="mercurial" /></a>
426 </div>
433 </div>
427 <ul>
434 <ul>
428 <li><a href="/shortlog/5ed941583260">log</a></li>
435 <li><a href="/shortlog/5ed941583260">log</a></li>
429 <li><a href="/graph/5ed941583260">graph</a></li>
436 <li><a href="/graph/5ed941583260">graph</a></li>
430 <li><a href="/tags">tags</a></li>
437 <li><a href="/tags">tags</a></li>
431 <li><a href="/bookmarks">bookmarks</a></li>
438 <li><a href="/bookmarks">bookmarks</a></li>
432 <li><a href="/branches">branches</a></li>
439 <li><a href="/branches">branches</a></li>
433 </ul>
440 </ul>
434 <ul>
441 <ul>
435 <li><a href="/rev/5ed941583260">changeset</a></li>
442 <li><a href="/rev/5ed941583260">changeset</a></li>
436 <li><a href="/file/5ed941583260">browse</a></li>
443 <li><a href="/file/5ed941583260">browse</a></li>
437 </ul>
444 </ul>
438 <ul>
445 <ul>
439 <li><a href="/file/5ed941583260/a">file</a></li>
446 <li><a href="/file/5ed941583260/a">file</a></li>
440 <li><a href="/diff/5ed941583260/a">diff</a></li>
447 <li><a href="/diff/5ed941583260/a">diff</a></li>
441 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
448 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
442 <li class="active">file log</li>
449 <li class="active">file log</li>
443 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
450 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
444 </ul>
451 </ul>
445 <ul>
452 <ul>
446 <li><a href="/help">help</a></li>
453 <li><a href="/help">help</a></li>
447 </ul>
454 </ul>
448 </div>
455 </div>
449
456
450 <div class="main">
457 <div class="main">
451 <h2><a href="/">test</a></h2>
458 <h2><a href="/">test</a></h2>
452 <h3>log a</h3>
459 <h3>log a</h3>
453
460
454 <form class="search" action="/log">
461 <form class="search" action="/log">
455
462
456 <p><input name="rev" id="search1" type="text" size="30" /></p>
463 <p><input name="rev" id="search1" type="text" size="30" /></p>
457 <div id="hint">find changesets by author, revision,
464 <div id="hint">find changesets by author, revision,
458 files, or words in the commit message</div>
465 files, or words in the commit message</div>
459 </form>
466 </form>
460
467
461 <div class="navigate">
468 <div class="navigate">
462 <a href="/log/5ed941583260/a?revcount=30">less</a>
469 <a href="/log/5ed941583260/a?revcount=30">less</a>
463 <a href="/log/5ed941583260/a?revcount=120">more</a>
470 <a href="/log/5ed941583260/a?revcount=120">more</a>
464 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
471 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
465
472
466 <table class="bigtable">
473 <table class="bigtable">
467 <tr>
474 <tr>
468 <th class="age">age</th>
475 <th class="age">age</th>
469 <th class="author">author</th>
476 <th class="author">author</th>
470 <th class="description">description</th>
477 <th class="description">description</th>
471 </tr>
478 </tr>
472 <tr class="parity0">
479 <tr class="parity0">
473 <td class="age">1970-01-01</td>
480 <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
474 <td class="author">test</td>
481 <td class="author">test</td>
475 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
482 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
476 </tr>
483 </tr>
477
484
478 </table>
485 </table>
479
486
480 <div class="navigate">
487 <div class="navigate">
481 <a href="/log/5ed941583260/a?revcount=30">less</a>
488 <a href="/log/5ed941583260/a?revcount=30">less</a>
482 <a href="/log/5ed941583260/a?revcount=120">more</a>
489 <a href="/log/5ed941583260/a?revcount=120">more</a>
483 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
490 | <a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a>
484 </div>
491 </div>
485
492
486 </div>
493 </div>
487 </div>
494 </div>
488
495
496 <script type="text/javascript">process_dates()</script>
489
497
490
498
491 </body>
499 </body>
492 </html>
500 </html>
493
501
494
502
495 before addition - error
503 before addition - error
496
504
497 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/0/a')
505 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/0/a')
498 404 Not Found
506 404 Not Found
499
507
500 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
508 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
501 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
509 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
502 <head>
510 <head>
503 <link rel="icon" href="/static/hgicon.png" type="image/png" />
511 <link rel="icon" href="/static/hgicon.png" type="image/png" />
504 <meta name="robots" content="index, nofollow" />
512 <meta name="robots" content="index, nofollow" />
505 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
513 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
514 <script type="text/javascript" src="/static/mercurial.js"></script>
506
515
507 <title>test: error</title>
516 <title>test: error</title>
508 </head>
517 </head>
509 <body>
518 <body>
510
519
511 <div class="container">
520 <div class="container">
512 <div class="menu">
521 <div class="menu">
513 <div class="logo">
522 <div class="logo">
514 <a href="http://mercurial.selenic.com/">
523 <a href="http://mercurial.selenic.com/">
515 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
524 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
516 </div>
525 </div>
517 <ul>
526 <ul>
518 <li><a href="/shortlog">log</a></li>
527 <li><a href="/shortlog">log</a></li>
519 <li><a href="/graph">graph</a></li>
528 <li><a href="/graph">graph</a></li>
520 <li><a href="/tags">tags</a></li>
529 <li><a href="/tags">tags</a></li>
521 <li><a href="/bookmarks">bookmarks</a></li>
530 <li><a href="/bookmarks">bookmarks</a></li>
522 <li><a href="/branches">branches</a></li>
531 <li><a href="/branches">branches</a></li>
523 <li><a href="/help">help</a></li>
532 <li><a href="/help">help</a></li>
524 </ul>
533 </ul>
525 </div>
534 </div>
526
535
527 <div class="main">
536 <div class="main">
528
537
529 <h2><a href="/">test</a></h2>
538 <h2><a href="/">test</a></h2>
530 <h3>error</h3>
539 <h3>error</h3>
531
540
532 <form class="search" action="/log">
541 <form class="search" action="/log">
533
542
534 <p><input name="rev" id="search1" type="text" size="30"></p>
543 <p><input name="rev" id="search1" type="text" size="30"></p>
535 <div id="hint">find changesets by author, revision,
544 <div id="hint">find changesets by author, revision,
536 files, or words in the commit message</div>
545 files, or words in the commit message</div>
537 </form>
546 </form>
538
547
539 <div class="description">
548 <div class="description">
540 <p>
549 <p>
541 An error occurred while processing your request:
550 An error occurred while processing your request:
542 </p>
551 </p>
543 <p>
552 <p>
544 a@6563da9dcf87: not found in manifest
553 a@6563da9dcf87: not found in manifest
545 </p>
554 </p>
546 </div>
555 </div>
547 </div>
556 </div>
548 </div>
557 </div>
549
558
559 <script type="text/javascript">process_dates()</script>
550
560
551
561
552 </body>
562 </body>
553 </html>
563 </html>
554
564
555 [1]
565 [1]
556
566
557 should show base link, use spartan because it shows it
567 should show base link, use spartan because it shows it
558
568
559 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/c?style=spartan')
569 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/log/tip/c?style=spartan')
560 200 Script output follows
570 200 Script output follows
561
571
562 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
572 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
563 <html>
573 <html>
564 <head>
574 <head>
565 <link rel="icon" href="/static/hgicon.png" type="image/png">
575 <link rel="icon" href="/static/hgicon.png" type="image/png">
566 <meta name="robots" content="index, nofollow" />
576 <meta name="robots" content="index, nofollow" />
567 <link rel="stylesheet" href="/static/style.css" type="text/css" />
577 <link rel="stylesheet" href="/static/style.css" type="text/css" />
578 <script type="text/javascript" src="/static/mercurial.js"></script>
568
579
569 <title>test: c history</title>
580 <title>test: c history</title>
570 <link rel="alternate" type="application/atom+xml"
581 <link rel="alternate" type="application/atom+xml"
571 href="/atom-log/tip/c" title="Atom feed for test:c">
582 href="/atom-log/tip/c" title="Atom feed for test:c">
572 <link rel="alternate" type="application/rss+xml"
583 <link rel="alternate" type="application/rss+xml"
573 href="/rss-log/tip/c" title="RSS feed for test:c">
584 href="/rss-log/tip/c" title="RSS feed for test:c">
574 </head>
585 </head>
575 <body>
586 <body>
576
587
577 <div class="buttons">
588 <div class="buttons">
578 <a href="/log?style=spartan">changelog</a>
589 <a href="/log?style=spartan">changelog</a>
579 <a href="/shortlog?style=spartan">shortlog</a>
590 <a href="/shortlog?style=spartan">shortlog</a>
580 <a href="/graph?style=spartan">graph</a>
591 <a href="/graph?style=spartan">graph</a>
581 <a href="/tags?style=spartan">tags</a>
592 <a href="/tags?style=spartan">tags</a>
582 <a href="/branches?style=spartan">branches</a>
593 <a href="/branches?style=spartan">branches</a>
583 <a href="/file/b7682196df1c/c?style=spartan">file</a>
594 <a href="/file/b7682196df1c/c?style=spartan">file</a>
584 <a href="/annotate/b7682196df1c/c?style=spartan">annotate</a>
595 <a href="/annotate/b7682196df1c/c?style=spartan">annotate</a>
585 <a href="/help?style=spartan">help</a>
596 <a href="/help?style=spartan">help</a>
586 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
597 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
587 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
598 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
588 </div>
599 </div>
589
600
590 <h2>c revision history</h2>
601 <h2>c revision history</h2>
591
602
592 <p>navigate: <small class="navigate"><a href="/log/1a6696706df2/c?style=spartan">(0)</a> <a href="/log/tip/c?style=spartan">tip</a> </small></p>
603 <p>navigate: <small class="navigate"><a href="/log/1a6696706df2/c?style=spartan">(0)</a> <a href="/log/tip/c?style=spartan">tip</a> </small></p>
593
604
594 <table class="logEntry parity0">
605 <table class="logEntry parity0">
595 <tr>
606 <tr>
596 <th class="age">1970-01-01:</th>
607 <th><span class="age">Thu Jan 01 00:00:00 1970 +0000</span>:</th>
597 <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
608 <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
598 </tr>
609 </tr>
599 <tr>
610 <tr>
600 <th class="revision">revision 1:</td>
611 <th class="revision">revision 1:</td>
601 <td class="node">
612 <td class="node">
602 <a href="/file/b7682196df1c/c?style=spartan">b7682196df1c</a>
613 <a href="/file/b7682196df1c/c?style=spartan">b7682196df1c</a>
603 <a href="/diff/b7682196df1c/c?style=spartan">(diff)</a>
614 <a href="/diff/b7682196df1c/c?style=spartan">(diff)</a>
604 <a href="/annotate/b7682196df1c/c?style=spartan">(annotate)</a>
615 <a href="/annotate/b7682196df1c/c?style=spartan">(annotate)</a>
605 </td>
616 </td>
606 </tr>
617 </tr>
607
618
608 <tr>
619 <tr>
609 <th class="author">author:</th>
620 <th class="author">author:</th>
610 <td class="author">&#116;&#101;&#115;&#116;</td>
621 <td class="author">&#116;&#101;&#115;&#116;</td>
611 </tr>
622 </tr>
612 <tr>
623 <tr>
613 <th class="date">date:</th>
624 <th class="date">date:</th>
614 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
625 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
615 </tr>
626 </tr>
616 </table>
627 </table>
617
628
618
629
619 <table class="logEntry parity1">
630 <table class="logEntry parity1">
620 <tr>
631 <tr>
621 <th class="age">1970-01-01:</th>
632 <th><span class="age">Thu Jan 01 00:00:00 1970 +0000</span>:</th>
622 <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
633 <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
623 </tr>
634 </tr>
624 <tr>
635 <tr>
625 <th class="revision">revision 0:</td>
636 <th class="revision">revision 0:</td>
626 <td class="node">
637 <td class="node">
627 <a href="/file/1a6696706df2/c?style=spartan">1a6696706df2</a>
638 <a href="/file/1a6696706df2/c?style=spartan">1a6696706df2</a>
628 <a href="/diff/1a6696706df2/c?style=spartan">(diff)</a>
639 <a href="/diff/1a6696706df2/c?style=spartan">(diff)</a>
629 <a href="/annotate/1a6696706df2/c?style=spartan">(annotate)</a>
640 <a href="/annotate/1a6696706df2/c?style=spartan">(annotate)</a>
630 </td>
641 </td>
631 </tr>
642 </tr>
632
643
633 <tr>
644 <tr>
634 <th>base:</th>
645 <th>base:</th>
635 <td>
646 <td>
636 <a href="/file/1e88685f5dde/b?style=spartan">
647 <a href="/file/1e88685f5dde/b?style=spartan">
637 b@1e88685f5dde
648 b@1e88685f5dde
638 </a>
649 </a>
639 </td>
650 </td>
640 </tr>
651 </tr>
641 <tr>
652 <tr>
642 <th class="author">author:</th>
653 <th class="author">author:</th>
643 <td class="author">&#116;&#101;&#115;&#116;</td>
654 <td class="author">&#116;&#101;&#115;&#116;</td>
644 </tr>
655 </tr>
645 <tr>
656 <tr>
646 <th class="date">date:</th>
657 <th class="date">date:</th>
647 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
658 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
648 </tr>
659 </tr>
649 </table>
660 </table>
650
661
651
662
652
663
653
664
665 <script type="text/javascript">process_dates()</script>
654
666
655 <div class="logo">
667 <div class="logo">
656 <a href="http://mercurial.selenic.com/">
668 <a href="http://mercurial.selenic.com/">
657 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
669 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
658 </div>
670 </div>
659
671
660 </body>
672 </body>
661 </html>
673 </html>
662
674
663
675
664 rss log
676 rss log
665
677
666 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rss-log/tip/a')
678 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rss-log/tip/a')
667 200 Script output follows
679 200 Script output follows
668
680
669 <?xml version="1.0" encoding="ascii"?>
681 <?xml version="1.0" encoding="ascii"?>
670 <rss version="2.0">
682 <rss version="2.0">
671 <channel>
683 <channel>
672 <link>http://*:$HGPORT/</link> (glob)
684 <link>http://*:$HGPORT/</link> (glob)
673 <language>en-us</language>
685 <language>en-us</language>
674
686
675 <title>test: a history</title>
687 <title>test: a history</title>
676 <description>a revision history</description>
688 <description>a revision history</description>
677 <item>
689 <item>
678 <title>second a</title>
690 <title>second a</title>
679 <link>http://*:$HGPORT/log01de2d66a28d/a</link> (glob)
691 <link>http://*:$HGPORT/log01de2d66a28d/a</link> (glob)
680 <description><![CDATA[second a]]></description>
692 <description><![CDATA[second a]]></description>
681 <author>&#116;&#101;&#115;&#116;</author>
693 <author>&#116;&#101;&#115;&#116;</author>
682 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
694 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
683 </item>
695 </item>
684 <item>
696 <item>
685 <title>first a</title>
697 <title>first a</title>
686 <link>http://*:$HGPORT/log5ed941583260/a</link> (glob)
698 <link>http://*:$HGPORT/log5ed941583260/a</link> (glob)
687 <description><![CDATA[first a]]></description>
699 <description><![CDATA[first a]]></description>
688 <author>&#116;&#101;&#115;&#116;</author>
700 <author>&#116;&#101;&#115;&#116;</author>
689 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
701 <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
690 </item>
702 </item>
691
703
692 </channel>
704 </channel>
693 </rss>
705 </rss>
694
706
695 atom log
707 atom log
696
708
697 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/atom-log/tip/a')
709 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/atom-log/tip/a')
698 200 Script output follows
710 200 Script output follows
699
711
700 <?xml version="1.0" encoding="ascii"?>
712 <?xml version="1.0" encoding="ascii"?>
701 <feed xmlns="http://www.w3.org/2005/Atom">
713 <feed xmlns="http://www.w3.org/2005/Atom">
702 <id>http://*:$HGPORT/atom-log/tip/a</id> (glob)
714 <id>http://*:$HGPORT/atom-log/tip/a</id> (glob)
703 <link rel="self" href="http://*:$HGPORT/atom-log/tip/a"/> (glob)
715 <link rel="self" href="http://*:$HGPORT/atom-log/tip/a"/> (glob)
704 <title>test: a history</title>
716 <title>test: a history</title>
705 <updated>1970-01-01T00:00:00+00:00</updated>
717 <updated>1970-01-01T00:00:00+00:00</updated>
706
718
707 <entry>
719 <entry>
708 <title>second a</title>
720 <title>second a</title>
709 <id>http://*:$HGPORT/#changeset-01de2d66a28df5549090991dccda788726948517</id> (glob)
721 <id>http://*:$HGPORT/#changeset-01de2d66a28df5549090991dccda788726948517</id> (glob)
710 <link href="http://*:$HGPORT/rev/01de2d66a28d"/> (glob)
722 <link href="http://*:$HGPORT/rev/01de2d66a28d"/> (glob)
711 <author>
723 <author>
712 <name>test</name>
724 <name>test</name>
713 <email>&#116;&#101;&#115;&#116;</email>
725 <email>&#116;&#101;&#115;&#116;</email>
714 </author>
726 </author>
715 <updated>1970-01-01T00:00:00+00:00</updated>
727 <updated>1970-01-01T00:00:00+00:00</updated>
716 <published>1970-01-01T00:00:00+00:00</published>
728 <published>1970-01-01T00:00:00+00:00</published>
717 <content type="xhtml">
729 <content type="xhtml">
718 <div xmlns="http://www.w3.org/1999/xhtml">
730 <div xmlns="http://www.w3.org/1999/xhtml">
719 <pre xml:space="preserve">second a</pre>
731 <pre xml:space="preserve">second a</pre>
720 </div>
732 </div>
721 </content>
733 </content>
722 </entry>
734 </entry>
723 <entry>
735 <entry>
724 <title>first a</title>
736 <title>first a</title>
725 <id>http://*:$HGPORT/#changeset-5ed941583260248620985524192fdc382ef57c36</id> (glob)
737 <id>http://*:$HGPORT/#changeset-5ed941583260248620985524192fdc382ef57c36</id> (glob)
726 <link href="http://*:$HGPORT/rev/5ed941583260"/> (glob)
738 <link href="http://*:$HGPORT/rev/5ed941583260"/> (glob)
727 <author>
739 <author>
728 <name>test</name>
740 <name>test</name>
729 <email>&#116;&#101;&#115;&#116;</email>
741 <email>&#116;&#101;&#115;&#116;</email>
730 </author>
742 </author>
731 <updated>1970-01-01T00:00:00+00:00</updated>
743 <updated>1970-01-01T00:00:00+00:00</updated>
732 <published>1970-01-01T00:00:00+00:00</published>
744 <published>1970-01-01T00:00:00+00:00</published>
733 <content type="xhtml">
745 <content type="xhtml">
734 <div xmlns="http://www.w3.org/1999/xhtml">
746 <div xmlns="http://www.w3.org/1999/xhtml">
735 <pre xml:space="preserve">first a</pre>
747 <pre xml:space="preserve">first a</pre>
736 </div>
748 </div>
737 </content>
749 </content>
738 </entry>
750 </entry>
739
751
740 </feed>
752 </feed>
741
753
742 errors
754 errors
743
755
744 $ cat errors.log
756 $ cat errors.log
@@ -1,206 +1,210 b''
1 setting up repo
1 setting up repo
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo a > a
5 $ echo a > a
6 $ hg ci -Ama
6 $ hg ci -Ama
7 adding a
7 adding a
8 $ hg rm a
8 $ hg rm a
9 $ hg ci -mdel
9 $ hg ci -mdel
10
10
11 set up hgweb
11 set up hgweb
12
12
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
14 $ cat hg.pid >> $DAEMON_PIDS
14 $ cat hg.pid >> $DAEMON_PIDS
15
15
16 revision
16 revision
17
17
18 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/tip'
18 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rev/tip'
19 200 Script output follows
19 200 Script output follows
20
20
21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
21 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
22 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
23 <head>
23 <head>
24 <link rel="icon" href="/static/hgicon.png" type="image/png" />
24 <link rel="icon" href="/static/hgicon.png" type="image/png" />
25 <meta name="robots" content="index, nofollow" />
25 <meta name="robots" content="index, nofollow" />
26 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
26 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
27 <script type="text/javascript" src="/static/mercurial.js"></script>
27
28
28 <title>test: c78f6c5cbea9</title>
29 <title>test: c78f6c5cbea9</title>
29 </head>
30 </head>
30 <body>
31 <body>
31 <div class="container">
32 <div class="container">
32 <div class="menu">
33 <div class="menu">
33 <div class="logo">
34 <div class="logo">
34 <a href="http://mercurial.selenic.com/">
35 <a href="http://mercurial.selenic.com/">
35 <img src="/static/hglogo.png" alt="mercurial" /></a>
36 <img src="/static/hglogo.png" alt="mercurial" /></a>
36 </div>
37 </div>
37 <ul>
38 <ul>
38 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
39 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
39 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
40 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
40 <li><a href="/tags">tags</a></li>
41 <li><a href="/tags">tags</a></li>
41 <li><a href="/bookmarks">bookmarks</a></li>
42 <li><a href="/bookmarks">bookmarks</a></li>
42 <li><a href="/branches">branches</a></li>
43 <li><a href="/branches">branches</a></li>
43 </ul>
44 </ul>
44 <ul>
45 <ul>
45 <li class="active">changeset</li>
46 <li class="active">changeset</li>
46 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
47 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
47 <li><a href="/file/c78f6c5cbea9">browse</a></li>
48 <li><a href="/file/c78f6c5cbea9">browse</a></li>
48 </ul>
49 </ul>
49 <ul>
50 <ul>
50
51
51 </ul>
52 </ul>
52 <ul>
53 <ul>
53 <li><a href="/help">help</a></li>
54 <li><a href="/help">help</a></li>
54 </ul>
55 </ul>
55 </div>
56 </div>
56
57
57 <div class="main">
58 <div class="main">
58
59
59 <h2><a href="/">test</a></h2>
60 <h2><a href="/">test</a></h2>
60 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
61 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
61
62
62 <form class="search" action="/log">
63 <form class="search" action="/log">
63
64
64 <p><input name="rev" id="search1" type="text" size="30" /></p>
65 <p><input name="rev" id="search1" type="text" size="30" /></p>
65 <div id="hint">find changesets by author, revision,
66 <div id="hint">find changesets by author, revision,
66 files, or words in the commit message</div>
67 files, or words in the commit message</div>
67 </form>
68 </form>
68
69
69 <div class="description">del</div>
70 <div class="description">del</div>
70
71
71 <table id="changesetEntry">
72 <table id="changesetEntry">
72 <tr>
73 <tr>
73 <th class="author">author</th>
74 <th class="author">author</th>
74 <td class="author">&#116;&#101;&#115;&#116;</td>
75 <td class="author">&#116;&#101;&#115;&#116;</td>
75 </tr>
76 </tr>
76 <tr>
77 <tr>
77 <th class="date">date</th>
78 <th class="date">date</th>
78 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
79 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
79 <tr>
80 <tr>
80 <th class="author">parents</th>
81 <th class="author">parents</th>
81 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
82 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
82 </tr>
83 </tr>
83 <tr>
84 <tr>
84 <th class="author">children</th>
85 <th class="author">children</th>
85 <td class="author"></td>
86 <td class="author"></td>
86 </tr>
87 </tr>
87 <tr>
88 <tr>
88 <th class="files">files</th>
89 <th class="files">files</th>
89 <td class="files">a </td>
90 <td class="files">a </td>
90 </tr>
91 </tr>
91 </table>
92 </table>
92
93
93 <div class="overflow">
94 <div class="overflow">
94 <div class="sourcefirst"> line diff</div>
95 <div class="sourcefirst"> line diff</div>
95
96
96 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
97 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
97 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
98 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
98 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
99 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
99 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
100 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
100 </span></pre></div>
101 </span></pre></div>
101 </div>
102 </div>
102
103
103 </div>
104 </div>
104 </div>
105 </div>
106 <script type="text/javascript">process_dates()</script>
105
107
106
108
107 </body>
109 </body>
108 </html>
110 </html>
109
111
110
112
111 diff removed file
113 diff removed file
112
114
113 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
115 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/a'
114 200 Script output follows
116 200 Script output follows
115
117
116 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
118 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
117 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
119 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
118 <head>
120 <head>
119 <link rel="icon" href="/static/hgicon.png" type="image/png" />
121 <link rel="icon" href="/static/hgicon.png" type="image/png" />
120 <meta name="robots" content="index, nofollow" />
122 <meta name="robots" content="index, nofollow" />
121 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
123 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
124 <script type="text/javascript" src="/static/mercurial.js"></script>
122
125
123 <title>test: a diff</title>
126 <title>test: a diff</title>
124 </head>
127 </head>
125 <body>
128 <body>
126
129
127 <div class="container">
130 <div class="container">
128 <div class="menu">
131 <div class="menu">
129 <div class="logo">
132 <div class="logo">
130 <a href="http://mercurial.selenic.com/">
133 <a href="http://mercurial.selenic.com/">
131 <img src="/static/hglogo.png" alt="mercurial" /></a>
134 <img src="/static/hglogo.png" alt="mercurial" /></a>
132 </div>
135 </div>
133 <ul>
136 <ul>
134 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
137 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
135 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
138 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
136 <li><a href="/tags">tags</a></li>
139 <li><a href="/tags">tags</a></li>
137 <li><a href="/bookmarks">bookmarks</a></li>
140 <li><a href="/bookmarks">bookmarks</a></li>
138 <li><a href="/branches">branches</a></li>
141 <li><a href="/branches">branches</a></li>
139 </ul>
142 </ul>
140 <ul>
143 <ul>
141 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
144 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
142 <li><a href="/file/c78f6c5cbea9">browse</a></li>
145 <li><a href="/file/c78f6c5cbea9">browse</a></li>
143 </ul>
146 </ul>
144 <ul>
147 <ul>
145 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
148 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
146 <li><a href="/file/tip/a">latest</a></li>
149 <li><a href="/file/tip/a">latest</a></li>
147 <li class="active">diff</li>
150 <li class="active">diff</li>
148 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
151 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
149 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
152 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
150 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
153 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
151 </ul>
154 </ul>
152 <ul>
155 <ul>
153 <li><a href="/help">help</a></li>
156 <li><a href="/help">help</a></li>
154 </ul>
157 </ul>
155 </div>
158 </div>
156
159
157 <div class="main">
160 <div class="main">
158 <h2><a href="/">test</a></h2>
161 <h2><a href="/">test</a></h2>
159 <h3>diff a @ 1:c78f6c5cbea9</h3>
162 <h3>diff a @ 1:c78f6c5cbea9</h3>
160
163
161 <form class="search" action="/log">
164 <form class="search" action="/log">
162 <p></p>
165 <p></p>
163 <p><input name="rev" id="search1" type="text" size="30" /></p>
166 <p><input name="rev" id="search1" type="text" size="30" /></p>
164 <div id="hint">find changesets by author, revision,
167 <div id="hint">find changesets by author, revision,
165 files, or words in the commit message</div>
168 files, or words in the commit message</div>
166 </form>
169 </form>
167
170
168 <div class="description">del</div>
171 <div class="description">del</div>
169
172
170 <table id="changesetEntry">
173 <table id="changesetEntry">
171 <tr>
174 <tr>
172 <th>author</th>
175 <th>author</th>
173 <td>&#116;&#101;&#115;&#116;</td>
176 <td>&#116;&#101;&#115;&#116;</td>
174 </tr>
177 </tr>
175 <tr>
178 <tr>
176 <th>date</th>
179 <th>date</th>
177 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
180 <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
178 </tr>
181 </tr>
179 <tr>
182 <tr>
180 <th>parents</th>
183 <th>parents</th>
181 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
184 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
182 </tr>
185 </tr>
183 <tr>
186 <tr>
184 <th>children</th>
187 <th>children</th>
185 <td></td>
188 <td></td>
186 </tr>
189 </tr>
187
190
188 </table>
191 </table>
189
192
190 <div class="overflow">
193 <div class="overflow">
191 <div class="sourcefirst"> line diff</div>
194 <div class="sourcefirst"> line diff</div>
192
195
193 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
196 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> <span class="minusline">--- a/a Thu Jan 01 00:00:00 1970 +0000
194 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
197 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
195 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
198 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
196 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
199 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
197 </span></pre></div>
200 </span></pre></div>
198 </div>
201 </div>
199 </div>
202 </div>
200 </div>
203 </div>
201
204
205 <script type="text/javascript">process_dates()</script>
202
206
203
207
204 </body>
208 </body>
205 </html>
209 </html>
206
210
@@ -1,437 +1,443 b''
1 Some tests for hgweb. Tests static files, plain files and different 404's.
1 Some tests for hgweb. Tests static files, plain files and different 404's.
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ mkdir da
5 $ mkdir da
6 $ echo foo > da/foo
6 $ echo foo > da/foo
7 $ echo foo > foo
7 $ echo foo > foo
8 $ hg ci -Ambase
8 $ hg ci -Ambase
9 adding da/foo
9 adding da/foo
10 adding foo
10 adding foo
11 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
11 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
12 $ cat hg.pid >> $DAEMON_PIDS
12 $ cat hg.pid >> $DAEMON_PIDS
13
13
14 manifest
14 manifest
15
15
16 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=raw')
16 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=raw')
17 200 Script output follows
17 200 Script output follows
18
18
19
19
20 drwxr-xr-x da
20 drwxr-xr-x da
21 -rw-r--r-- 4 foo
21 -rw-r--r-- 4 foo
22
22
23
23
24 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/da?style=raw')
24 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/da?style=raw')
25 200 Script output follows
25 200 Script output follows
26
26
27
27
28 -rw-r--r-- 4 foo
28 -rw-r--r-- 4 foo
29
29
30
30
31
31
32 plain file
32 plain file
33
33
34 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?style=raw'
34 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?style=raw'
35 200 Script output follows
35 200 Script output follows
36
36
37 foo
37 foo
38
38
39 should give a 404 - static file that does not exist
39 should give a 404 - static file that does not exist
40
40
41 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/static/bogus'
41 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/static/bogus'
42 404 Not Found
42 404 Not Found
43
43
44 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
44 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
45 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
45 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
46 <head>
46 <head>
47 <link rel="icon" href="/static/hgicon.png" type="image/png" />
47 <link rel="icon" href="/static/hgicon.png" type="image/png" />
48 <meta name="robots" content="index, nofollow" />
48 <meta name="robots" content="index, nofollow" />
49 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
49 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
50 <script type="text/javascript" src="/static/mercurial.js"></script>
50
51
51 <title>test: error</title>
52 <title>test: error</title>
52 </head>
53 </head>
53 <body>
54 <body>
54
55
55 <div class="container">
56 <div class="container">
56 <div class="menu">
57 <div class="menu">
57 <div class="logo">
58 <div class="logo">
58 <a href="http://mercurial.selenic.com/">
59 <a href="http://mercurial.selenic.com/">
59 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
60 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
60 </div>
61 </div>
61 <ul>
62 <ul>
62 <li><a href="/shortlog">log</a></li>
63 <li><a href="/shortlog">log</a></li>
63 <li><a href="/graph">graph</a></li>
64 <li><a href="/graph">graph</a></li>
64 <li><a href="/tags">tags</a></li>
65 <li><a href="/tags">tags</a></li>
65 <li><a href="/bookmarks">bookmarks</a></li>
66 <li><a href="/bookmarks">bookmarks</a></li>
66 <li><a href="/branches">branches</a></li>
67 <li><a href="/branches">branches</a></li>
67 <li><a href="/help">help</a></li>
68 <li><a href="/help">help</a></li>
68 </ul>
69 </ul>
69 </div>
70 </div>
70
71
71 <div class="main">
72 <div class="main">
72
73
73 <h2><a href="/">test</a></h2>
74 <h2><a href="/">test</a></h2>
74 <h3>error</h3>
75 <h3>error</h3>
75
76
76 <form class="search" action="/log">
77 <form class="search" action="/log">
77
78
78 <p><input name="rev" id="search1" type="text" size="30"></p>
79 <p><input name="rev" id="search1" type="text" size="30"></p>
79 <div id="hint">find changesets by author, revision,
80 <div id="hint">find changesets by author, revision,
80 files, or words in the commit message</div>
81 files, or words in the commit message</div>
81 </form>
82 </form>
82
83
83 <div class="description">
84 <div class="description">
84 <p>
85 <p>
85 An error occurred while processing your request:
86 An error occurred while processing your request:
86 </p>
87 </p>
87 <p>
88 <p>
88 Not Found
89 Not Found
89 </p>
90 </p>
90 </div>
91 </div>
91 </div>
92 </div>
92 </div>
93 </div>
93
94
95 <script type="text/javascript">process_dates()</script>
94
96
95
97
96 </body>
98 </body>
97 </html>
99 </html>
98
100
99 [1]
101 [1]
100
102
101 should give a 404 - bad revision
103 should give a 404 - bad revision
102
104
103 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/spam/foo?style=raw'
105 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/spam/foo?style=raw'
104 404 Not Found
106 404 Not Found
105
107
106
108
107 error: revision not found: spam
109 error: revision not found: spam
108 [1]
110 [1]
109
111
110 should give a 400 - bad command
112 should give a 400 - bad command
111
113
112 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?cmd=spam&style=raw'
114 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/foo?cmd=spam&style=raw'
113 400* (glob)
115 400* (glob)
114
116
115
117
116 error: no such method: spam
118 error: no such method: spam
117 [1]
119 [1]
118
120
119 should give a 404 - file does not exist
121 should give a 404 - file does not exist
120
122
121 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork?style=raw'
123 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork?style=raw'
122 404 Not Found
124 404 Not Found
123
125
124
126
125 error: bork@2ef0ac749a14: not found in manifest
127 error: bork@2ef0ac749a14: not found in manifest
126 [1]
128 [1]
127 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork'
129 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/bork'
128 404 Not Found
130 404 Not Found
129
131
130 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
132 <!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">
133 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
132 <head>
134 <head>
133 <link rel="icon" href="/static/hgicon.png" type="image/png" />
135 <link rel="icon" href="/static/hgicon.png" type="image/png" />
134 <meta name="robots" content="index, nofollow" />
136 <meta name="robots" content="index, nofollow" />
135 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
137 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
138 <script type="text/javascript" src="/static/mercurial.js"></script>
136
139
137 <title>test: error</title>
140 <title>test: error</title>
138 </head>
141 </head>
139 <body>
142 <body>
140
143
141 <div class="container">
144 <div class="container">
142 <div class="menu">
145 <div class="menu">
143 <div class="logo">
146 <div class="logo">
144 <a href="http://mercurial.selenic.com/">
147 <a href="http://mercurial.selenic.com/">
145 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
148 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
146 </div>
149 </div>
147 <ul>
150 <ul>
148 <li><a href="/shortlog">log</a></li>
151 <li><a href="/shortlog">log</a></li>
149 <li><a href="/graph">graph</a></li>
152 <li><a href="/graph">graph</a></li>
150 <li><a href="/tags">tags</a></li>
153 <li><a href="/tags">tags</a></li>
151 <li><a href="/bookmarks">bookmarks</a></li>
154 <li><a href="/bookmarks">bookmarks</a></li>
152 <li><a href="/branches">branches</a></li>
155 <li><a href="/branches">branches</a></li>
153 <li><a href="/help">help</a></li>
156 <li><a href="/help">help</a></li>
154 </ul>
157 </ul>
155 </div>
158 </div>
156
159
157 <div class="main">
160 <div class="main">
158
161
159 <h2><a href="/">test</a></h2>
162 <h2><a href="/">test</a></h2>
160 <h3>error</h3>
163 <h3>error</h3>
161
164
162 <form class="search" action="/log">
165 <form class="search" action="/log">
163
166
164 <p><input name="rev" id="search1" type="text" size="30"></p>
167 <p><input name="rev" id="search1" type="text" size="30"></p>
165 <div id="hint">find changesets by author, revision,
168 <div id="hint">find changesets by author, revision,
166 files, or words in the commit message</div>
169 files, or words in the commit message</div>
167 </form>
170 </form>
168
171
169 <div class="description">
172 <div class="description">
170 <p>
173 <p>
171 An error occurred while processing your request:
174 An error occurred while processing your request:
172 </p>
175 </p>
173 <p>
176 <p>
174 bork@2ef0ac749a14: not found in manifest
177 bork@2ef0ac749a14: not found in manifest
175 </p>
178 </p>
176 </div>
179 </div>
177 </div>
180 </div>
178 </div>
181 </div>
179
182
183 <script type="text/javascript">process_dates()</script>
180
184
181
185
182 </body>
186 </body>
183 </html>
187 </html>
184
188
185 [1]
189 [1]
186 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/bork?style=raw'
190 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/diff/tip/bork?style=raw'
187 404 Not Found
191 404 Not Found
188
192
189
193
190 error: bork@2ef0ac749a14: not found in manifest
194 error: bork@2ef0ac749a14: not found in manifest
191 [1]
195 [1]
192
196
193 try bad style
197 try bad style
194
198
195 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=foobar')
199 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=foobar')
196 200 Script output follows
200 200 Script output follows
197
201
198 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
202 <!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">
203 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
200 <head>
204 <head>
201 <link rel="icon" href="/static/hgicon.png" type="image/png" />
205 <link rel="icon" href="/static/hgicon.png" type="image/png" />
202 <meta name="robots" content="index, nofollow" />
206 <meta name="robots" content="index, nofollow" />
203 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
207 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
208 <script type="text/javascript" src="/static/mercurial.js"></script>
204
209
205 <title>test: 2ef0ac749a14 /</title>
210 <title>test: 2ef0ac749a14 /</title>
206 </head>
211 </head>
207 <body>
212 <body>
208
213
209 <div class="container">
214 <div class="container">
210 <div class="menu">
215 <div class="menu">
211 <div class="logo">
216 <div class="logo">
212 <a href="http://mercurial.selenic.com/">
217 <a href="http://mercurial.selenic.com/">
213 <img src="/static/hglogo.png" alt="mercurial" /></a>
218 <img src="/static/hglogo.png" alt="mercurial" /></a>
214 </div>
219 </div>
215 <ul>
220 <ul>
216 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
221 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
217 <li><a href="/graph/2ef0ac749a14">graph</a></li>
222 <li><a href="/graph/2ef0ac749a14">graph</a></li>
218 <li><a href="/tags">tags</a></li>
223 <li><a href="/tags">tags</a></li>
219 <li><a href="/bookmarks">bookmarks</a></li>
224 <li><a href="/bookmarks">bookmarks</a></li>
220 <li><a href="/branches">branches</a></li>
225 <li><a href="/branches">branches</a></li>
221 </ul>
226 </ul>
222 <ul>
227 <ul>
223 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
228 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
224 <li class="active">browse</li>
229 <li class="active">browse</li>
225 </ul>
230 </ul>
226 <ul>
231 <ul>
227
232
228 </ul>
233 </ul>
229 <ul>
234 <ul>
230 <li><a href="/help">help</a></li>
235 <li><a href="/help">help</a></li>
231 </ul>
236 </ul>
232 </div>
237 </div>
233
238
234 <div class="main">
239 <div class="main">
235 <h2><a href="/">test</a></h2>
240 <h2><a href="/">test</a></h2>
236 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
241 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
237
242
238 <form class="search" action="/log">
243 <form class="search" action="/log">
239
244
240 <p><input name="rev" id="search1" type="text" size="30" /></p>
245 <p><input name="rev" id="search1" type="text" size="30" /></p>
241 <div id="hint">find changesets by author, revision,
246 <div id="hint">find changesets by author, revision,
242 files, or words in the commit message</div>
247 files, or words in the commit message</div>
243 </form>
248 </form>
244
249
245 <table class="bigtable">
250 <table class="bigtable">
246 <tr>
251 <tr>
247 <th class="name">name</th>
252 <th class="name">name</th>
248 <th class="size">size</th>
253 <th class="size">size</th>
249 <th class="permissions">permissions</th>
254 <th class="permissions">permissions</th>
250 </tr>
255 </tr>
251 <tr class="fileline parity0">
256 <tr class="fileline parity0">
252 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
257 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
253 <td class="size"></td>
258 <td class="size"></td>
254 <td class="permissions">drwxr-xr-x</td>
259 <td class="permissions">drwxr-xr-x</td>
255 </tr>
260 </tr>
256
261
257 <tr class="fileline parity1">
262 <tr class="fileline parity1">
258 <td class="name">
263 <td class="name">
259 <a href="/file/2ef0ac749a14/da">
264 <a href="/file/2ef0ac749a14/da">
260 <img src="/static/coal-folder.png" alt="dir."/> da/
265 <img src="/static/coal-folder.png" alt="dir."/> da/
261 </a>
266 </a>
262 <a href="/file/2ef0ac749a14/da/">
267 <a href="/file/2ef0ac749a14/da/">
263
268
264 </a>
269 </a>
265 </td>
270 </td>
266 <td class="size"></td>
271 <td class="size"></td>
267 <td class="permissions">drwxr-xr-x</td>
272 <td class="permissions">drwxr-xr-x</td>
268 </tr>
273 </tr>
269
274
270 <tr class="fileline parity0">
275 <tr class="fileline parity0">
271 <td class="filename">
276 <td class="filename">
272 <a href="/file/2ef0ac749a14/foo">
277 <a href="/file/2ef0ac749a14/foo">
273 <img src="/static/coal-file.png" alt="file"/> foo
278 <img src="/static/coal-file.png" alt="file"/> foo
274 </a>
279 </a>
275 </td>
280 </td>
276 <td class="size">4</td>
281 <td class="size">4</td>
277 <td class="permissions">-rw-r--r--</td>
282 <td class="permissions">-rw-r--r--</td>
278 </tr>
283 </tr>
279 </table>
284 </table>
280 </div>
285 </div>
281 </div>
286 </div>
287 <script type="text/javascript">process_dates()</script>
282
288
283
289
284 </body>
290 </body>
285 </html>
291 </html>
286
292
287
293
288 stop and restart
294 stop and restart
289
295
290 $ "$TESTDIR/killdaemons.py"
296 $ "$TESTDIR/killdaemons.py"
291 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
297 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
292 $ cat hg.pid >> $DAEMON_PIDS
298 $ cat hg.pid >> $DAEMON_PIDS
293
299
294 Test the access/error files are opened in append mode
300 Test the access/error files are opened in append mode
295
301
296 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
302 $ python -c "print len(file('access.log').readlines()), 'log lines written'"
297 10 log lines written
303 10 log lines written
298
304
299 static file
305 static file
300
306
301 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT '/static/style-gitweb.css'
307 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT '/static/style-gitweb.css'
302 200 Script output follows
308 200 Script output follows
303
309
304 body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
310 body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
305 a { color:#0000cc; }
311 a { color:#0000cc; }
306 a:hover, a:visited, a:active { color:#880000; }
312 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; }
313 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
308 div.page_header a:visited { color:#0000cc; }
314 div.page_header a:visited { color:#0000cc; }
309 div.page_header a:hover { color:#880000; }
315 div.page_header a:hover { color:#880000; }
310 div.page_nav { padding:8px; }
316 div.page_nav { padding:8px; }
311 div.page_nav a:visited { color:#0000cc; }
317 div.page_nav a:visited { color:#0000cc; }
312 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
318 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
313 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
319 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
314 div.page_footer_text { float:left; color:#555555; font-style:italic; }
320 div.page_footer_text { float:left; color:#555555; font-style:italic; }
315 div.page_body { padding:8px; }
321 div.page_body { padding:8px; }
316 div.title, a.title {
322 div.title, a.title {
317 display:block; padding:6px 8px;
323 display:block; padding:6px 8px;
318 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
324 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
319 }
325 }
320 a.title:hover { background-color: #d9d8d1; }
326 a.title:hover { background-color: #d9d8d1; }
321 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
327 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
322 div.log_body { padding:8px 8px 8px 150px; }
328 div.log_body { padding:8px 8px 8px 150px; }
323 .age { white-space:nowrap; }
329 .age { white-space:nowrap; }
324 span.age { position:relative; float:left; width:142px; font-style:italic; }
330 span.age { position:relative; float:left; width:142px; font-style:italic; }
325 div.log_link {
331 div.log_link {
326 padding:0px 8px;
332 padding:0px 8px;
327 font-size:10px; font-family:sans-serif; font-style:normal;
333 font-size:10px; font-family:sans-serif; font-style:normal;
328 position:relative; float:left; width:136px;
334 position:relative; float:left; width:136px;
329 }
335 }
330 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
336 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; }
337 a.list { text-decoration:none; color:#000000; }
332 a.list:hover { text-decoration:underline; color:#880000; }
338 a.list:hover { text-decoration:underline; color:#880000; }
333 table { padding:8px 4px; }
339 table { padding:8px 4px; }
334 th { padding:2px 5px; font-size:12px; text-align:left; }
340 th { padding:2px 5px; font-size:12px; text-align:left; }
335 tr.light:hover, .parity0:hover { background-color:#edece6; }
341 tr.light:hover, .parity0:hover { background-color:#edece6; }
336 tr.dark, .parity1 { background-color:#f6f6f0; }
342 tr.dark, .parity1 { background-color:#f6f6f0; }
337 tr.dark:hover, .parity1:hover { background-color:#edece6; }
343 tr.dark:hover, .parity1:hover { background-color:#edece6; }
338 td { padding:2px 5px; font-size:12px; vertical-align:top; }
344 td { padding:2px 5px; font-size:12px; vertical-align:top; }
339 td.closed { background-color: #99f; }
345 td.closed { background-color: #99f; }
340 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
346 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
341 td.indexlinks { white-space: nowrap; }
347 td.indexlinks { white-space: nowrap; }
342 td.indexlinks a {
348 td.indexlinks a {
343 padding: 2px 5px; line-height: 10px;
349 padding: 2px 5px; line-height: 10px;
344 border: 1px solid;
350 border: 1px solid;
345 color: #ffffff; background-color: #7777bb;
351 color: #ffffff; background-color: #7777bb;
346 border-color: #aaaadd #333366 #333366 #aaaadd;
352 border-color: #aaaadd #333366 #333366 #aaaadd;
347 font-weight: bold; text-align: center; text-decoration: none;
353 font-weight: bold; text-align: center; text-decoration: none;
348 font-size: 10px;
354 font-size: 10px;
349 }
355 }
350 td.indexlinks a:hover { background-color: #6666aa; }
356 td.indexlinks a:hover { background-color: #6666aa; }
351 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
357 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; }
358 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; }
359 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 }
360 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
355 .linenr { color:#999999; text-decoration:none }
361 .linenr { color:#999999; text-decoration:none }
356 div.rss_logo { float: right; white-space: nowrap; }
362 div.rss_logo { float: right; white-space: nowrap; }
357 div.rss_logo a {
363 div.rss_logo a {
358 padding:3px 6px; line-height:10px;
364 padding:3px 6px; line-height:10px;
359 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
365 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
360 color:#ffffff; background-color:#ff6600;
366 color:#ffffff; background-color:#ff6600;
361 font-weight:bold; font-family:sans-serif; font-size:10px;
367 font-weight:bold; font-family:sans-serif; font-size:10px;
362 text-align:center; text-decoration:none;
368 text-align:center; text-decoration:none;
363 }
369 }
364 div.rss_logo a:hover { background-color:#ee5500; }
370 div.rss_logo a:hover { background-color:#ee5500; }
365 pre { margin: 0; }
371 pre { margin: 0; }
366 span.logtags span {
372 span.logtags span {
367 padding: 0px 4px;
373 padding: 0px 4px;
368 font-size: 10px;
374 font-size: 10px;
369 font-weight: normal;
375 font-weight: normal;
370 border: 1px solid;
376 border: 1px solid;
371 background-color: #ffaaff;
377 background-color: #ffaaff;
372 border-color: #ffccff #ff00ee #ff00ee #ffccff;
378 border-color: #ffccff #ff00ee #ff00ee #ffccff;
373 }
379 }
374 span.logtags span.tagtag {
380 span.logtags span.tagtag {
375 background-color: #ffffaa;
381 background-color: #ffffaa;
376 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
382 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
377 }
383 }
378 span.logtags span.branchtag {
384 span.logtags span.branchtag {
379 background-color: #aaffaa;
385 background-color: #aaffaa;
380 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
386 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
381 }
387 }
382 span.logtags span.inbranchtag {
388 span.logtags span.inbranchtag {
383 background-color: #d5dde6;
389 background-color: #d5dde6;
384 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
390 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
385 }
391 }
386 span.logtags span.bookmarktag {
392 span.logtags span.bookmarktag {
387 background-color: #afdffa;
393 background-color: #afdffa;
388 border-color: #ccecff #46ace6 #46ace6 #ccecff;
394 border-color: #ccecff #46ace6 #46ace6 #ccecff;
389 }
395 }
390
396
391 /* Graph */
397 /* Graph */
392 div#wrapper {
398 div#wrapper {
393 position: relative;
399 position: relative;
394 margin: 0;
400 margin: 0;
395 padding: 0;
401 padding: 0;
396 margin-top: 3px;
402 margin-top: 3px;
397 }
403 }
398
404
399 canvas {
405 canvas {
400 position: absolute;
406 position: absolute;
401 z-index: 5;
407 z-index: 5;
402 top: -0.9em;
408 top: -0.9em;
403 margin: 0;
409 margin: 0;
404 }
410 }
405
411
406 ul#nodebgs {
412 ul#nodebgs {
407 list-style: none inside none;
413 list-style: none inside none;
408 padding: 0;
414 padding: 0;
409 margin: 0;
415 margin: 0;
410 top: -0.7em;
416 top: -0.7em;
411 }
417 }
412
418
413 ul#graphnodes li, ul#nodebgs li {
419 ul#graphnodes li, ul#nodebgs li {
414 height: 39px;
420 height: 39px;
415 }
421 }
416
422
417 ul#graphnodes {
423 ul#graphnodes {
418 position: absolute;
424 position: absolute;
419 z-index: 10;
425 z-index: 10;
420 top: -0.8em;
426 top: -0.8em;
421 list-style: none inside none;
427 list-style: none inside none;
422 padding: 0;
428 padding: 0;
423 }
429 }
424
430
425 ul#graphnodes li .info {
431 ul#graphnodes li .info {
426 display: block;
432 display: block;
427 font-size: 100%;
433 font-size: 100%;
428 position: relative;
434 position: relative;
429 top: -3px;
435 top: -3px;
430 font-style: italic;
436 font-style: italic;
431 }
437 }
432 304 Not Modified
438 304 Not Modified
433
439
434
440
435 errors
441 errors
436
442
437 $ cat errors.log
443 $ cat errors.log
@@ -1,673 +1,679 b''
1 Tests some basic hgwebdir functionality. Tests setting up paths and
1 Tests some basic hgwebdir functionality. Tests setting up paths and
2 collection, different forms of 404s and the subdirectory support.
2 collection, different forms of 404s and the subdirectory support.
3
3
4 $ mkdir webdir
4 $ mkdir webdir
5 $ cd webdir
5 $ cd webdir
6 $ hg init a
6 $ hg init a
7 $ echo a > a/a
7 $ echo a > a/a
8 $ hg --cwd a ci -Ama -d'1 0'
8 $ hg --cwd a ci -Ama -d'1 0'
9 adding a
9 adding a
10
10
11 create a mercurial queue repository
11 create a mercurial queue repository
12
12
13 $ hg --cwd a qinit --config extensions.hgext.mq= -c
13 $ hg --cwd a qinit --config extensions.hgext.mq= -c
14 $ hg init b
14 $ hg init b
15 $ echo b > b/b
15 $ echo b > b/b
16 $ hg --cwd b ci -Amb -d'2 0'
16 $ hg --cwd b ci -Amb -d'2 0'
17 adding b
17 adding b
18
18
19 create a nested repository
19 create a nested repository
20
20
21 $ cd b
21 $ cd b
22 $ hg init d
22 $ hg init d
23 $ echo d > d/d
23 $ echo d > d/d
24 $ hg --cwd d ci -Amd -d'3 0'
24 $ hg --cwd d ci -Amd -d'3 0'
25 adding d
25 adding d
26 $ cd ..
26 $ cd ..
27 $ hg init c
27 $ hg init c
28 $ echo c > c/c
28 $ echo c > c/c
29 $ hg --cwd c ci -Amc -d'3 0'
29 $ hg --cwd c ci -Amc -d'3 0'
30 adding c
30 adding c
31
31
32 create repository without .hg/store
32 create repository without .hg/store
33
33
34 $ hg init nostore
34 $ hg init nostore
35 $ rm -R nostore/.hg/store
35 $ rm -R nostore/.hg/store
36 $ root=`pwd`
36 $ root=`pwd`
37 $ cd ..
37 $ cd ..
38 $ cat > paths.conf <<EOF
38 $ cat > paths.conf <<EOF
39 > [paths]
39 > [paths]
40 > a=$root/a
40 > a=$root/a
41 > b=$root/b
41 > b=$root/b
42 > EOF
42 > EOF
43 $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf paths.conf \
43 $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf paths.conf \
44 > -A access-paths.log -E error-paths-1.log
44 > -A access-paths.log -E error-paths-1.log
45 $ cat hg.pid >> $DAEMON_PIDS
45 $ cat hg.pid >> $DAEMON_PIDS
46
46
47 should give a 404 - file does not exist
47 should give a 404 - file does not exist
48
48
49 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/file/tip/bork?style=raw'
49 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/file/tip/bork?style=raw'
50 404 Not Found
50 404 Not Found
51
51
52
52
53 error: bork@8580ff50825a: not found in manifest
53 error: bork@8580ff50825a: not found in manifest
54 [1]
54 [1]
55
55
56 should succeed
56 should succeed
57
57
58 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?style=raw'
58 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?style=raw'
59 200 Script output follows
59 200 Script output follows
60
60
61
61
62 /a/
62 /a/
63 /b/
63 /b/
64
64
65 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/file/tip/a?style=raw'
65 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/file/tip/a?style=raw'
66 200 Script output follows
66 200 Script output follows
67
67
68 a
68 a
69 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/b/file/tip/b?style=raw'
69 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/b/file/tip/b?style=raw'
70 200 Script output follows
70 200 Script output follows
71
71
72 b
72 b
73
73
74 should give a 404 - repo is not published
74 should give a 404 - repo is not published
75
75
76 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/c/file/tip/c?style=raw'
76 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/c/file/tip/c?style=raw'
77 404 Not Found
77 404 Not Found
78
78
79
79
80 error: repository c/file/tip/c not found
80 error: repository c/file/tip/c not found
81 [1]
81 [1]
82
82
83 atom-log without basedir
83 atom-log without basedir
84
84
85 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/atom-log' | grep '<link'
85 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/atom-log' | grep '<link'
86 <link rel="self" href="http://*:$HGPORT/a/atom-log"/> (glob)
86 <link rel="self" href="http://*:$HGPORT/a/atom-log"/> (glob)
87 <link rel="alternate" href="http://*:$HGPORT/a/"/> (glob)
87 <link rel="alternate" href="http://*:$HGPORT/a/"/> (glob)
88 <link href="http://*:$HGPORT/a/rev/8580ff50825a"/> (glob)
88 <link href="http://*:$HGPORT/a/rev/8580ff50825a"/> (glob)
89
89
90 rss-log without basedir
90 rss-log without basedir
91
91
92 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/rss-log' | grep '<guid'
92 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/rss-log' | grep '<guid'
93 <guid isPermaLink="true">http://*:$HGPORT/a/rev/8580ff50825a</guid> (glob)
93 <guid isPermaLink="true">http://*:$HGPORT/a/rev/8580ff50825a</guid> (glob)
94 $ cat > paths.conf <<EOF
94 $ cat > paths.conf <<EOF
95 > [paths]
95 > [paths]
96 > t/a/=$root/a
96 > t/a/=$root/a
97 > b=$root/b
97 > b=$root/b
98 > coll=$root/*
98 > coll=$root/*
99 > rcoll=$root/**
99 > rcoll=$root/**
100 > star=*
100 > star=*
101 > starstar=**
101 > starstar=**
102 > astar=webdir/a/*
102 > astar=webdir/a/*
103 > EOF
103 > EOF
104 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
104 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
105 > -A access-paths.log -E error-paths-2.log
105 > -A access-paths.log -E error-paths-2.log
106 $ cat hg.pid >> $DAEMON_PIDS
106 $ cat hg.pid >> $DAEMON_PIDS
107
107
108 should succeed, slashy names
108 should succeed, slashy names
109
109
110 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=raw'
110 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=raw'
111 200 Script output follows
111 200 Script output follows
112
112
113
113
114 /t/a/
114 /t/a/
115 /b/
115 /b/
116 /coll/a/
116 /coll/a/
117 /coll/a/.hg/patches/
117 /coll/a/.hg/patches/
118 /coll/b/
118 /coll/b/
119 /coll/c/
119 /coll/c/
120 /rcoll/a/
120 /rcoll/a/
121 /rcoll/a/.hg/patches/
121 /rcoll/a/.hg/patches/
122 /rcoll/b/
122 /rcoll/b/
123 /rcoll/b/d/
123 /rcoll/b/d/
124 /rcoll/c/
124 /rcoll/c/
125 /star/webdir/a/
125 /star/webdir/a/
126 /star/webdir/a/.hg/patches/
126 /star/webdir/a/.hg/patches/
127 /star/webdir/b/
127 /star/webdir/b/
128 /star/webdir/c/
128 /star/webdir/c/
129 /starstar/webdir/a/
129 /starstar/webdir/a/
130 /starstar/webdir/a/.hg/patches/
130 /starstar/webdir/a/.hg/patches/
131 /starstar/webdir/b/
131 /starstar/webdir/b/
132 /starstar/webdir/b/d/
132 /starstar/webdir/b/d/
133 /starstar/webdir/c/
133 /starstar/webdir/c/
134 /astar/
134 /astar/
135 /astar/.hg/patches/
135 /astar/.hg/patches/
136
136
137 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=paper'
137 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=paper'
138 200 Script output follows
138 200 Script output follows
139
139
140 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
140 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
141 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
141 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
142 <head>
142 <head>
143 <link rel="icon" href="/static/hgicon.png" type="image/png" />
143 <link rel="icon" href="/static/hgicon.png" type="image/png" />
144 <meta name="robots" content="index, nofollow" />
144 <meta name="robots" content="index, nofollow" />
145 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
145 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
146 <script type="text/javascript" src="/static/mercurial.js"></script>
146
147
147 <title>Mercurial repositories index</title>
148 <title>Mercurial repositories index</title>
148 </head>
149 </head>
149 <body>
150 <body>
150
151
151 <div class="container">
152 <div class="container">
152 <div class="menu">
153 <div class="menu">
153 <a href="http://mercurial.selenic.com/">
154 <a href="http://mercurial.selenic.com/">
154 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
155 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
155 </div>
156 </div>
156 <div class="main">
157 <div class="main">
157 <h2>Mercurial Repositories</h2>
158 <h2>Mercurial Repositories</h2>
158
159
159 <table class="bigtable">
160 <table class="bigtable">
160 <tr>
161 <tr>
161 <th><a href="?sort=name">Name</a></th>
162 <th><a href="?sort=name">Name</a></th>
162 <th><a href="?sort=description">Description</a></th>
163 <th><a href="?sort=description">Description</a></th>
163 <th><a href="?sort=contact">Contact</a></th>
164 <th><a href="?sort=contact">Contact</a></th>
164 <th><a href="?sort=lastchange">Last modified</a></th>
165 <th><a href="?sort=lastchange">Last modified</a></th>
165 <th>&nbsp;</th>
166 <th>&nbsp;</th>
166 </tr>
167 </tr>
167
168
168 <tr class="parity0">
169 <tr class="parity0">
169 <td><a href="/t/a/?style=paper">t/a</a></td>
170 <td><a href="/t/a/?style=paper">t/a</a></td>
170 <td>unknown</td>
171 <td>unknown</td>
171 <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>
172 <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>
172 <td class="age">* ago</td> (glob)
173 <td class="age">*</td> (glob)
173 <td class="indexlinks"></td>
174 <td class="indexlinks"></td>
174 </tr>
175 </tr>
175
176
176 <tr class="parity1">
177 <tr class="parity1">
177 <td><a href="/b/?style=paper">b</a></td>
178 <td><a href="/b/?style=paper">b</a></td>
178 <td>unknown</td>
179 <td>unknown</td>
179 <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>
180 <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>
180 <td class="age">* ago</td> (glob)
181 <td class="age">*</td> (glob)
181 <td class="indexlinks"></td>
182 <td class="indexlinks"></td>
182 </tr>
183 </tr>
183
184
184 <tr class="parity0">
185 <tr class="parity0">
185 <td><a href="/coll/a/?style=paper">coll/a</a></td>
186 <td><a href="/coll/a/?style=paper">coll/a</a></td>
186 <td>unknown</td>
187 <td>unknown</td>
187 <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>
188 <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>
188 <td class="age">* ago</td> (glob)
189 <td class="age">*</td> (glob)
189 <td class="indexlinks"></td>
190 <td class="indexlinks"></td>
190 </tr>
191 </tr>
191
192
192 <tr class="parity1">
193 <tr class="parity1">
193 <td><a href="/coll/a/.hg/patches/?style=paper">coll/a/.hg/patches</a></td>
194 <td><a href="/coll/a/.hg/patches/?style=paper">coll/a/.hg/patches</a></td>
194 <td>unknown</td>
195 <td>unknown</td>
195 <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>
196 <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>
196 <td class="age">* ago</td> (glob)
197 <td class="age">*</td> (glob)
197 <td class="indexlinks"></td>
198 <td class="indexlinks"></td>
198 </tr>
199 </tr>
199
200
200 <tr class="parity0">
201 <tr class="parity0">
201 <td><a href="/coll/b/?style=paper">coll/b</a></td>
202 <td><a href="/coll/b/?style=paper">coll/b</a></td>
202 <td>unknown</td>
203 <td>unknown</td>
203 <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>
204 <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>
204 <td class="age">* ago</td> (glob)
205 <td class="age">*</td> (glob)
205 <td class="indexlinks"></td>
206 <td class="indexlinks"></td>
206 </tr>
207 </tr>
207
208
208 <tr class="parity1">
209 <tr class="parity1">
209 <td><a href="/coll/c/?style=paper">coll/c</a></td>
210 <td><a href="/coll/c/?style=paper">coll/c</a></td>
210 <td>unknown</td>
211 <td>unknown</td>
211 <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>
212 <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>
212 <td class="age">* ago</td> (glob)
213 <td class="age">*</td> (glob)
213 <td class="indexlinks"></td>
214 <td class="indexlinks"></td>
214 </tr>
215 </tr>
215
216
216 <tr class="parity0">
217 <tr class="parity0">
217 <td><a href="/rcoll/a/?style=paper">rcoll/a</a></td>
218 <td><a href="/rcoll/a/?style=paper">rcoll/a</a></td>
218 <td>unknown</td>
219 <td>unknown</td>
219 <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>
220 <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>
220 <td class="age">* ago</td> (glob)
221 <td class="age">*</td> (glob)
221 <td class="indexlinks"></td>
222 <td class="indexlinks"></td>
222 </tr>
223 </tr>
223
224
224 <tr class="parity1">
225 <tr class="parity1">
225 <td><a href="/rcoll/a/.hg/patches/?style=paper">rcoll/a/.hg/patches</a></td>
226 <td><a href="/rcoll/a/.hg/patches/?style=paper">rcoll/a/.hg/patches</a></td>
226 <td>unknown</td>
227 <td>unknown</td>
227 <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>
228 <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>
228 <td class="age">* ago</td> (glob)
229 <td class="age">*</td> (glob)
229 <td class="indexlinks"></td>
230 <td class="indexlinks"></td>
230 </tr>
231 </tr>
231
232
232 <tr class="parity0">
233 <tr class="parity0">
233 <td><a href="/rcoll/b/?style=paper">rcoll/b</a></td>
234 <td><a href="/rcoll/b/?style=paper">rcoll/b</a></td>
234 <td>unknown</td>
235 <td>unknown</td>
235 <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>
236 <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>
236 <td class="age">* ago</td> (glob)
237 <td class="age">*</td> (glob)
237 <td class="indexlinks"></td>
238 <td class="indexlinks"></td>
238 </tr>
239 </tr>
239
240
240 <tr class="parity1">
241 <tr class="parity1">
241 <td><a href="/rcoll/b/d/?style=paper">rcoll/b/d</a></td>
242 <td><a href="/rcoll/b/d/?style=paper">rcoll/b/d</a></td>
242 <td>unknown</td>
243 <td>unknown</td>
243 <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>
244 <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>
244 <td class="age">* ago</td> (glob)
245 <td class="age">*</td> (glob)
245 <td class="indexlinks"></td>
246 <td class="indexlinks"></td>
246 </tr>
247 </tr>
247
248
248 <tr class="parity0">
249 <tr class="parity0">
249 <td><a href="/rcoll/c/?style=paper">rcoll/c</a></td>
250 <td><a href="/rcoll/c/?style=paper">rcoll/c</a></td>
250 <td>unknown</td>
251 <td>unknown</td>
251 <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>
252 <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>
252 <td class="age">* ago</td> (glob)
253 <td class="age">*</td> (glob)
253 <td class="indexlinks"></td>
254 <td class="indexlinks"></td>
254 </tr>
255 </tr>
255
256
256 <tr class="parity1">
257 <tr class="parity1">
257 <td><a href="/star/webdir/a/?style=paper">star/webdir/a</a></td>
258 <td><a href="/star/webdir/a/?style=paper">star/webdir/a</a></td>
258 <td>unknown</td>
259 <td>unknown</td>
259 <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>
260 <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>
260 <td class="age">* ago</td> (glob)
261 <td class="age">*</td> (glob)
261 <td class="indexlinks"></td>
262 <td class="indexlinks"></td>
262 </tr>
263 </tr>
263
264
264 <tr class="parity0">
265 <tr class="parity0">
265 <td><a href="/star/webdir/a/.hg/patches/?style=paper">star/webdir/a/.hg/patches</a></td>
266 <td><a href="/star/webdir/a/.hg/patches/?style=paper">star/webdir/a/.hg/patches</a></td>
266 <td>unknown</td>
267 <td>unknown</td>
267 <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>
268 <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>
268 <td class="age">* ago</td> (glob)
269 <td class="age">*</td> (glob)
269 <td class="indexlinks"></td>
270 <td class="indexlinks"></td>
270 </tr>
271 </tr>
271
272
272 <tr class="parity1">
273 <tr class="parity1">
273 <td><a href="/star/webdir/b/?style=paper">star/webdir/b</a></td>
274 <td><a href="/star/webdir/b/?style=paper">star/webdir/b</a></td>
274 <td>unknown</td>
275 <td>unknown</td>
275 <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>
276 <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>
276 <td class="age">* ago</td> (glob)
277 <td class="age">*</td> (glob)
277 <td class="indexlinks"></td>
278 <td class="indexlinks"></td>
278 </tr>
279 </tr>
279
280
280 <tr class="parity0">
281 <tr class="parity0">
281 <td><a href="/star/webdir/c/?style=paper">star/webdir/c</a></td>
282 <td><a href="/star/webdir/c/?style=paper">star/webdir/c</a></td>
282 <td>unknown</td>
283 <td>unknown</td>
283 <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>
284 <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>
284 <td class="age">* ago</td> (glob)
285 <td class="age">*</td> (glob)
285 <td class="indexlinks"></td>
286 <td class="indexlinks"></td>
286 </tr>
287 </tr>
287
288
288 <tr class="parity1">
289 <tr class="parity1">
289 <td><a href="/starstar/webdir/a/?style=paper">starstar/webdir/a</a></td>
290 <td><a href="/starstar/webdir/a/?style=paper">starstar/webdir/a</a></td>
290 <td>unknown</td>
291 <td>unknown</td>
291 <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>
292 <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>
292 <td class="age">* ago</td> (glob)
293 <td class="age">*</td> (glob)
293 <td class="indexlinks"></td>
294 <td class="indexlinks"></td>
294 </tr>
295 </tr>
295
296
296 <tr class="parity0">
297 <tr class="parity0">
297 <td><a href="/starstar/webdir/a/.hg/patches/?style=paper">starstar/webdir/a/.hg/patches</a></td>
298 <td><a href="/starstar/webdir/a/.hg/patches/?style=paper">starstar/webdir/a/.hg/patches</a></td>
298 <td>unknown</td>
299 <td>unknown</td>
299 <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>
300 <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>
300 <td class="age">* ago</td> (glob)
301 <td class="age">*</td> (glob)
301 <td class="indexlinks"></td>
302 <td class="indexlinks"></td>
302 </tr>
303 </tr>
303
304
304 <tr class="parity1">
305 <tr class="parity1">
305 <td><a href="/starstar/webdir/b/?style=paper">starstar/webdir/b</a></td>
306 <td><a href="/starstar/webdir/b/?style=paper">starstar/webdir/b</a></td>
306 <td>unknown</td>
307 <td>unknown</td>
307 <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>
308 <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>
308 <td class="age">* ago</td> (glob)
309 <td class="age">*</td> (glob)
309 <td class="indexlinks"></td>
310 <td class="indexlinks"></td>
310 </tr>
311 </tr>
311
312
312 <tr class="parity0">
313 <tr class="parity0">
313 <td><a href="/starstar/webdir/b/d/?style=paper">starstar/webdir/b/d</a></td>
314 <td><a href="/starstar/webdir/b/d/?style=paper">starstar/webdir/b/d</a></td>
314 <td>unknown</td>
315 <td>unknown</td>
315 <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>
316 <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>
316 <td class="age">* ago</td> (glob)
317 <td class="age">*</td> (glob)
317 <td class="indexlinks"></td>
318 <td class="indexlinks"></td>
318 </tr>
319 </tr>
319
320
320 <tr class="parity1">
321 <tr class="parity1">
321 <td><a href="/starstar/webdir/c/?style=paper">starstar/webdir/c</a></td>
322 <td><a href="/starstar/webdir/c/?style=paper">starstar/webdir/c</a></td>
322 <td>unknown</td>
323 <td>unknown</td>
323 <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>
324 <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>
324 <td class="age">* ago</td> (glob)
325 <td class="age">*</td> (glob)
325 <td class="indexlinks"></td>
326 <td class="indexlinks"></td>
326 </tr>
327 </tr>
327
328
328 <tr class="parity0">
329 <tr class="parity0">
329 <td><a href="/astar/?style=paper">astar</a></td>
330 <td><a href="/astar/?style=paper">astar</a></td>
330 <td>unknown</td>
331 <td>unknown</td>
331 <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>
332 <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>
332 <td class="age">* ago</td> (glob)
333 <td class="age">*</td> (glob)
333 <td class="indexlinks"></td>
334 <td class="indexlinks"></td>
334 </tr>
335 </tr>
335
336
336 <tr class="parity1">
337 <tr class="parity1">
337 <td><a href="/astar/.hg/patches/?style=paper">astar/.hg/patches</a></td>
338 <td><a href="/astar/.hg/patches/?style=paper">astar/.hg/patches</a></td>
338 <td>unknown</td>
339 <td>unknown</td>
339 <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>
340 <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>
340 <td class="age">* ago</td> (glob)
341 <td class="age">*</td> (glob)
341 <td class="indexlinks"></td>
342 <td class="indexlinks"></td>
342 </tr>
343 </tr>
343
344
344 </table>
345 </table>
345 </div>
346 </div>
346 </div>
347 </div>
348 <script type="text/javascript">process_dates()</script>
347
349
348
350
349 </body>
351 </body>
350 </html>
352 </html>
351
353
352 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t?style=raw'
354 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t?style=raw'
353 200 Script output follows
355 200 Script output follows
354
356
355
357
356 /t/a/
358 /t/a/
357
359
358 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=raw'
360 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=raw'
359 200 Script output follows
361 200 Script output follows
360
362
361
363
362 /t/a/
364 /t/a/
363
365
364 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=paper'
366 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=paper'
365 200 Script output follows
367 200 Script output follows
366
368
367 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
369 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
368 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
370 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
369 <head>
371 <head>
370 <link rel="icon" href="/static/hgicon.png" type="image/png" />
372 <link rel="icon" href="/static/hgicon.png" type="image/png" />
371 <meta name="robots" content="index, nofollow" />
373 <meta name="robots" content="index, nofollow" />
372 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
374 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
375 <script type="text/javascript" src="/static/mercurial.js"></script>
373
376
374 <title>Mercurial repositories index</title>
377 <title>Mercurial repositories index</title>
375 </head>
378 </head>
376 <body>
379 <body>
377
380
378 <div class="container">
381 <div class="container">
379 <div class="menu">
382 <div class="menu">
380 <a href="http://mercurial.selenic.com/">
383 <a href="http://mercurial.selenic.com/">
381 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
384 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
382 </div>
385 </div>
383 <div class="main">
386 <div class="main">
384 <h2>Mercurial Repositories</h2>
387 <h2>Mercurial Repositories</h2>
385
388
386 <table class="bigtable">
389 <table class="bigtable">
387 <tr>
390 <tr>
388 <th><a href="?sort=name">Name</a></th>
391 <th><a href="?sort=name">Name</a></th>
389 <th><a href="?sort=description">Description</a></th>
392 <th><a href="?sort=description">Description</a></th>
390 <th><a href="?sort=contact">Contact</a></th>
393 <th><a href="?sort=contact">Contact</a></th>
391 <th><a href="?sort=lastchange">Last modified</a></th>
394 <th><a href="?sort=lastchange">Last modified</a></th>
392 <th>&nbsp;</th>
395 <th>&nbsp;</th>
393 </tr>
396 </tr>
394
397
395 <tr class="parity0">
398 <tr class="parity0">
396 <td><a href="/t/a/?style=paper">a</a></td>
399 <td><a href="/t/a/?style=paper">a</a></td>
397 <td>unknown</td>
400 <td>unknown</td>
398 <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>
401 <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>
399 <td class="age">* ago</td> (glob)
402 <td class="age">*</td> (glob)
400 <td class="indexlinks"></td>
403 <td class="indexlinks"></td>
401 </tr>
404 </tr>
402
405
403 </table>
406 </table>
404 </div>
407 </div>
405 </div>
408 </div>
409 <script type="text/javascript">process_dates()</script>
406
410
407
411
408 </body>
412 </body>
409 </html>
413 </html>
410
414
411 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a?style=atom'
415 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a?style=atom'
412 200 Script output follows
416 200 Script output follows
413
417
414 <?xml version="1.0" encoding="ascii"?>
418 <?xml version="1.0" encoding="ascii"?>
415 <feed xmlns="http://www.w3.org/2005/Atom">
419 <feed xmlns="http://www.w3.org/2005/Atom">
416 <!-- Changelog -->
420 <!-- Changelog -->
417 <id>http://*:$HGPORT1/t/a/</id> (glob)
421 <id>http://*:$HGPORT1/t/a/</id> (glob)
418 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
422 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
419 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
423 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
420 <title>t/a Changelog</title>
424 <title>t/a Changelog</title>
421 <updated>1970-01-01T00:00:01+00:00</updated>
425 <updated>1970-01-01T00:00:01+00:00</updated>
422
426
423 <entry>
427 <entry>
424 <title>a</title>
428 <title>a</title>
425 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
429 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
426 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
430 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
427 <author>
431 <author>
428 <name>test</name>
432 <name>test</name>
429 <email>&#116;&#101;&#115;&#116;</email>
433 <email>&#116;&#101;&#115;&#116;</email>
430 </author>
434 </author>
431 <updated>1970-01-01T00:00:01+00:00</updated>
435 <updated>1970-01-01T00:00:01+00:00</updated>
432 <published>1970-01-01T00:00:01+00:00</published>
436 <published>1970-01-01T00:00:01+00:00</published>
433 <content type="xhtml">
437 <content type="xhtml">
434 <div xmlns="http://www.w3.org/1999/xhtml">
438 <div xmlns="http://www.w3.org/1999/xhtml">
435 <pre xml:space="preserve">a</pre>
439 <pre xml:space="preserve">a</pre>
436 </div>
440 </div>
437 </content>
441 </content>
438 </entry>
442 </entry>
439
443
440 </feed>
444 </feed>
441 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a/?style=atom'
445 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a/?style=atom'
442 200 Script output follows
446 200 Script output follows
443
447
444 <?xml version="1.0" encoding="ascii"?>
448 <?xml version="1.0" encoding="ascii"?>
445 <feed xmlns="http://www.w3.org/2005/Atom">
449 <feed xmlns="http://www.w3.org/2005/Atom">
446 <!-- Changelog -->
450 <!-- Changelog -->
447 <id>http://*:$HGPORT1/t/a/</id> (glob)
451 <id>http://*:$HGPORT1/t/a/</id> (glob)
448 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
452 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
449 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
453 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
450 <title>t/a Changelog</title>
454 <title>t/a Changelog</title>
451 <updated>1970-01-01T00:00:01+00:00</updated>
455 <updated>1970-01-01T00:00:01+00:00</updated>
452
456
453 <entry>
457 <entry>
454 <title>a</title>
458 <title>a</title>
455 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
459 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
456 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
460 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
457 <author>
461 <author>
458 <name>test</name>
462 <name>test</name>
459 <email>&#116;&#101;&#115;&#116;</email>
463 <email>&#116;&#101;&#115;&#116;</email>
460 </author>
464 </author>
461 <updated>1970-01-01T00:00:01+00:00</updated>
465 <updated>1970-01-01T00:00:01+00:00</updated>
462 <published>1970-01-01T00:00:01+00:00</published>
466 <published>1970-01-01T00:00:01+00:00</published>
463 <content type="xhtml">
467 <content type="xhtml">
464 <div xmlns="http://www.w3.org/1999/xhtml">
468 <div xmlns="http://www.w3.org/1999/xhtml">
465 <pre xml:space="preserve">a</pre>
469 <pre xml:space="preserve">a</pre>
466 </div>
470 </div>
467 </content>
471 </content>
468 </entry>
472 </entry>
469
473
470 </feed>
474 </feed>
471 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a/file/tip/a?style=raw'
475 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a/file/tip/a?style=raw'
472 200 Script output follows
476 200 Script output follows
473
477
474 a
478 a
475
479
476 Test [paths] '*' extension
480 Test [paths] '*' extension
477
481
478 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/coll/?style=raw'
482 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/coll/?style=raw'
479 200 Script output follows
483 200 Script output follows
480
484
481
485
482 /coll/a/
486 /coll/a/
483 /coll/a/.hg/patches/
487 /coll/a/.hg/patches/
484 /coll/b/
488 /coll/b/
485 /coll/c/
489 /coll/c/
486
490
487 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/coll/a/file/tip/a?style=raw'
491 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/coll/a/file/tip/a?style=raw'
488 200 Script output follows
492 200 Script output follows
489
493
490 a
494 a
491
495
492 Test [paths] '**' extension
496 Test [paths] '**' extension
493
497
494 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/rcoll/?style=raw'
498 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/rcoll/?style=raw'
495 200 Script output follows
499 200 Script output follows
496
500
497
501
498 /rcoll/a/
502 /rcoll/a/
499 /rcoll/a/.hg/patches/
503 /rcoll/a/.hg/patches/
500 /rcoll/b/
504 /rcoll/b/
501 /rcoll/b/d/
505 /rcoll/b/d/
502 /rcoll/c/
506 /rcoll/c/
503
507
504 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/rcoll/b/d/file/tip/d?style=raw'
508 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/rcoll/b/d/file/tip/d?style=raw'
505 200 Script output follows
509 200 Script output follows
506
510
507 d
511 d
508
512
509 Test [paths] '*' in a repo root
513 Test [paths] '*' in a repo root
510
514
511 $ hg id http://localhost:$HGPORT1/astar
515 $ hg id http://localhost:$HGPORT1/astar
512 8580ff50825a
516 8580ff50825a
513
517
514 $ "$TESTDIR/killdaemons.py"
518 $ "$TESTDIR/killdaemons.py"
515 $ cat > paths.conf <<EOF
519 $ cat > paths.conf <<EOF
516 > [paths]
520 > [paths]
517 > t/a = $root/a
521 > t/a = $root/a
518 > t/b = $root/b
522 > t/b = $root/b
519 > c = $root/c
523 > c = $root/c
520 > [web]
524 > [web]
521 > descend=false
525 > descend=false
522 > EOF
526 > EOF
523 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
527 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
524 > -A access-paths.log -E error-paths-3.log
528 > -A access-paths.log -E error-paths-3.log
525 $ cat hg.pid >> $DAEMON_PIDS
529 $ cat hg.pid >> $DAEMON_PIDS
526
530
527 test descend = False
531 test descend = False
528
532
529 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=raw'
533 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=raw'
530 200 Script output follows
534 200 Script output follows
531
535
532
536
533 /c/
537 /c/
534
538
535 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=raw'
539 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=raw'
536 200 Script output follows
540 200 Script output follows
537
541
538
542
539 /t/a/
543 /t/a/
540 /t/b/
544 /t/b/
541
545
542 $ "$TESTDIR/killdaemons.py"
546 $ "$TESTDIR/killdaemons.py"
543 $ cat > paths.conf <<EOF
547 $ cat > paths.conf <<EOF
544 > [paths]
548 > [paths]
545 > nostore = $root/nostore
549 > nostore = $root/nostore
546 > inexistent = $root/inexistent
550 > inexistent = $root/inexistent
547 > EOF
551 > EOF
548 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
552 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
549 > -A access-paths.log -E error-paths-4.log
553 > -A access-paths.log -E error-paths-4.log
550 $ cat hg.pid >> $DAEMON_PIDS
554 $ cat hg.pid >> $DAEMON_PIDS
551
555
552 test inexistent and inaccessible repo should be ignored silently
556 test inexistent and inaccessible repo should be ignored silently
553
557
554 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/'
558 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/'
555 200 Script output follows
559 200 Script output follows
556
560
557 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
561 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
558 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
562 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
559 <head>
563 <head>
560 <link rel="icon" href="/static/hgicon.png" type="image/png" />
564 <link rel="icon" href="/static/hgicon.png" type="image/png" />
561 <meta name="robots" content="index, nofollow" />
565 <meta name="robots" content="index, nofollow" />
562 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
566 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
567 <script type="text/javascript" src="/static/mercurial.js"></script>
563
568
564 <title>Mercurial repositories index</title>
569 <title>Mercurial repositories index</title>
565 </head>
570 </head>
566 <body>
571 <body>
567
572
568 <div class="container">
573 <div class="container">
569 <div class="menu">
574 <div class="menu">
570 <a href="http://mercurial.selenic.com/">
575 <a href="http://mercurial.selenic.com/">
571 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
576 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
572 </div>
577 </div>
573 <div class="main">
578 <div class="main">
574 <h2>Mercurial Repositories</h2>
579 <h2>Mercurial Repositories</h2>
575
580
576 <table class="bigtable">
581 <table class="bigtable">
577 <tr>
582 <tr>
578 <th><a href="?sort=name">Name</a></th>
583 <th><a href="?sort=name">Name</a></th>
579 <th><a href="?sort=description">Description</a></th>
584 <th><a href="?sort=description">Description</a></th>
580 <th><a href="?sort=contact">Contact</a></th>
585 <th><a href="?sort=contact">Contact</a></th>
581 <th><a href="?sort=lastchange">Last modified</a></th>
586 <th><a href="?sort=lastchange">Last modified</a></th>
582 <th>&nbsp;</th>
587 <th>&nbsp;</th>
583 </tr>
588 </tr>
584
589
585 </table>
590 </table>
586 </div>
591 </div>
587 </div>
592 </div>
593 <script type="text/javascript">process_dates()</script>
588
594
589
595
590 </body>
596 </body>
591 </html>
597 </html>
592
598
593 $ cat > collections.conf <<EOF
599 $ cat > collections.conf <<EOF
594 > [collections]
600 > [collections]
595 > $root=$root
601 > $root=$root
596 > EOF
602 > EOF
597 $ hg serve --config web.baseurl=http://hg.example.com:8080/ -p $HGPORT2 -d \
603 $ hg serve --config web.baseurl=http://hg.example.com:8080/ -p $HGPORT2 -d \
598 > --pid-file=hg.pid --webdir-conf collections.conf \
604 > --pid-file=hg.pid --webdir-conf collections.conf \
599 > -A access-collections.log -E error-collections.log
605 > -A access-collections.log -E error-collections.log
600 $ cat hg.pid >> $DAEMON_PIDS
606 $ cat hg.pid >> $DAEMON_PIDS
601
607
602 collections: should succeed
608 collections: should succeed
603
609
604 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/?style=raw'
610 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/?style=raw'
605 200 Script output follows
611 200 Script output follows
606
612
607
613
608 /a/
614 /a/
609 /a/.hg/patches/
615 /a/.hg/patches/
610 /b/
616 /b/
611 /c/
617 /c/
612
618
613 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/file/tip/a?style=raw'
619 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/file/tip/a?style=raw'
614 200 Script output follows
620 200 Script output follows
615
621
616 a
622 a
617 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/b/file/tip/b?style=raw'
623 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/b/file/tip/b?style=raw'
618 200 Script output follows
624 200 Script output follows
619
625
620 b
626 b
621 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/c/file/tip/c?style=raw'
627 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/c/file/tip/c?style=raw'
622 200 Script output follows
628 200 Script output follows
623
629
624 c
630 c
625
631
626 atom-log with basedir /
632 atom-log with basedir /
627
633
628 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/atom-log' | grep '<link'
634 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/atom-log' | grep '<link'
629 <link rel="self" href="http://hg.example.com:8080/a/atom-log"/>
635 <link rel="self" href="http://hg.example.com:8080/a/atom-log"/>
630 <link rel="alternate" href="http://hg.example.com:8080/a/"/>
636 <link rel="alternate" href="http://hg.example.com:8080/a/"/>
631 <link href="http://hg.example.com:8080/a/rev/8580ff50825a"/>
637 <link href="http://hg.example.com:8080/a/rev/8580ff50825a"/>
632
638
633 rss-log with basedir /
639 rss-log with basedir /
634
640
635 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/rss-log' | grep '<guid'
641 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/rss-log' | grep '<guid'
636 <guid isPermaLink="true">http://hg.example.com:8080/a/rev/8580ff50825a</guid>
642 <guid isPermaLink="true">http://hg.example.com:8080/a/rev/8580ff50825a</guid>
637 $ "$TESTDIR/killdaemons.py"
643 $ "$TESTDIR/killdaemons.py"
638 $ hg serve --config web.baseurl=http://hg.example.com:8080/foo/ -p $HGPORT2 -d \
644 $ hg serve --config web.baseurl=http://hg.example.com:8080/foo/ -p $HGPORT2 -d \
639 > --pid-file=hg.pid --webdir-conf collections.conf \
645 > --pid-file=hg.pid --webdir-conf collections.conf \
640 > -A access-collections-2.log -E error-collections-2.log
646 > -A access-collections-2.log -E error-collections-2.log
641 $ cat hg.pid >> $DAEMON_PIDS
647 $ cat hg.pid >> $DAEMON_PIDS
642
648
643 atom-log with basedir /foo/
649 atom-log with basedir /foo/
644
650
645 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/atom-log' | grep '<link'
651 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/atom-log' | grep '<link'
646 <link rel="self" href="http://hg.example.com:8080/foo/a/atom-log"/>
652 <link rel="self" href="http://hg.example.com:8080/foo/a/atom-log"/>
647 <link rel="alternate" href="http://hg.example.com:8080/foo/a/"/>
653 <link rel="alternate" href="http://hg.example.com:8080/foo/a/"/>
648 <link href="http://hg.example.com:8080/foo/a/rev/8580ff50825a"/>
654 <link href="http://hg.example.com:8080/foo/a/rev/8580ff50825a"/>
649
655
650 rss-log with basedir /foo/
656 rss-log with basedir /foo/
651
657
652 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/rss-log' | grep '<guid'
658 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/rss-log' | grep '<guid'
653 <guid isPermaLink="true">http://hg.example.com:8080/foo/a/rev/8580ff50825a</guid>
659 <guid isPermaLink="true">http://hg.example.com:8080/foo/a/rev/8580ff50825a</guid>
654
660
655 paths errors 1
661 paths errors 1
656
662
657 $ cat error-paths-1.log
663 $ cat error-paths-1.log
658
664
659 paths errors 2
665 paths errors 2
660
666
661 $ cat error-paths-2.log
667 $ cat error-paths-2.log
662
668
663 paths errors 3
669 paths errors 3
664
670
665 $ cat error-paths-3.log
671 $ cat error-paths-3.log
666
672
667 collections errors
673 collections errors
668
674
669 $ cat error-collections.log
675 $ cat error-collections.log
670
676
671 collections errors 2
677 collections errors 2
672
678
673 $ cat error-collections-2.log
679 $ cat error-collections-2.log
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now