##// END OF EJS Templates
templater: readable dates older than 24 months revert to ISO8601 (issue1006)
Dirkjan Ochtman -
r9722:4d9dea17 default
parent child Browse files
Show More
@@ -1,212 +1,215 b''
1 # template-filters.py - common template expansion filters
1 # template-filters.py - common template expansion filters
2 #
2 #
3 # Copyright 2005-2008 Matt Mackall <mpm@selenic.com>
3 # Copyright 2005-2008 Matt Mackall <mpm@selenic.com>
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2, incorporated herein by reference.
6 # GNU General Public License version 2, incorporated herein by reference.
7
7
8 import cgi, re, os, time, urllib, textwrap
8 import cgi, re, os, time, urllib, textwrap
9 import util, encoding
9 import util, encoding
10
10
11 def stringify(thing):
11 def stringify(thing):
12 '''turn nested template iterator into string.'''
12 '''turn nested template iterator into string.'''
13 if hasattr(thing, '__iter__') and not isinstance(thing, str):
13 if hasattr(thing, '__iter__') and not isinstance(thing, str):
14 return "".join([stringify(t) for t in thing if t is not None])
14 return "".join([stringify(t) for t in thing if t is not None])
15 return str(thing)
15 return str(thing)
16
16
17 agescales = [("second", 1),
17 agescales = [("second", 1),
18 ("minute", 60),
18 ("minute", 60),
19 ("hour", 3600),
19 ("hour", 3600),
20 ("day", 3600 * 24),
20 ("day", 3600 * 24),
21 ("week", 3600 * 24 * 7),
21 ("week", 3600 * 24 * 7),
22 ("month", 3600 * 24 * 30),
22 ("month", 3600 * 24 * 30),
23 ("year", 3600 * 24 * 365)]
23 ("year", 3600 * 24 * 365)]
24
24
25 agescales.reverse()
25 agescales.reverse()
26
26
27 def age(date):
27 def age(date):
28 '''turn a (timestamp, tzoff) tuple into an age string.'''
28 '''turn a (timestamp, tzoff) tuple into an age string.'''
29
29
30 def plural(t, c):
30 def plural(t, c):
31 if c == 1:
31 if c == 1:
32 return t
32 return t
33 return t + "s"
33 return t + "s"
34 def fmt(t, c):
34 def fmt(t, c):
35 return "%d %s" % (c, plural(t, c))
35 return "%d %s" % (c, plural(t, c))
36
36
37 now = time.time()
37 now = time.time()
38 then = date[0]
38 then = date[0]
39 if then > now:
39 if then > now:
40 return 'in the future'
40 return 'in the future'
41
41
42 delta = max(1, int(now - then))
42 delta = max(1, int(now - then))
43 if delta > agescales[0][1] * 2:
44 return util.shortdate(date)
45
43 for t, s in agescales:
46 for t, s in agescales:
44 n = delta // s
47 n = delta // s
45 if n >= 2 or s == 1:
48 if n >= 2 or s == 1:
46 return '%s ago' % fmt(t, n)
49 return '%s ago' % fmt(t, n)
47
50
48 para_re = None
51 para_re = None
49 space_re = None
52 space_re = None
50
53
51 def fill(text, width):
54 def fill(text, width):
52 '''fill many paragraphs.'''
55 '''fill many paragraphs.'''
53 global para_re, space_re
56 global para_re, space_re
54 if para_re is None:
57 if para_re is None:
55 para_re = re.compile('(\n\n|\n\\s*[-*]\\s*)', re.M)
58 para_re = re.compile('(\n\n|\n\\s*[-*]\\s*)', re.M)
56 space_re = re.compile(r' +')
59 space_re = re.compile(r' +')
57
60
58 def findparas():
61 def findparas():
59 start = 0
62 start = 0
60 while True:
63 while True:
61 m = para_re.search(text, start)
64 m = para_re.search(text, start)
62 if not m:
65 if not m:
63 w = len(text)
66 w = len(text)
64 while w > start and text[w-1].isspace(): w -= 1
67 while w > start and text[w-1].isspace(): w -= 1
65 yield text[start:w], text[w:]
68 yield text[start:w], text[w:]
66 break
69 break
67 yield text[start:m.start(0)], m.group(1)
70 yield text[start:m.start(0)], m.group(1)
68 start = m.end(1)
71 start = m.end(1)
69
72
70 return "".join([space_re.sub(' ', textwrap.fill(para, width)) + rest
73 return "".join([space_re.sub(' ', textwrap.fill(para, width)) + rest
71 for para, rest in findparas()])
74 for para, rest in findparas()])
72
75
73 def firstline(text):
76 def firstline(text):
74 '''return the first line of text'''
77 '''return the first line of text'''
75 try:
78 try:
76 return text.splitlines(True)[0].rstrip('\r\n')
79 return text.splitlines(True)[0].rstrip('\r\n')
77 except IndexError:
80 except IndexError:
78 return ''
81 return ''
79
82
80 def nl2br(text):
83 def nl2br(text):
81 '''replace raw newlines with xhtml line breaks.'''
84 '''replace raw newlines with xhtml line breaks.'''
82 return text.replace('\n', '<br/>\n')
85 return text.replace('\n', '<br/>\n')
83
86
84 def obfuscate(text):
87 def obfuscate(text):
85 text = unicode(text, encoding.encoding, 'replace')
88 text = unicode(text, encoding.encoding, 'replace')
86 return ''.join(['&#%d;' % ord(c) for c in text])
89 return ''.join(['&#%d;' % ord(c) for c in text])
87
90
88 def domain(author):
91 def domain(author):
89 '''get domain of author, or empty string if none.'''
92 '''get domain of author, or empty string if none.'''
90 f = author.find('@')
93 f = author.find('@')
91 if f == -1: return ''
94 if f == -1: return ''
92 author = author[f+1:]
95 author = author[f+1:]
93 f = author.find('>')
96 f = author.find('>')
94 if f >= 0: author = author[:f]
97 if f >= 0: author = author[:f]
95 return author
98 return author
96
99
97 def person(author):
100 def person(author):
98 '''get name of author, or else username.'''
101 '''get name of author, or else username.'''
99 if not '@' in author: return author
102 if not '@' in author: return author
100 f = author.find('<')
103 f = author.find('<')
101 if f == -1: return util.shortuser(author)
104 if f == -1: return util.shortuser(author)
102 return author[:f].rstrip()
105 return author[:f].rstrip()
103
106
104 def indent(text, prefix):
107 def indent(text, prefix):
105 '''indent each non-empty line of text after first with prefix.'''
108 '''indent each non-empty line of text after first with prefix.'''
106 lines = text.splitlines()
109 lines = text.splitlines()
107 num_lines = len(lines)
110 num_lines = len(lines)
108 endswithnewline = text[-1:] == '\n'
111 endswithnewline = text[-1:] == '\n'
109 def indenter():
112 def indenter():
110 for i in xrange(num_lines):
113 for i in xrange(num_lines):
111 l = lines[i]
114 l = lines[i]
112 if i and l.strip():
115 if i and l.strip():
113 yield prefix
116 yield prefix
114 yield l
117 yield l
115 if i < num_lines - 1 or endswithnewline:
118 if i < num_lines - 1 or endswithnewline:
116 yield '\n'
119 yield '\n'
117 return "".join(indenter())
120 return "".join(indenter())
118
121
119 def permissions(flags):
122 def permissions(flags):
120 if "l" in flags:
123 if "l" in flags:
121 return "lrwxrwxrwx"
124 return "lrwxrwxrwx"
122 if "x" in flags:
125 if "x" in flags:
123 return "-rwxr-xr-x"
126 return "-rwxr-xr-x"
124 return "-rw-r--r--"
127 return "-rw-r--r--"
125
128
126 def xmlescape(text):
129 def xmlescape(text):
127 text = (text
130 text = (text
128 .replace('&', '&amp;')
131 .replace('&', '&amp;')
129 .replace('<', '&lt;')
132 .replace('<', '&lt;')
130 .replace('>', '&gt;')
133 .replace('>', '&gt;')
131 .replace('"', '&quot;')
134 .replace('"', '&quot;')
132 .replace("'", '&#39;')) # &apos; invalid in HTML
135 .replace("'", '&#39;')) # &apos; invalid in HTML
133 return re.sub('[\x00-\x08\x0B\x0C\x0E-\x1F]', ' ', text)
136 return re.sub('[\x00-\x08\x0B\x0C\x0E-\x1F]', ' ', text)
134
137
135 _escapes = [
138 _escapes = [
136 ('\\', '\\\\'), ('"', '\\"'), ('\t', '\\t'), ('\n', '\\n'),
139 ('\\', '\\\\'), ('"', '\\"'), ('\t', '\\t'), ('\n', '\\n'),
137 ('\r', '\\r'), ('\f', '\\f'), ('\b', '\\b'),
140 ('\r', '\\r'), ('\f', '\\f'), ('\b', '\\b'),
138 ]
141 ]
139
142
140 def jsonescape(s):
143 def jsonescape(s):
141 for k, v in _escapes:
144 for k, v in _escapes:
142 s = s.replace(k, v)
145 s = s.replace(k, v)
143 return s
146 return s
144
147
145 def json(obj):
148 def json(obj):
146 if obj is None or obj is False or obj is True:
149 if obj is None or obj is False or obj is True:
147 return {None: 'null', False: 'false', True: 'true'}[obj]
150 return {None: 'null', False: 'false', True: 'true'}[obj]
148 elif isinstance(obj, int) or isinstance(obj, float):
151 elif isinstance(obj, int) or isinstance(obj, float):
149 return str(obj)
152 return str(obj)
150 elif isinstance(obj, str):
153 elif isinstance(obj, str):
151 return '"%s"' % jsonescape(obj)
154 return '"%s"' % jsonescape(obj)
152 elif isinstance(obj, unicode):
155 elif isinstance(obj, unicode):
153 return json(obj.encode('utf-8'))
156 return json(obj.encode('utf-8'))
154 elif hasattr(obj, 'keys'):
157 elif hasattr(obj, 'keys'):
155 out = []
158 out = []
156 for k, v in obj.iteritems():
159 for k, v in obj.iteritems():
157 s = '%s: %s' % (json(k), json(v))
160 s = '%s: %s' % (json(k), json(v))
158 out.append(s)
161 out.append(s)
159 return '{' + ', '.join(out) + '}'
162 return '{' + ', '.join(out) + '}'
160 elif hasattr(obj, '__iter__'):
163 elif hasattr(obj, '__iter__'):
161 out = []
164 out = []
162 for i in obj:
165 for i in obj:
163 out.append(json(i))
166 out.append(json(i))
164 return '[' + ', '.join(out) + ']'
167 return '[' + ', '.join(out) + ']'
165 else:
168 else:
166 raise TypeError('cannot encode type %s' % obj.__class__.__name__)
169 raise TypeError('cannot encode type %s' % obj.__class__.__name__)
167
170
168 def stripdir(text):
171 def stripdir(text):
169 '''Treat the text as path and strip a directory level, if possible.'''
172 '''Treat the text as path and strip a directory level, if possible.'''
170 dir = os.path.dirname(text)
173 dir = os.path.dirname(text)
171 if dir == "":
174 if dir == "":
172 return os.path.basename(text)
175 return os.path.basename(text)
173 else:
176 else:
174 return dir
177 return dir
175
178
176 def nonempty(str):
179 def nonempty(str):
177 return str or "(none)"
180 return str or "(none)"
178
181
179 filters = {
182 filters = {
180 "addbreaks": nl2br,
183 "addbreaks": nl2br,
181 "basename": os.path.basename,
184 "basename": os.path.basename,
182 "stripdir": stripdir,
185 "stripdir": stripdir,
183 "age": age,
186 "age": age,
184 "date": lambda x: util.datestr(x),
187 "date": lambda x: util.datestr(x),
185 "domain": domain,
188 "domain": domain,
186 "email": util.email,
189 "email": util.email,
187 "escape": lambda x: cgi.escape(x, True),
190 "escape": lambda x: cgi.escape(x, True),
188 "fill68": lambda x: fill(x, width=68),
191 "fill68": lambda x: fill(x, width=68),
189 "fill76": lambda x: fill(x, width=76),
192 "fill76": lambda x: fill(x, width=76),
190 "firstline": firstline,
193 "firstline": firstline,
191 "tabindent": lambda x: indent(x, '\t'),
194 "tabindent": lambda x: indent(x, '\t'),
192 "hgdate": lambda x: "%d %d" % x,
195 "hgdate": lambda x: "%d %d" % x,
193 "isodate": lambda x: util.datestr(x, '%Y-%m-%d %H:%M %1%2'),
196 "isodate": lambda x: util.datestr(x, '%Y-%m-%d %H:%M %1%2'),
194 "isodatesec": lambda x: util.datestr(x, '%Y-%m-%d %H:%M:%S %1%2'),
197 "isodatesec": lambda x: util.datestr(x, '%Y-%m-%d %H:%M:%S %1%2'),
195 "json": json,
198 "json": json,
196 "jsonescape": jsonescape,
199 "jsonescape": jsonescape,
197 "localdate": lambda x: (x[0], util.makedate()[1]),
200 "localdate": lambda x: (x[0], util.makedate()[1]),
198 "nonempty": nonempty,
201 "nonempty": nonempty,
199 "obfuscate": obfuscate,
202 "obfuscate": obfuscate,
200 "permissions": permissions,
203 "permissions": permissions,
201 "person": person,
204 "person": person,
202 "rfc822date": lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S %1%2"),
205 "rfc822date": lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S %1%2"),
203 "rfc3339date": lambda x: util.datestr(x, "%Y-%m-%dT%H:%M:%S%1:%2"),
206 "rfc3339date": lambda x: util.datestr(x, "%Y-%m-%dT%H:%M:%S%1:%2"),
204 "short": lambda x: x[:12],
207 "short": lambda x: x[:12],
205 "shortdate": util.shortdate,
208 "shortdate": util.shortdate,
206 "stringify": stringify,
209 "stringify": stringify,
207 "strip": lambda x: x.strip(),
210 "strip": lambda x: x.strip(),
208 "urlescape": lambda x: urllib.quote(x),
211 "urlescape": lambda x: urllib.quote(x),
209 "user": lambda x: util.shortuser(x),
212 "user": lambda x: util.shortuser(x),
210 "stringescape": lambda x: x.encode('string_escape'),
213 "stringescape": lambda x: x.encode('string_escape'),
211 "xmlescape": xmlescape,
214 "xmlescape": xmlescape,
212 }
215 }
@@ -1,30 +1,29 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2
2
3 """This does HTTP GET requests given a host:port and path and returns
3 """This does HTTP GET requests given a host:port and path and returns
4 a subset of the headers plus the body of the result."""
4 a subset of the headers plus the body of the result."""
5
5
6 import httplib, sys, re
6 import httplib, sys, re
7
7
8 try:
8 try:
9 import msvcrt, os
9 import msvcrt, os
10 msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
10 msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
11 msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
11 msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
12 except ImportError:
12 except ImportError:
13 pass
13 pass
14
14
15 headers = [h.lower() for h in sys.argv[3:]]
15 headers = [h.lower() for h in sys.argv[3:]]
16 conn = httplib.HTTPConnection(sys.argv[1])
16 conn = httplib.HTTPConnection(sys.argv[1])
17 conn.request("GET", sys.argv[2])
17 conn.request("GET", sys.argv[2])
18 response = conn.getresponse()
18 response = conn.getresponse()
19 print response.status, response.reason
19 print response.status, response.reason
20 for h in headers:
20 for h in headers:
21 if response.getheader(h, None) is not None:
21 if response.getheader(h, None) is not None:
22 print "%s: %s" % (h, response.getheader(h))
22 print "%s: %s" % (h, response.getheader(h))
23 print
23 print
24 data = response.read()
24 data = response.read()
25 data = re.sub('\d+ years', 'many years', data)
26 sys.stdout.write(data)
25 sys.stdout.write(data)
27
26
28 if 200 <= response.status <= 299:
27 if 200 <= response.status <= 299:
29 sys.exit(0)
28 sys.exit(0)
30 sys.exit(1)
29 sys.exit(1)
@@ -1,991 +1,991 b''
1 % Set up the repo
1 % Set up the repo
2 adding da/foo
2 adding da/foo
3 adding foo
3 adding foo
4 marked working directory as branch stable
4 marked working directory as branch stable
5 % Logs and changes
5 % Logs and changes
6 200 Script output follows
6 200 Script output follows
7
7
8 <?xml version="1.0" encoding="ascii"?>
8 <?xml version="1.0" encoding="ascii"?>
9 <feed xmlns="http://127.0.0.1/2005/Atom">
9 <feed xmlns="http://127.0.0.1/2005/Atom">
10 <!-- Changelog -->
10 <!-- Changelog -->
11 <id>http://127.0.0.1/</id>
11 <id>http://127.0.0.1/</id>
12 <link rel="self" href="http://127.0.0.1/atom-log"/>
12 <link rel="self" href="http://127.0.0.1/atom-log"/>
13 <link rel="alternate" href="http://127.0.0.1/"/>
13 <link rel="alternate" href="http://127.0.0.1/"/>
14 <title>test Changelog</title>
14 <title>test Changelog</title>
15 <updated>1970-01-01T00:00:00+00:00</updated>
15 <updated>1970-01-01T00:00:00+00:00</updated>
16
16
17 <entry>
17 <entry>
18 <title>branch</title>
18 <title>branch</title>
19 <id>http://127.0.0.1/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id>
19 <id>http://127.0.0.1/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id>
20 <link href="http://127.0.0.1/rev/1d22e65f027e"/>
20 <link href="http://127.0.0.1/rev/1d22e65f027e"/>
21 <author>
21 <author>
22 <name>test</name>
22 <name>test</name>
23 <email>&#116;&#101;&#115;&#116;</email>
23 <email>&#116;&#101;&#115;&#116;</email>
24 </author>
24 </author>
25 <updated>1970-01-01T00:00:00+00:00</updated>
25 <updated>1970-01-01T00:00:00+00:00</updated>
26 <published>1970-01-01T00:00:00+00:00</published>
26 <published>1970-01-01T00:00:00+00:00</published>
27 <content type="xhtml">
27 <content type="xhtml">
28 <div xmlns="http://127.0.0.1/1999/xhtml">
28 <div xmlns="http://127.0.0.1/1999/xhtml">
29 <pre xml:space="preserve">branch</pre>
29 <pre xml:space="preserve">branch</pre>
30 </div>
30 </div>
31 </content>
31 </content>
32 </entry>
32 </entry>
33 <entry>
33 <entry>
34 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
34 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
35 <id>http://127.0.0.1/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id>
35 <id>http://127.0.0.1/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id>
36 <link href="http://127.0.0.1/rev/a4f92ed23982"/>
36 <link href="http://127.0.0.1/rev/a4f92ed23982"/>
37 <author>
37 <author>
38 <name>test</name>
38 <name>test</name>
39 <email>&#116;&#101;&#115;&#116;</email>
39 <email>&#116;&#101;&#115;&#116;</email>
40 </author>
40 </author>
41 <updated>1970-01-01T00:00:00+00:00</updated>
41 <updated>1970-01-01T00:00:00+00:00</updated>
42 <published>1970-01-01T00:00:00+00:00</published>
42 <published>1970-01-01T00:00:00+00:00</published>
43 <content type="xhtml">
43 <content type="xhtml">
44 <div xmlns="http://127.0.0.1/1999/xhtml">
44 <div xmlns="http://127.0.0.1/1999/xhtml">
45 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
45 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
46 </div>
46 </div>
47 </content>
47 </content>
48 </entry>
48 </entry>
49 <entry>
49 <entry>
50 <title>base</title>
50 <title>base</title>
51 <id>http://127.0.0.1/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
51 <id>http://127.0.0.1/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
52 <link href="http://127.0.0.1/rev/2ef0ac749a14"/>
52 <link href="http://127.0.0.1/rev/2ef0ac749a14"/>
53 <author>
53 <author>
54 <name>test</name>
54 <name>test</name>
55 <email>&#116;&#101;&#115;&#116;</email>
55 <email>&#116;&#101;&#115;&#116;</email>
56 </author>
56 </author>
57 <updated>1970-01-01T00:00:00+00:00</updated>
57 <updated>1970-01-01T00:00:00+00:00</updated>
58 <published>1970-01-01T00:00:00+00:00</published>
58 <published>1970-01-01T00:00:00+00:00</published>
59 <content type="xhtml">
59 <content type="xhtml">
60 <div xmlns="http://127.0.0.1/1999/xhtml">
60 <div xmlns="http://127.0.0.1/1999/xhtml">
61 <pre xml:space="preserve">base</pre>
61 <pre xml:space="preserve">base</pre>
62 </div>
62 </div>
63 </content>
63 </content>
64 </entry>
64 </entry>
65
65
66 </feed>
66 </feed>
67 200 Script output follows
67 200 Script output follows
68
68
69 <?xml version="1.0" encoding="ascii"?>
69 <?xml version="1.0" encoding="ascii"?>
70 <feed xmlns="http://127.0.0.1/2005/Atom">
70 <feed xmlns="http://127.0.0.1/2005/Atom">
71 <!-- Changelog -->
71 <!-- Changelog -->
72 <id>http://127.0.0.1/</id>
72 <id>http://127.0.0.1/</id>
73 <link rel="self" href="http://127.0.0.1/atom-log"/>
73 <link rel="self" href="http://127.0.0.1/atom-log"/>
74 <link rel="alternate" href="http://127.0.0.1/"/>
74 <link rel="alternate" href="http://127.0.0.1/"/>
75 <title>test Changelog</title>
75 <title>test Changelog</title>
76 <updated>1970-01-01T00:00:00+00:00</updated>
76 <updated>1970-01-01T00:00:00+00:00</updated>
77
77
78 <entry>
78 <entry>
79 <title>branch</title>
79 <title>branch</title>
80 <id>http://127.0.0.1/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id>
80 <id>http://127.0.0.1/#changeset-1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe</id>
81 <link href="http://127.0.0.1/rev/1d22e65f027e"/>
81 <link href="http://127.0.0.1/rev/1d22e65f027e"/>
82 <author>
82 <author>
83 <name>test</name>
83 <name>test</name>
84 <email>&#116;&#101;&#115;&#116;</email>
84 <email>&#116;&#101;&#115;&#116;</email>
85 </author>
85 </author>
86 <updated>1970-01-01T00:00:00+00:00</updated>
86 <updated>1970-01-01T00:00:00+00:00</updated>
87 <published>1970-01-01T00:00:00+00:00</published>
87 <published>1970-01-01T00:00:00+00:00</published>
88 <content type="xhtml">
88 <content type="xhtml">
89 <div xmlns="http://127.0.0.1/1999/xhtml">
89 <div xmlns="http://127.0.0.1/1999/xhtml">
90 <pre xml:space="preserve">branch</pre>
90 <pre xml:space="preserve">branch</pre>
91 </div>
91 </div>
92 </content>
92 </content>
93 </entry>
93 </entry>
94 <entry>
94 <entry>
95 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
95 <title>Added tag 1.0 for changeset 2ef0ac749a14</title>
96 <id>http://127.0.0.1/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id>
96 <id>http://127.0.0.1/#changeset-a4f92ed23982be056b9852de5dfe873eaac7f0de</id>
97 <link href="http://127.0.0.1/rev/a4f92ed23982"/>
97 <link href="http://127.0.0.1/rev/a4f92ed23982"/>
98 <author>
98 <author>
99 <name>test</name>
99 <name>test</name>
100 <email>&#116;&#101;&#115;&#116;</email>
100 <email>&#116;&#101;&#115;&#116;</email>
101 </author>
101 </author>
102 <updated>1970-01-01T00:00:00+00:00</updated>
102 <updated>1970-01-01T00:00:00+00:00</updated>
103 <published>1970-01-01T00:00:00+00:00</published>
103 <published>1970-01-01T00:00:00+00:00</published>
104 <content type="xhtml">
104 <content type="xhtml">
105 <div xmlns="http://127.0.0.1/1999/xhtml">
105 <div xmlns="http://127.0.0.1/1999/xhtml">
106 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
106 <pre xml:space="preserve">Added tag 1.0 for changeset 2ef0ac749a14</pre>
107 </div>
107 </div>
108 </content>
108 </content>
109 </entry>
109 </entry>
110 <entry>
110 <entry>
111 <title>base</title>
111 <title>base</title>
112 <id>http://127.0.0.1/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
112 <id>http://127.0.0.1/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
113 <link href="http://127.0.0.1/rev/2ef0ac749a14"/>
113 <link href="http://127.0.0.1/rev/2ef0ac749a14"/>
114 <author>
114 <author>
115 <name>test</name>
115 <name>test</name>
116 <email>&#116;&#101;&#115;&#116;</email>
116 <email>&#116;&#101;&#115;&#116;</email>
117 </author>
117 </author>
118 <updated>1970-01-01T00:00:00+00:00</updated>
118 <updated>1970-01-01T00:00:00+00:00</updated>
119 <published>1970-01-01T00:00:00+00:00</published>
119 <published>1970-01-01T00:00:00+00:00</published>
120 <content type="xhtml">
120 <content type="xhtml">
121 <div xmlns="http://127.0.0.1/1999/xhtml">
121 <div xmlns="http://127.0.0.1/1999/xhtml">
122 <pre xml:space="preserve">base</pre>
122 <pre xml:space="preserve">base</pre>
123 </div>
123 </div>
124 </content>
124 </content>
125 </entry>
125 </entry>
126
126
127 </feed>
127 </feed>
128 200 Script output follows
128 200 Script output follows
129
129
130 <?xml version="1.0" encoding="ascii"?>
130 <?xml version="1.0" encoding="ascii"?>
131 <feed xmlns="http://127.0.0.1/2005/Atom">
131 <feed xmlns="http://127.0.0.1/2005/Atom">
132 <id>http://127.0.0.1/atom-log/tip/foo</id>
132 <id>http://127.0.0.1/atom-log/tip/foo</id>
133 <link rel="self" href="http://127.0.0.1/atom-log/tip/foo"/>
133 <link rel="self" href="http://127.0.0.1/atom-log/tip/foo"/>
134 <title>test: foo history</title>
134 <title>test: foo history</title>
135 <updated>1970-01-01T00:00:00+00:00</updated>
135 <updated>1970-01-01T00:00:00+00:00</updated>
136
136
137 <entry>
137 <entry>
138 <title>base</title>
138 <title>base</title>
139 <id>http://127.0.0.1/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
139 <id>http://127.0.0.1/#changeset-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
140 <link href="http://127.0.0.1/rev/2ef0ac749a14"/>
140 <link href="http://127.0.0.1/rev/2ef0ac749a14"/>
141 <author>
141 <author>
142 <name>test</name>
142 <name>test</name>
143 <email>&#116;&#101;&#115;&#116;</email>
143 <email>&#116;&#101;&#115;&#116;</email>
144 </author>
144 </author>
145 <updated>1970-01-01T00:00:00+00:00</updated>
145 <updated>1970-01-01T00:00:00+00:00</updated>
146 <published>1970-01-01T00:00:00+00:00</published>
146 <published>1970-01-01T00:00:00+00:00</published>
147 <content type="xhtml">
147 <content type="xhtml">
148 <div xmlns="http://127.0.0.1/1999/xhtml">
148 <div xmlns="http://127.0.0.1/1999/xhtml">
149 <pre xml:space="preserve">base</pre>
149 <pre xml:space="preserve">base</pre>
150 </div>
150 </div>
151 </content>
151 </content>
152 </entry>
152 </entry>
153
153
154 </feed>
154 </feed>
155 200 Script output follows
155 200 Script output follows
156
156
157 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
157 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
158 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
158 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
159 <head>
159 <head>
160 <link rel="icon" href="/static/hgicon.png" type="image/png" />
160 <link rel="icon" href="/static/hgicon.png" type="image/png" />
161 <meta name="robots" content="index, nofollow" />
161 <meta name="robots" content="index, nofollow" />
162 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
162 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
163
163
164 <title>test: log</title>
164 <title>test: log</title>
165 <link rel="alternate" type="application/atom+xml"
165 <link rel="alternate" type="application/atom+xml"
166 href="/atom-log" title="Atom feed for test" />
166 href="/atom-log" title="Atom feed for test" />
167 <link rel="alternate" type="application/rss+xml"
167 <link rel="alternate" type="application/rss+xml"
168 href="/rss-log" title="RSS feed for test" />
168 href="/rss-log" title="RSS feed for test" />
169 </head>
169 </head>
170 <body>
170 <body>
171
171
172 <div class="container">
172 <div class="container">
173 <div class="menu">
173 <div class="menu">
174 <div class="logo">
174 <div class="logo">
175 <a href="http://mercurial.selenic.com/">
175 <a href="http://mercurial.selenic.com/">
176 <img src="/static/hglogo.png" alt="mercurial" /></a>
176 <img src="/static/hglogo.png" alt="mercurial" /></a>
177 </div>
177 </div>
178 <ul>
178 <ul>
179 <li class="active">log</li>
179 <li class="active">log</li>
180 <li><a href="/graph/1d22e65f027e">graph</a></li>
180 <li><a href="/graph/1d22e65f027e">graph</a></li>
181 <li><a href="/tags">tags</a></li>
181 <li><a href="/tags">tags</a></li>
182 <li><a href="/branches">branches</a></li>
182 <li><a href="/branches">branches</a></li>
183 </ul>
183 </ul>
184 <ul>
184 <ul>
185 <li><a href="/rev/1d22e65f027e">changeset</a></li>
185 <li><a href="/rev/1d22e65f027e">changeset</a></li>
186 <li><a href="/file/1d22e65f027e">browse</a></li>
186 <li><a href="/file/1d22e65f027e">browse</a></li>
187 </ul>
187 </ul>
188 <ul>
188 <ul>
189
189
190 </ul>
190 </ul>
191 </div>
191 </div>
192
192
193 <div class="main">
193 <div class="main">
194 <h2><a href="/">test</a></h2>
194 <h2><a href="/">test</a></h2>
195 <h3>log</h3>
195 <h3>log</h3>
196
196
197 <form class="search" action="/log">
197 <form class="search" action="/log">
198
198
199 <p><input name="rev" id="search1" type="text" size="30" /></p>
199 <p><input name="rev" id="search1" type="text" size="30" /></p>
200 <div id="hint">find changesets by author, revision,
200 <div id="hint">find changesets by author, revision,
201 files, or words in the commit message</div>
201 files, or words in the commit message</div>
202 </form>
202 </form>
203
203
204 <div class="navigate">rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a> </div>
204 <div class="navigate">rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a> </div>
205
205
206 <table class="bigtable">
206 <table class="bigtable">
207 <tr>
207 <tr>
208 <th class="age">age</th>
208 <th class="age">age</th>
209 <th class="author">author</th>
209 <th class="author">author</th>
210 <th class="description">description</th>
210 <th class="description">description</th>
211 </tr>
211 </tr>
212 <tr class="parity0">
212 <tr class="parity0">
213 <td class="age">many years ago</td>
213 <td class="age">1970-01-01</td>
214 <td class="author">test</td>
214 <td class="author">test</td>
215 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> </td>
215 <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> </td>
216 </tr>
216 </tr>
217 <tr class="parity1">
217 <tr class="parity1">
218 <td class="age">many years ago</td>
218 <td class="age">1970-01-01</td>
219 <td class="author">test</td>
219 <td class="author">test</td>
220 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
220 <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
221 </tr>
221 </tr>
222 <tr class="parity0">
222 <tr class="parity0">
223 <td class="age">many years ago</td>
223 <td class="age">1970-01-01</td>
224 <td class="author">test</td>
224 <td class="author">test</td>
225 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
225 <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> </td>
226 </tr>
226 </tr>
227
227
228 </table>
228 </table>
229
229
230 <div class="navigate">rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a> </div>
230 <div class="navigate">rev 2: <a href="/shortlog/2ef0ac749a14">(0)</a> <a href="/shortlog/tip">tip</a> </div>
231 </div>
231 </div>
232 </div>
232 </div>
233
233
234
234
235
235
236 </body>
236 </body>
237 </html>
237 </html>
238
238
239 200 Script output follows
239 200 Script output follows
240
240
241 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
241 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
242 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
242 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
243 <head>
243 <head>
244 <link rel="icon" href="/static/hgicon.png" type="image/png" />
244 <link rel="icon" href="/static/hgicon.png" type="image/png" />
245 <meta name="robots" content="index, nofollow" />
245 <meta name="robots" content="index, nofollow" />
246 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
246 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
247
247
248 <title>test: 2ef0ac749a14</title>
248 <title>test: 2ef0ac749a14</title>
249 </head>
249 </head>
250 <body>
250 <body>
251 <div class="container">
251 <div class="container">
252 <div class="menu">
252 <div class="menu">
253 <div class="logo">
253 <div class="logo">
254 <a href="http://mercurial.selenic.com/">
254 <a href="http://mercurial.selenic.com/">
255 <img src="/static/hglogo.png" alt="mercurial" /></a>
255 <img src="/static/hglogo.png" alt="mercurial" /></a>
256 </div>
256 </div>
257 <ul>
257 <ul>
258 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
258 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
259 <li><a href="/graph/2ef0ac749a14">graph</a></li>
259 <li><a href="/graph/2ef0ac749a14">graph</a></li>
260 <li><a href="/tags">tags</a></li>
260 <li><a href="/tags">tags</a></li>
261 <li><a href="/branches">branches</a></li>
261 <li><a href="/branches">branches</a></li>
262 </ul>
262 </ul>
263 <ul>
263 <ul>
264 <li class="active">changeset</li>
264 <li class="active">changeset</li>
265 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
265 <li><a href="/raw-rev/2ef0ac749a14">raw</a></li>
266 <li><a href="/file/2ef0ac749a14">browse</a></li>
266 <li><a href="/file/2ef0ac749a14">browse</a></li>
267 </ul>
267 </ul>
268 <ul>
268 <ul>
269
269
270 </ul>
270 </ul>
271 </div>
271 </div>
272
272
273 <div class="main">
273 <div class="main">
274
274
275 <h2><a href="/">test</a></h2>
275 <h2><a href="/">test</a></h2>
276 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> </h3>
276 <h3>changeset 0:2ef0ac749a14 <span class="tag">1.0</span> </h3>
277
277
278 <form class="search" action="/log">
278 <form class="search" action="/log">
279
279
280 <p><input name="rev" id="search1" type="text" size="30" /></p>
280 <p><input name="rev" id="search1" type="text" size="30" /></p>
281 <div id="hint">find changesets by author, revision,
281 <div id="hint">find changesets by author, revision,
282 files, or words in the commit message</div>
282 files, or words in the commit message</div>
283 </form>
283 </form>
284
284
285 <div class="description">base</div>
285 <div class="description">base</div>
286
286
287 <table id="changesetEntry">
287 <table id="changesetEntry">
288 <tr>
288 <tr>
289 <th class="author">author</th>
289 <th class="author">author</th>
290 <td class="author">&#116;&#101;&#115;&#116;</td>
290 <td class="author">&#116;&#101;&#115;&#116;</td>
291 </tr>
291 </tr>
292 <tr>
292 <tr>
293 <th class="date">date</th>
293 <th class="date">date</th>
294 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td></tr>
294 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
295 <tr>
295 <tr>
296 <th class="author">parents</th>
296 <th class="author">parents</th>
297 <td class="author"></td>
297 <td class="author"></td>
298 </tr>
298 </tr>
299 <tr>
299 <tr>
300 <th class="author">children</th>
300 <th class="author">children</th>
301 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
301 <td class="author"> <a href="/rev/a4f92ed23982">a4f92ed23982</a></td>
302 </tr>
302 </tr>
303 <tr>
303 <tr>
304 <th class="files">files</th>
304 <th class="files">files</th>
305 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
305 <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
306 </tr>
306 </tr>
307 </table>
307 </table>
308
308
309 <div class="overflow">
309 <div class="overflow">
310 <div class="sourcefirst"> line diff</div>
310 <div class="sourcefirst"> line diff</div>
311
311
312 <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
312 <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
313 </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
313 </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
314 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
314 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
315 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
315 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+foo
316 </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
316 </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
317 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
317 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/foo Thu Jan 01 00:00:00 1970 +0000
318 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
318 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
319 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
319 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+foo
320 </span></pre></div>
320 </span></pre></div>
321 </div>
321 </div>
322
322
323 </div>
323 </div>
324 </div>
324 </div>
325
325
326
326
327 </body>
327 </body>
328 </html>
328 </html>
329
329
330 200 Script output follows
330 200 Script output follows
331
331
332
332
333 # HG changeset patch
333 # HG changeset patch
334 # User test
334 # User test
335 # Date 0 0
335 # Date 0 0
336 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
336 # Node ID a4f92ed23982be056b9852de5dfe873eaac7f0de
337 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
337 # Parent 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
338 Added tag 1.0 for changeset 2ef0ac749a14
338 Added tag 1.0 for changeset 2ef0ac749a14
339
339
340 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
340 diff -r 2ef0ac749a14 -r a4f92ed23982 .hgtags
341 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
341 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
342 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
342 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
343 @@ -0,0 +1,1 @@
343 @@ -0,0 +1,1 @@
344 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
344 +2ef0ac749a14e4f57a5a822464a0902c6f7f448f 1.0
345
345
346 % File-related
346 % File-related
347 200 Script output follows
347 200 Script output follows
348
348
349 foo
349 foo
350 200 Script output follows
350 200 Script output follows
351
351
352
352
353 test@0: foo
353 test@0: foo
354
354
355
355
356
356
357
357
358 200 Script output follows
358 200 Script output follows
359
359
360
360
361 drwxr-xr-x da
361 drwxr-xr-x da
362 -rw-r--r-- 45 .hgtags
362 -rw-r--r-- 45 .hgtags
363 -rw-r--r-- 4 foo
363 -rw-r--r-- 4 foo
364
364
365
365
366 200 Script output follows
366 200 Script output follows
367
367
368 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
368 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
369 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
369 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
370 <head>
370 <head>
371 <link rel="icon" href="/static/hgicon.png" type="image/png" />
371 <link rel="icon" href="/static/hgicon.png" type="image/png" />
372 <meta name="robots" content="index, nofollow" />
372 <meta name="robots" content="index, nofollow" />
373 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
373 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
374
374
375 <title>test: a4f92ed23982 foo</title>
375 <title>test: a4f92ed23982 foo</title>
376 </head>
376 </head>
377 <body>
377 <body>
378
378
379 <div class="container">
379 <div class="container">
380 <div class="menu">
380 <div class="menu">
381 <div class="logo">
381 <div class="logo">
382 <a href="http://mercurial.selenic.com/">
382 <a href="http://mercurial.selenic.com/">
383 <img src="/static/hglogo.png" alt="mercurial" /></a>
383 <img src="/static/hglogo.png" alt="mercurial" /></a>
384 </div>
384 </div>
385 <ul>
385 <ul>
386 <li><a href="/shortlog/a4f92ed23982">log</a></li>
386 <li><a href="/shortlog/a4f92ed23982">log</a></li>
387 <li><a href="/graph/a4f92ed23982">graph</a></li>
387 <li><a href="/graph/a4f92ed23982">graph</a></li>
388 <li><a href="/tags">tags</a></li>
388 <li><a href="/tags">tags</a></li>
389 <li><a href="/branches">branches</a></li>
389 <li><a href="/branches">branches</a></li>
390 </ul>
390 </ul>
391 <ul>
391 <ul>
392 <li><a href="/rev/a4f92ed23982">changeset</a></li>
392 <li><a href="/rev/a4f92ed23982">changeset</a></li>
393 <li><a href="/file/a4f92ed23982/">browse</a></li>
393 <li><a href="/file/a4f92ed23982/">browse</a></li>
394 </ul>
394 </ul>
395 <ul>
395 <ul>
396 <li class="active">file</li>
396 <li class="active">file</li>
397 <li><a href="/file/tip/foo">latest</a></li>
397 <li><a href="/file/tip/foo">latest</a></li>
398 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
398 <li><a href="/diff/a4f92ed23982/foo">diff</a></li>
399 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
399 <li><a href="/annotate/a4f92ed23982/foo">annotate</a></li>
400 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
400 <li><a href="/log/a4f92ed23982/foo">file log</a></li>
401 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
401 <li><a href="/raw-file/a4f92ed23982/foo">raw</a></li>
402 </ul>
402 </ul>
403 </div>
403 </div>
404
404
405 <div class="main">
405 <div class="main">
406 <h2><a href="/">test</a></h2>
406 <h2><a href="/">test</a></h2>
407 <h3>view foo @ 1:a4f92ed23982</h3>
407 <h3>view foo @ 1:a4f92ed23982</h3>
408
408
409 <form class="search" action="/log">
409 <form class="search" action="/log">
410
410
411 <p><input name="rev" id="search1" type="text" size="30" /></p>
411 <p><input name="rev" id="search1" type="text" size="30" /></p>
412 <div id="hint">find changesets by author, revision,
412 <div id="hint">find changesets by author, revision,
413 files, or words in the commit message</div>
413 files, or words in the commit message</div>
414 </form>
414 </form>
415
415
416 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
416 <div class="description">Added tag 1.0 for changeset 2ef0ac749a14</div>
417
417
418 <table id="changesetEntry">
418 <table id="changesetEntry">
419 <tr>
419 <tr>
420 <th class="author">author</th>
420 <th class="author">author</th>
421 <td class="author">&#116;&#101;&#115;&#116;</td>
421 <td class="author">&#116;&#101;&#115;&#116;</td>
422 </tr>
422 </tr>
423 <tr>
423 <tr>
424 <th class="date">date</th>
424 <th class="date">date</th>
425 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
425 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
426 </tr>
426 </tr>
427 <tr>
427 <tr>
428 <th class="author">parents</th>
428 <th class="author">parents</th>
429 <td class="author"></td>
429 <td class="author"></td>
430 </tr>
430 </tr>
431 <tr>
431 <tr>
432 <th class="author">children</th>
432 <th class="author">children</th>
433 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
433 <td class="author"><a href="/file/1d22e65f027e/foo">1d22e65f027e</a> </td>
434 </tr>
434 </tr>
435
435
436 </table>
436 </table>
437
437
438 <div class="overflow">
438 <div class="overflow">
439 <div class="sourcefirst"> line source</div>
439 <div class="sourcefirst"> line source</div>
440
440
441 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
441 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
442 </div>
442 </div>
443 <div class="sourcelast"></div>
443 <div class="sourcelast"></div>
444 </div>
444 </div>
445 </div>
445 </div>
446 </div>
446 </div>
447
447
448
448
449
449
450 </body>
450 </body>
451 </html>
451 </html>
452
452
453 200 Script output follows
453 200 Script output follows
454
454
455
455
456 diff -r 000000000000 -r a4f92ed23982 foo
456 diff -r 000000000000 -r a4f92ed23982 foo
457 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
457 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
458 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
458 +++ b/foo Thu Jan 01 00:00:00 1970 +0000
459 @@ -0,0 +1,1 @@
459 @@ -0,0 +1,1 @@
460 +foo
460 +foo
461
461
462
462
463
463
464
464
465 % Overviews
465 % Overviews
466 200 Script output follows
466 200 Script output follows
467
467
468 <?xml version="1.0" encoding="ascii"?>
468 <?xml version="1.0" encoding="ascii"?>
469 <feed xmlns="http://127.0.0.1/2005/Atom">
469 <feed xmlns="http://127.0.0.1/2005/Atom">
470 <id>http://127.0.0.1/</id>
470 <id>http://127.0.0.1/</id>
471 <link rel="self" href="http://127.0.0.1/atom-tags"/>
471 <link rel="self" href="http://127.0.0.1/atom-tags"/>
472 <link rel="alternate" href="http://127.0.0.1/tags"/>
472 <link rel="alternate" href="http://127.0.0.1/tags"/>
473 <title>test: tags</title>
473 <title>test: tags</title>
474 <summary>test tag history</summary>
474 <summary>test tag history</summary>
475 <author><name>Mercurial SCM</name></author>
475 <author><name>Mercurial SCM</name></author>
476 <updated>1970-01-01T00:00:00+00:00</updated>
476 <updated>1970-01-01T00:00:00+00:00</updated>
477
477
478 <entry>
478 <entry>
479 <title>1.0</title>
479 <title>1.0</title>
480 <link rel="alternate" href="http://127.0.0.1/rev/2ef0ac749a14"/>
480 <link rel="alternate" href="http://127.0.0.1/rev/2ef0ac749a14"/>
481 <id>http://127.0.0.1/#tag-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
481 <id>http://127.0.0.1/#tag-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
482 <updated>1970-01-01T00:00:00+00:00</updated>
482 <updated>1970-01-01T00:00:00+00:00</updated>
483 <published>1970-01-01T00:00:00+00:00</published>
483 <published>1970-01-01T00:00:00+00:00</published>
484 <content type="text">1.0</content>
484 <content type="text">1.0</content>
485 </entry>
485 </entry>
486
486
487 </feed>
487 </feed>
488 200 Script output follows
488 200 Script output follows
489
489
490 <?xml version="1.0" encoding="ascii"?>
490 <?xml version="1.0" encoding="ascii"?>
491 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://127.0.0.1/TR/xhtml1/DTD/xhtml1-strict.dtd">
491 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://127.0.0.1/TR/xhtml1/DTD/xhtml1-strict.dtd">
492 <html xmlns="http://127.0.0.1/1999/xhtml" xml:lang="en-US" lang="en-US">
492 <html xmlns="http://127.0.0.1/1999/xhtml" xml:lang="en-US" lang="en-US">
493 <head>
493 <head>
494 <link rel="icon" href="/static/hgicon.png" type="image/png" />
494 <link rel="icon" href="/static/hgicon.png" type="image/png" />
495 <meta name="robots" content="index, nofollow"/>
495 <meta name="robots" content="index, nofollow"/>
496 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
496 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
497
497
498
498
499 <title>test: Branches</title>
499 <title>test: Branches</title>
500 <link rel="alternate" type="application/atom+xml"
500 <link rel="alternate" type="application/atom+xml"
501 href="/atom-tags" title="Atom feed for test"/>
501 href="/atom-tags" title="Atom feed for test"/>
502 <link rel="alternate" type="application/rss+xml"
502 <link rel="alternate" type="application/rss+xml"
503 href="/rss-tags" title="RSS feed for test"/>
503 href="/rss-tags" title="RSS feed for test"/>
504 </head>
504 </head>
505 <body>
505 <body>
506
506
507 <div class="page_header">
507 <div class="page_header">
508 <a href="http://127.0.0.1/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / branches
508 <a href="http://127.0.0.1/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / branches
509 </div>
509 </div>
510
510
511 <div class="page_nav">
511 <div class="page_nav">
512 <a href="/summary?style=gitweb">summary</a> |
512 <a href="/summary?style=gitweb">summary</a> |
513 <a href="/shortlog?style=gitweb">shortlog</a> |
513 <a href="/shortlog?style=gitweb">shortlog</a> |
514 <a href="/log?style=gitweb">changelog</a> |
514 <a href="/log?style=gitweb">changelog</a> |
515 <a href="/graph?style=gitweb">graph</a> |
515 <a href="/graph?style=gitweb">graph</a> |
516 <a href="/tags?style=gitweb">tags</a> |
516 <a href="/tags?style=gitweb">tags</a> |
517 branches |
517 branches |
518 <a href="/file/1d22e65f027e?style=gitweb">files</a>
518 <a href="/file/1d22e65f027e?style=gitweb">files</a>
519 <br/>
519 <br/>
520 </div>
520 </div>
521
521
522 <div class="title">&nbsp;</div>
522 <div class="title">&nbsp;</div>
523 <table cellspacing="0">
523 <table cellspacing="0">
524
524
525 <tr class="parity0">
525 <tr class="parity0">
526 <td class="age"><i>many years ago</i></td>
526 <td class="age"><i>1970-01-01</i></td>
527 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
527 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
528 <td class="open">stable</td>
528 <td class="open">stable</td>
529 <td class="link">
529 <td class="link">
530 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
530 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
531 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
531 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
532 <a href="/file/1d22e65f027e?style=gitweb">files</a>
532 <a href="/file/1d22e65f027e?style=gitweb">files</a>
533 </td>
533 </td>
534 </tr>
534 </tr>
535 <tr class="parity1">
535 <tr class="parity1">
536 <td class="age"><i>many years ago</i></td>
536 <td class="age"><i>1970-01-01</i></td>
537 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
537 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
538 <td class="inactive">default</td>
538 <td class="inactive">default</td>
539 <td class="link">
539 <td class="link">
540 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
540 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
541 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
541 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
542 <a href="/file/a4f92ed23982?style=gitweb">files</a>
542 <a href="/file/a4f92ed23982?style=gitweb">files</a>
543 </td>
543 </td>
544 </tr>
544 </tr>
545 </table>
545 </table>
546
546
547 <div class="page_footer">
547 <div class="page_footer">
548 <div class="page_footer_text">test</div>
548 <div class="page_footer_text">test</div>
549 <div class="rss_logo">
549 <div class="rss_logo">
550 <a href="/rss-log">RSS</a>
550 <a href="/rss-log">RSS</a>
551 <a href="/atom-log">Atom</a>
551 <a href="/atom-log">Atom</a>
552 </div>
552 </div>
553 <br />
553 <br />
554
554
555 </div>
555 </div>
556 </body>
556 </body>
557 </html>
557 </html>
558
558
559 200 Script output follows
559 200 Script output follows
560
560
561 <?xml version="1.0" encoding="ascii"?>
561 <?xml version="1.0" encoding="ascii"?>
562 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
562 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
563 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
563 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
564 <head>
564 <head>
565 <link rel="icon" href="/static/hgicon.png" type="image/png" />
565 <link rel="icon" href="/static/hgicon.png" type="image/png" />
566 <meta name="robots" content="index, nofollow"/>
566 <meta name="robots" content="index, nofollow"/>
567 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
567 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
568
568
569
569
570 <title>test: Summary</title>
570 <title>test: Summary</title>
571 <link rel="alternate" type="application/atom+xml"
571 <link rel="alternate" type="application/atom+xml"
572 href="/atom-log" title="Atom feed for test"/>
572 href="/atom-log" title="Atom feed for test"/>
573 <link rel="alternate" type="application/rss+xml"
573 <link rel="alternate" type="application/rss+xml"
574 href="/rss-log" title="RSS feed for test"/>
574 href="/rss-log" title="RSS feed for test"/>
575 </head>
575 </head>
576 <body>
576 <body>
577
577
578 <div class="page_header">
578 <div class="page_header">
579 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
579 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
580
580
581 <form action="/log">
581 <form action="/log">
582 <input type="hidden" name="style" value="gitweb" />
582 <input type="hidden" name="style" value="gitweb" />
583 <div class="search">
583 <div class="search">
584 <input type="text" name="rev" />
584 <input type="text" name="rev" />
585 </div>
585 </div>
586 </form>
586 </form>
587 </div>
587 </div>
588
588
589 <div class="page_nav">
589 <div class="page_nav">
590 summary |
590 summary |
591 <a href="/shortlog?style=gitweb">shortlog</a> |
591 <a href="/shortlog?style=gitweb">shortlog</a> |
592 <a href="/log?style=gitweb">changelog</a> |
592 <a href="/log?style=gitweb">changelog</a> |
593 <a href="/graph?style=gitweb">graph</a> |
593 <a href="/graph?style=gitweb">graph</a> |
594 <a href="/tags?style=gitweb">tags</a> |
594 <a href="/tags?style=gitweb">tags</a> |
595 <a href="/branches?style=gitweb">branches</a> |
595 <a href="/branches?style=gitweb">branches</a> |
596 <a href="/file/1d22e65f027e?style=gitweb">files</a>
596 <a href="/file/1d22e65f027e?style=gitweb">files</a>
597 <br/>
597 <br/>
598 </div>
598 </div>
599
599
600 <div class="title">&nbsp;</div>
600 <div class="title">&nbsp;</div>
601 <table cellspacing="0">
601 <table cellspacing="0">
602 <tr><td>description</td><td>unknown</td></tr>
602 <tr><td>description</td><td>unknown</td></tr>
603 <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>
603 <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>
604 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
604 <tr><td>last change</td><td>Thu, 01 Jan 1970 00:00:00 +0000</td></tr>
605 </table>
605 </table>
606
606
607 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
607 <div><a class="title" href="/shortlog?style=gitweb">changes</a></div>
608 <table cellspacing="0">
608 <table cellspacing="0">
609
609
610 <tr class="parity0">
610 <tr class="parity0">
611 <td class="age"><i>many years ago</i></td>
611 <td class="age"><i>1970-01-01</i></td>
612 <td><i>test</i></td>
612 <td><i>test</i></td>
613 <td>
613 <td>
614 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
614 <a class="list" href="/rev/1d22e65f027e?style=gitweb">
615 <b>branch</b>
615 <b>branch</b>
616 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> </span>
616 <span class="logtags"><span class="branchtag" title="stable">stable</span> <span class="tagtag" title="tip">tip</span> </span>
617 </a>
617 </a>
618 </td>
618 </td>
619 <td class="link" nowrap>
619 <td class="link" nowrap>
620 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
620 <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
621 <a href="/file/1d22e65f027e?style=gitweb">files</a>
621 <a href="/file/1d22e65f027e?style=gitweb">files</a>
622 </td>
622 </td>
623 </tr>
623 </tr>
624 <tr class="parity1">
624 <tr class="parity1">
625 <td class="age"><i>many years ago</i></td>
625 <td class="age"><i>1970-01-01</i></td>
626 <td><i>test</i></td>
626 <td><i>test</i></td>
627 <td>
627 <td>
628 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
628 <a class="list" href="/rev/a4f92ed23982?style=gitweb">
629 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
629 <b>Added tag 1.0 for changeset 2ef0ac749a14</b>
630 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
630 <span class="logtags"><span class="branchtag" title="default">default</span> </span>
631 </a>
631 </a>
632 </td>
632 </td>
633 <td class="link" nowrap>
633 <td class="link" nowrap>
634 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
634 <a href="/rev/a4f92ed23982?style=gitweb">changeset</a> |
635 <a href="/file/a4f92ed23982?style=gitweb">files</a>
635 <a href="/file/a4f92ed23982?style=gitweb">files</a>
636 </td>
636 </td>
637 </tr>
637 </tr>
638 <tr class="parity0">
638 <tr class="parity0">
639 <td class="age"><i>many years ago</i></td>
639 <td class="age"><i>1970-01-01</i></td>
640 <td><i>test</i></td>
640 <td><i>test</i></td>
641 <td>
641 <td>
642 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
642 <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
643 <b>base</b>
643 <b>base</b>
644 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> </span>
644 <span class="logtags"><span class="tagtag" title="1.0">1.0</span> </span>
645 </a>
645 </a>
646 </td>
646 </td>
647 <td class="link" nowrap>
647 <td class="link" nowrap>
648 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
648 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
649 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
649 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
650 </td>
650 </td>
651 </tr>
651 </tr>
652 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
652 <tr class="light"><td colspan="4"><a class="list" href="/shortlog?style=gitweb">...</a></td></tr>
653 </table>
653 </table>
654
654
655 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
655 <div><a class="title" href="/tags?style=gitweb">tags</a></div>
656 <table cellspacing="0">
656 <table cellspacing="0">
657
657
658 <tr class="parity0">
658 <tr class="parity0">
659 <td class="age"><i>many years ago</i></td>
659 <td class="age"><i>1970-01-01</i></td>
660 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
660 <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
661 <td class="link">
661 <td class="link">
662 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
662 <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
663 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
663 <a href="/log/2ef0ac749a14?style=gitweb">changelog</a> |
664 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
664 <a href="/file/2ef0ac749a14?style=gitweb">files</a>
665 </td>
665 </td>
666 </tr>
666 </tr>
667 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
667 <tr class="light"><td colspan="3"><a class="list" href="/tags?style=gitweb">...</a></td></tr>
668 </table>
668 </table>
669
669
670 <div><a class="title" href="#">branches</a></div>
670 <div><a class="title" href="#">branches</a></div>
671 <table cellspacing="0">
671 <table cellspacing="0">
672
672
673 <tr class="parity0">
673 <tr class="parity0">
674 <td class="age"><i>many years ago</i></td>
674 <td class="age"><i>1970-01-01</i></td>
675 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
675 <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
676 <td class="">stable</td>
676 <td class="">stable</td>
677 <td class="link">
677 <td class="link">
678 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
678 <a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
679 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
679 <a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
680 <a href="/file/1d22e65f027e?style=gitweb">files</a>
680 <a href="/file/1d22e65f027e?style=gitweb">files</a>
681 </td>
681 </td>
682 </tr>
682 </tr>
683 <tr class="parity1">
683 <tr class="parity1">
684 <td class="age"><i>many years ago</i></td>
684 <td class="age"><i>1970-01-01</i></td>
685 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
685 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
686 <td class="">default</td>
686 <td class="">default</td>
687 <td class="link">
687 <td class="link">
688 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
688 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
689 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
689 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
690 <a href="/file/a4f92ed23982?style=gitweb">files</a>
690 <a href="/file/a4f92ed23982?style=gitweb">files</a>
691 </td>
691 </td>
692 </tr>
692 </tr>
693 <tr class="light">
693 <tr class="light">
694 <td colspan="4"><a class="list" href="#">...</a></td>
694 <td colspan="4"><a class="list" href="#">...</a></td>
695 </tr>
695 </tr>
696 </table>
696 </table>
697 <div class="page_footer">
697 <div class="page_footer">
698 <div class="page_footer_text">test</div>
698 <div class="page_footer_text">test</div>
699 <div class="rss_logo">
699 <div class="rss_logo">
700 <a href="/rss-log">RSS</a>
700 <a href="/rss-log">RSS</a>
701 <a href="/atom-log">Atom</a>
701 <a href="/atom-log">Atom</a>
702 </div>
702 </div>
703 <br />
703 <br />
704
704
705 </div>
705 </div>
706 </body>
706 </body>
707 </html>
707 </html>
708
708
709 200 Script output follows
709 200 Script output follows
710
710
711 <?xml version="1.0" encoding="ascii"?>
711 <?xml version="1.0" encoding="ascii"?>
712 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
712 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
713 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
713 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
714 <head>
714 <head>
715 <link rel="icon" href="/static/hgicon.png" type="image/png" />
715 <link rel="icon" href="/static/hgicon.png" type="image/png" />
716 <meta name="robots" content="index, nofollow"/>
716 <meta name="robots" content="index, nofollow"/>
717 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
717 <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
718
718
719
719
720 <title>test: Graph</title>
720 <title>test: Graph</title>
721 <link rel="alternate" type="application/atom+xml"
721 <link rel="alternate" type="application/atom+xml"
722 href="/atom-log" title="Atom feed for test"/>
722 href="/atom-log" title="Atom feed for test"/>
723 <link rel="alternate" type="application/rss+xml"
723 <link rel="alternate" type="application/rss+xml"
724 href="/rss-log" title="RSS feed for test"/>
724 href="/rss-log" title="RSS feed for test"/>
725 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
725 <!--[if IE]><script type="text/javascript" src="/static/excanvas.js"></script><![endif]-->
726 </head>
726 </head>
727 <body>
727 <body>
728
728
729 <div class="page_header">
729 <div class="page_header">
730 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
730 <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
731 </div>
731 </div>
732
732
733 <form action="/log">
733 <form action="/log">
734 <input type="hidden" name="style" value="gitweb" />
734 <input type="hidden" name="style" value="gitweb" />
735 <div class="search">
735 <div class="search">
736 <input type="text" name="rev" />
736 <input type="text" name="rev" />
737 </div>
737 </div>
738 </form>
738 </form>
739 <div class="page_nav">
739 <div class="page_nav">
740 <a href="/summary?style=gitweb">summary</a> |
740 <a href="/summary?style=gitweb">summary</a> |
741 <a href="/shortlog?style=gitweb">shortlog</a> |
741 <a href="/shortlog?style=gitweb">shortlog</a> |
742 <a href="/log/2?style=gitweb">changelog</a> |
742 <a href="/log/2?style=gitweb">changelog</a> |
743 graph |
743 graph |
744 <a href="/tags?style=gitweb">tags</a> |
744 <a href="/tags?style=gitweb">tags</a> |
745 <a href="/branches?style=gitweb">branches</a> |
745 <a href="/branches?style=gitweb">branches</a> |
746 <a href="/file/1d22e65f027e?style=gitweb">files</a>
746 <a href="/file/1d22e65f027e?style=gitweb">files</a>
747 <br/>
747 <br/>
748 <a href="/graph/2?style=gitweb&revcount=12">less</a>
748 <a href="/graph/2?style=gitweb&revcount=12">less</a>
749 <a href="/graph/2?style=gitweb&revcount=50">more</a>
749 <a href="/graph/2?style=gitweb&revcount=50">more</a>
750 | <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/>
750 | <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/>
751 </div>
751 </div>
752
752
753 <div class="title">&nbsp;</div>
753 <div class="title">&nbsp;</div>
754
754
755 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
755 <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
756
756
757 <div id="wrapper">
757 <div id="wrapper">
758 <ul id="nodebgs"></ul>
758 <ul id="nodebgs"></ul>
759 <canvas id="graph" width="224" height="129"></canvas>
759 <canvas id="graph" width="224" height="129"></canvas>
760 <ul id="graphnodes"></ul>
760 <ul id="graphnodes"></ul>
761 </div>
761 </div>
762
762
763 <script type="text/javascript" src="/static/graph.js"></script>
763 <script type="text/javascript" src="/static/graph.js"></script>
764 <script>
764 <script>
765 <!-- hide script content
765 <!-- hide script content
766
766
767 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "many years ago", ["stable", true], ["tip"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "many years ago", ["default", true], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "many years ago", ["default", false], ["1.0"]]];
767 var data = [["1d22e65f027e", [0, 1], [[0, 0, 1]], "branch", "test", "1970-01-01", ["stable", true], ["tip"]], ["a4f92ed23982", [0, 1], [[0, 0, 1]], "Added tag 1.0 for changeset 2ef0ac749a14", "test", "1970-01-01", ["default", true], []], ["2ef0ac749a14", [0, 1], [], "base", "test", "1970-01-01", ["default", false], ["1.0"]]];
768 var graph = new Graph();
768 var graph = new Graph();
769 graph.scale(39);
769 graph.scale(39);
770
770
771 graph.edge = function(x0, y0, x1, y1, color) {
771 graph.edge = function(x0, y0, x1, y1, color) {
772
772
773 this.setColor(color, 0.0, 0.65);
773 this.setColor(color, 0.0, 0.65);
774 this.ctx.beginPath();
774 this.ctx.beginPath();
775 this.ctx.moveTo(x0, y0);
775 this.ctx.moveTo(x0, y0);
776 this.ctx.lineTo(x1, y1);
776 this.ctx.lineTo(x1, y1);
777 this.ctx.stroke();
777 this.ctx.stroke();
778
778
779 }
779 }
780
780
781 var revlink = '<li style="_STYLE"><span class="desc">';
781 var revlink = '<li style="_STYLE"><span class="desc">';
782 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
782 revlink += '<a class="list" href="/rev/_NODEID?style=gitweb" title="_NODEID"><b>_DESC</b></a>';
783 revlink += '</span> _TAGS';
783 revlink += '</span> _TAGS';
784 revlink += '<span class="info">_DATE ago, by _USER</span></li>';
784 revlink += '<span class="info">_DATE ago, by _USER</span></li>';
785
785
786 graph.vertex = function(x, y, color, parity, cur) {
786 graph.vertex = function(x, y, color, parity, cur) {
787
787
788 this.ctx.beginPath();
788 this.ctx.beginPath();
789 color = this.setColor(color, 0.25, 0.75);
789 color = this.setColor(color, 0.25, 0.75);
790 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
790 this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
791 this.ctx.fill();
791 this.ctx.fill();
792
792
793 var bg = '<li class="bg parity' + parity + '"></li>';
793 var bg = '<li class="bg parity' + parity + '"></li>';
794 var left = (this.columns + 1) * this.bg_height;
794 var left = (this.columns + 1) * this.bg_height;
795 var nstyle = 'padding-left: ' + left + 'px;';
795 var nstyle = 'padding-left: ' + left + 'px;';
796 var item = revlink.replace(/_STYLE/, nstyle);
796 var item = revlink.replace(/_STYLE/, nstyle);
797 item = item.replace(/_PARITY/, 'parity' + parity);
797 item = item.replace(/_PARITY/, 'parity' + parity);
798 item = item.replace(/_NODEID/, cur[0]);
798 item = item.replace(/_NODEID/, cur[0]);
799 item = item.replace(/_NODEID/, cur[0]);
799 item = item.replace(/_NODEID/, cur[0]);
800 item = item.replace(/_DESC/, cur[3]);
800 item = item.replace(/_DESC/, cur[3]);
801 item = item.replace(/_USER/, cur[4]);
801 item = item.replace(/_USER/, cur[4]);
802 item = item.replace(/_DATE/, cur[5]);
802 item = item.replace(/_DATE/, cur[5]);
803
803
804 var tagspan = '';
804 var tagspan = '';
805 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
805 if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
806 tagspan = '<span class="logtags">';
806 tagspan = '<span class="logtags">';
807 if (cur[6][1]) {
807 if (cur[6][1]) {
808 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
808 tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
809 tagspan += cur[6][0] + '</span> ';
809 tagspan += cur[6][0] + '</span> ';
810 } else if (!cur[6][1] && cur[6][0] != 'default') {
810 } else if (!cur[6][1] && cur[6][0] != 'default') {
811 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
811 tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
812 tagspan += cur[6][0] + '</span> ';
812 tagspan += cur[6][0] + '</span> ';
813 }
813 }
814 if (cur[7].length) {
814 if (cur[7].length) {
815 for (var t in cur[7]) {
815 for (var t in cur[7]) {
816 var tag = cur[7][t];
816 var tag = cur[7][t];
817 tagspan += '<span class="tagtag">' + tag + '</span> ';
817 tagspan += '<span class="tagtag">' + tag + '</span> ';
818 }
818 }
819 }
819 }
820 tagspan += '</span>';
820 tagspan += '</span>';
821 }
821 }
822
822
823 item = item.replace(/_TAGS/, tagspan);
823 item = item.replace(/_TAGS/, tagspan);
824 return [bg, item];
824 return [bg, item];
825
825
826 }
826 }
827
827
828 graph.render(data);
828 graph.render(data);
829
829
830 // stop hiding script -->
830 // stop hiding script -->
831 </script>
831 </script>
832
832
833 <div class="page_nav">
833 <div class="page_nav">
834 <a href="/graph/2?style=gitweb&revcount=12">less</a>
834 <a href="/graph/2?style=gitweb&revcount=12">less</a>
835 <a href="/graph/2?style=gitweb&revcount=50">more</a>
835 <a href="/graph/2?style=gitweb&revcount=50">more</a>
836 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
836 | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a>
837 </div>
837 </div>
838
838
839 <div class="page_footer">
839 <div class="page_footer">
840 <div class="page_footer_text">test</div>
840 <div class="page_footer_text">test</div>
841 <div class="rss_logo">
841 <div class="rss_logo">
842 <a href="/rss-log">RSS</a>
842 <a href="/rss-log">RSS</a>
843 <a href="/atom-log">Atom</a>
843 <a href="/atom-log">Atom</a>
844 </div>
844 </div>
845 <br />
845 <br />
846
846
847 </div>
847 </div>
848 </body>
848 </body>
849 </html>
849 </html>
850
850
851 % capabilities
851 % capabilities
852 200 Script output follows
852 200 Script output follows
853
853
854 lookup changegroupsubset branchmap unbundle=HG10GZ,HG10BZ,HG10UN% heads
854 lookup changegroupsubset branchmap unbundle=HG10GZ,HG10BZ,HG10UN% heads
855 200 Script output follows
855 200 Script output follows
856
856
857 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
857 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
858 % lookup
858 % lookup
859 200 Script output follows
859 200 Script output follows
860
860
861 0 'key'
861 0 'key'
862 % branches
862 % branches
863 200 Script output follows
863 200 Script output follows
864
864
865 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe 2ef0ac749a14e4f57a5a822464a0902c6f7f448f 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
865 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe 2ef0ac749a14e4f57a5a822464a0902c6f7f448f 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
866 % changegroup
866 % changegroup
867 200 Script output follows
867 200 Script output follows
868
868
869 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
869 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
870 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~\
870 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~\
871 \xe9\xad\x90w\x86\xab\x93W\x8e\xdf\xb0r\\Y\xee6(\xa2)\xf6\x95\xc6\x01\xe4\x1az\x80R\xe8kN\x98\xe7R\xa4\xa9K@\xe0!A\xb4k\xa7U*m\x03\x07\xd8\x92\x1d\xd2\xc9\xa4\x1d\xc2\xe6,\xa5\xcc+\x1f\xef\xafDgi\xef\xab\x1d\x1d\xb7\x9a\xe7[W\xfbc\x8f\xde-\xcd\xe7\xcaz\xb3\xbb\x19\xd3\x81\x10>c>\x08\x00"X\x11\xc2\x84@\xd2\xe7B*L\x00\x01P\x04R\xc3@\xbaB0\xdb8#\x83:\x83\xa2h\xbc=\xcd\xdaS\xe1Y,L\xd3\xa0\xf2\xa8\x94J:\xe6\xd8\x81Q\xe0\xe8d\xa7#\xe2,\xd1\xaeR*\xed \xa5\x01\x13\x01\xa6\x0cb\xe3;\xbe\xaf\xfcK[^wK\xe1N\xaf\xbbk\xe8B\xd1\xf4\xc1\x07\xb3\xab[\x10\xfdkmvwcB\xa6\xa4\xd4G\xc4D\xc2\x141\xad\x91\x10\x00\x08J\x81\xcb}\xee\t\xee+W\xba\x8a\x80\x90|\xd4\xa0\xd6\xa0\xd4T\xde\xe1\x9d,!\xe2\xb5\xa94\xe3\xe7\xd5\x9f\x06\x18\xcba\x03aP\xb8f\xcd\x04\x1a_\\9\xf1\xed\xe4\x9e\xe5\xa6\xd1\xd2\x9f\x03\xa7o\xae\x90H\xf3\xfb\xef\xffH3\xadk
871 \xe9\xad\x90w\x86\xab\x93W\x8e\xdf\xb0r\\Y\xee6(\xa2)\xf6\x95\xc6\x01\xe4\x1az\x80R\xe8kN\x98\xe7R\xa4\xa9K@\xe0!A\xb4k\xa7U*m\x03\x07\xd8\x92\x1d\xd2\xc9\xa4\x1d\xc2\xe6,\xa5\xcc+\x1f\xef\xafDgi\xef\xab\x1d\x1d\xb7\x9a\xe7[W\xfbc\x8f\xde-\xcd\xe7\xcaz\xb3\xbb\x19\xd3\x81\x10>c>\x08\x00"X\x11\xc2\x84@\xd2\xe7B*L\x00\x01P\x04R\xc3@\xbaB0\xdb8#\x83:\x83\xa2h\xbc=\xcd\xdaS\xe1Y,L\xd3\xa0\xf2\xa8\x94J:\xe6\xd8\x81Q\xe0\xe8d\xa7#\xe2,\xd1\xaeR*\xed \xa5\x01\x13\x01\xa6\x0cb\xe3;\xbe\xaf\xfcK[^wK\xe1N\xaf\xbbk\xe8B\xd1\xf4\xc1\x07\xb3\xab[\x10\xfdkmvwcB\xa6\xa4\xd4G\xc4D\xc2\x141\xad\x91\x10\x00\x08J\x81\xcb}\xee\t\xee+W\xba\x8a\x80\x90|\xd4\xa0\xd6\xa0\xd4T\xde\xe1\x9d,!\xe2\xb5\xa94\xe3\xe7\xd5\x9f\x06\x18\xcba\x03aP\xb8f\xcd\x04\x1a_\\9\xf1\xed\xe4\x9e\xe5\xa6\xd1\xd2\x9f\x03\xa7o\xae\x90H\xf3\xfb\xef\xffH3\xadk
872 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3\'\x859
872 \xb0\x90\x92\x88\xb9\x14"\x068\xc2\x1e@\x00\xbb\x8a)\xd3\'\x859
873 \xa8\x80\x84S \xa5\xbd-g\x13`\xe4\xdc\xc3H^\xdf\xe2\xc0TM\xc7\xf4BO\xcf\xde\xae\xe5\xae#\x1frM(K\x97`F\x19\x16s\x05GD\xb9\x01\xc1\x00+\x8c|\x9fp\xc11\xf0\x14\x00\x9cJ\x82<\xe0\x12\x9f\xc1\x90\xd0\xf5\xc8\x19>Pr\xaa\xeaW\xf5\xc4\xae\xd1\xfc\x17\xcf\'\x13u\xb1\x9e\xcdHnC\x0e\xcc`\xc8\xa0&\xac\x0e\xf1|\x8c\x10$\xc4\x8c\xa2p\x05`\xdc\x08 \x80\xc4\xd7Rr-\x94\x10\x102\xedi;\xf3f\xf1z\x16\x86\xdb\xd8d\xe5\xe7\x8b\xf5\x8d\rzp\xb2\xfe\xac\xf5\xf2\xd3\xfe\xfckws\xedt\x96b\xd5l\x1c\x0b\x85\xb5\x170\x8f\x11\x84\xb0\x8f\x19\xa0\x00\t_\x07\x1ac\xa2\xc3\x89Z\xe7\x96\xf9 \xccNFg\xc7F\xaa\x8a+\x9a\x9cc_\x17\x1b\x17\x9e]z38<\x97+\xb5,",\xc8\xc8?\\\x91\xff\x17.~U\x96\x97\xf5%\xdeN<\x8e\xf5\x97%\xe7^\xcfL\xed~\xda\x96k\xdc->\x86\x02\x83"\x96H\xa6\xe3\xaas=-\xeb7\xe5\xda\x8f\xbc
873 \xa8\x80\x84S \xa5\xbd-g\x13`\xe4\xdc\xc3H^\xdf\xe2\xc0TM\xc7\xf4BO\xcf\xde\xae\xe5\xae#\x1frM(K\x97`F\x19\x16s\x05GD\xb9\x01\xc1\x00+\x8c|\x9fp\xc11\xf0\x14\x00\x9cJ\x82<\xe0\x12\x9f\xc1\x90\xd0\xf5\xc8\x19>Pr\xaa\xeaW\xf5\xc4\xae\xd1\xfc\x17\xcf\'\x13u\xb1\x9e\xcdHnC\x0e\xcc`\xc8\xa0&\xac\x0e\xf1|\x8c\x10$\xc4\x8c\xa2p\x05`\xdc\x08 \x80\xc4\xd7Rr-\x94\x10\x102\xedi;\xf3f\xf1z\x16\x86\xdb\xd8d\xe5\xe7\x8b\xf5\x8d\rzp\xb2\xfe\xac\xf5\xf2\xd3\xfe\xfckws\xedt\x96b\xd5l\x1c\x0b\x85\xb5\x170\x8f\x11\x84\xb0\x8f\x19\xa0\x00\t_\x07\x1ac\xa2\xc3\x89Z\xe7\x96\xf9 \xccNFg\xc7F\xaa\x8a+\x9a\x9cc_\x17\x1b\x17\x9e]z38<\x97+\xb5,",\xc8\xc8?\\\x91\xff\x17.~U\x96\x97\xf5%\xdeN<\x8e\xf5\x97%\xe7^\xcfL\xed~\xda\x96k\xdc->\x86\x02\x83"\x96H\xa6\xe3\xaas=-\xeb7\xe5\xda\x8f\xbc
874 % stream_out
874 % stream_out
875 200 Script output follows
875 200 Script output follows
876
876
877 1
877 1
878 % failing unbundle, requires POST request
878 % failing unbundle, requires POST request
879 405 push requires POST request
879 405 push requires POST request
880
880
881 0
881 0
882 push requires POST request
882 push requires POST request
883 % Static files
883 % Static files
884 200 Script output follows
884 200 Script output follows
885
885
886 a { text-decoration:none; }
886 a { text-decoration:none; }
887 .age { white-space:nowrap; }
887 .age { white-space:nowrap; }
888 .date { white-space:nowrap; }
888 .date { white-space:nowrap; }
889 .indexlinks { white-space:nowrap; }
889 .indexlinks { white-space:nowrap; }
890 .parity0 { background-color: #ddd; }
890 .parity0 { background-color: #ddd; }
891 .parity1 { background-color: #eee; }
891 .parity1 { background-color: #eee; }
892 .lineno { width: 60px; color: #aaa; font-size: smaller;
892 .lineno { width: 60px; color: #aaa; font-size: smaller;
893 text-align: right; }
893 text-align: right; }
894 .plusline { color: green; }
894 .plusline { color: green; }
895 .minusline { color: red; }
895 .minusline { color: red; }
896 .atline { color: purple; }
896 .atline { color: purple; }
897 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
897 .annotate { font-size: smaller; text-align: right; padding-right: 1em; }
898 .buttons a {
898 .buttons a {
899 background-color: #666;
899 background-color: #666;
900 padding: 2pt;
900 padding: 2pt;
901 color: white;
901 color: white;
902 font-family: sans;
902 font-family: sans;
903 font-weight: bold;
903 font-weight: bold;
904 }
904 }
905 .navigate a {
905 .navigate a {
906 background-color: #ccc;
906 background-color: #ccc;
907 padding: 2pt;
907 padding: 2pt;
908 font-family: sans;
908 font-family: sans;
909 color: black;
909 color: black;
910 }
910 }
911
911
912 .metatag {
912 .metatag {
913 background-color: #888;
913 background-color: #888;
914 color: white;
914 color: white;
915 text-align: right;
915 text-align: right;
916 }
916 }
917
917
918 /* Common */
918 /* Common */
919 pre { margin: 0; }
919 pre { margin: 0; }
920
920
921 .logo {
921 .logo {
922 float: right;
922 float: right;
923 clear: right;
923 clear: right;
924 }
924 }
925
925
926 /* Changelog/Filelog entries */
926 /* Changelog/Filelog entries */
927 .logEntry { width: 100%; }
927 .logEntry { width: 100%; }
928 .logEntry .age { width: 15%; }
928 .logEntry .age { width: 15%; }
929 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
929 .logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
930 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
930 .logEntry th.age, .logEntry th.firstline { font-weight: bold; }
931 .logEntry th.firstline { text-align: left; width: inherit; }
931 .logEntry th.firstline { text-align: left; width: inherit; }
932
932
933 /* Shortlog entries */
933 /* Shortlog entries */
934 .slogEntry { width: 100%; }
934 .slogEntry { width: 100%; }
935 .slogEntry .age { width: 8em; }
935 .slogEntry .age { width: 8em; }
936 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
936 .slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
937 .slogEntry td.author { width: 15em; }
937 .slogEntry td.author { width: 15em; }
938
938
939 /* Tag entries */
939 /* Tag entries */
940 #tagEntries { list-style: none; margin: 0; padding: 0; }
940 #tagEntries { list-style: none; margin: 0; padding: 0; }
941 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
941 #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
942
942
943 /* Changeset entry */
943 /* Changeset entry */
944 #changesetEntry { }
944 #changesetEntry { }
945 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
945 #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
946 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
946 #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
947
947
948 /* File diff view */
948 /* File diff view */
949 #filediffEntry { }
949 #filediffEntry { }
950 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
950 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
951
951
952 /* Graph */
952 /* Graph */
953 div#wrapper {
953 div#wrapper {
954 position: relative;
954 position: relative;
955 margin: 0;
955 margin: 0;
956 padding: 0;
956 padding: 0;
957 }
957 }
958
958
959 canvas {
959 canvas {
960 position: absolute;
960 position: absolute;
961 z-index: 5;
961 z-index: 5;
962 top: -0.6em;
962 top: -0.6em;
963 margin: 0;
963 margin: 0;
964 }
964 }
965
965
966 ul#nodebgs {
966 ul#nodebgs {
967 list-style: none inside none;
967 list-style: none inside none;
968 padding: 0;
968 padding: 0;
969 margin: 0;
969 margin: 0;
970 top: -0.7em;
970 top: -0.7em;
971 }
971 }
972
972
973 ul#graphnodes li, ul#nodebgs li {
973 ul#graphnodes li, ul#nodebgs li {
974 height: 39px;
974 height: 39px;
975 }
975 }
976
976
977 ul#graphnodes {
977 ul#graphnodes {
978 position: absolute;
978 position: absolute;
979 z-index: 10;
979 z-index: 10;
980 top: -0.85em;
980 top: -0.85em;
981 list-style: none inside none;
981 list-style: none inside none;
982 padding: 0;
982 padding: 0;
983 }
983 }
984
984
985 ul#graphnodes li .info {
985 ul#graphnodes li .info {
986 display: block;
986 display: block;
987 font-size: 70%;
987 font-size: 70%;
988 position: relative;
988 position: relative;
989 top: -1px;
989 top: -1px;
990 }
990 }
991 % ERRORS ENCOUNTERED
991 % ERRORS ENCOUNTERED
@@ -1,420 +1,420 b''
1 % setting up repo
1 % setting up repo
2 adding a
2 adding a
3 adding b
3 adding b
4 % change permissions for git diffs
4 % change permissions for git diffs
5 % set up hgweb
5 % set up hgweb
6 % revision
6 % revision
7 200 Script output follows
7 200 Script output follows
8
8
9 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
9 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
10 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
10 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
11 <head>
11 <head>
12 <link rel="icon" href="/static/hgicon.png" type="image/png" />
12 <link rel="icon" href="/static/hgicon.png" type="image/png" />
13 <meta name="robots" content="index, nofollow" />
13 <meta name="robots" content="index, nofollow" />
14 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
14 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
15
15
16 <title>test: 0cd96de13884</title>
16 <title>test: 0cd96de13884</title>
17 </head>
17 </head>
18 <body>
18 <body>
19 <div class="container">
19 <div class="container">
20 <div class="menu">
20 <div class="menu">
21 <div class="logo">
21 <div class="logo">
22 <a href="http://mercurial.selenic.com/">
22 <a href="http://mercurial.selenic.com/">
23 <img src="/static/hglogo.png" alt="mercurial" /></a>
23 <img src="/static/hglogo.png" alt="mercurial" /></a>
24 </div>
24 </div>
25 <ul>
25 <ul>
26 <li><a href="/shortlog/0cd96de13884">log</a></li>
26 <li><a href="/shortlog/0cd96de13884">log</a></li>
27 <li><a href="/graph/0cd96de13884">graph</a></li>
27 <li><a href="/graph/0cd96de13884">graph</a></li>
28 <li><a href="/tags">tags</a></li>
28 <li><a href="/tags">tags</a></li>
29 <li><a href="/branches">branches</a></li>
29 <li><a href="/branches">branches</a></li>
30 </ul>
30 </ul>
31 <ul>
31 <ul>
32 <li class="active">changeset</li>
32 <li class="active">changeset</li>
33 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
33 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
34 <li><a href="/file/0cd96de13884">browse</a></li>
34 <li><a href="/file/0cd96de13884">browse</a></li>
35 </ul>
35 </ul>
36 <ul>
36 <ul>
37
37
38 </ul>
38 </ul>
39 </div>
39 </div>
40
40
41 <div class="main">
41 <div class="main">
42
42
43 <h2><a href="/">test</a></h2>
43 <h2><a href="/">test</a></h2>
44 <h3>changeset 0:0cd96de13884 </h3>
44 <h3>changeset 0:0cd96de13884 </h3>
45
45
46 <form class="search" action="/log">
46 <form class="search" action="/log">
47
47
48 <p><input name="rev" id="search1" type="text" size="30" /></p>
48 <p><input name="rev" id="search1" type="text" size="30" /></p>
49 <div id="hint">find changesets by author, revision,
49 <div id="hint">find changesets by author, revision,
50 files, or words in the commit message</div>
50 files, or words in the commit message</div>
51 </form>
51 </form>
52
52
53 <div class="description">a</div>
53 <div class="description">a</div>
54
54
55 <table id="changesetEntry">
55 <table id="changesetEntry">
56 <tr>
56 <tr>
57 <th class="author">author</th>
57 <th class="author">author</th>
58 <td class="author">&#116;&#101;&#115;&#116;</td>
58 <td class="author">&#116;&#101;&#115;&#116;</td>
59 </tr>
59 </tr>
60 <tr>
60 <tr>
61 <th class="date">date</th>
61 <th class="date">date</th>
62 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td></tr>
62 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
63 <tr>
63 <tr>
64 <th class="author">parents</th>
64 <th class="author">parents</th>
65 <td class="author"></td>
65 <td class="author"></td>
66 </tr>
66 </tr>
67 <tr>
67 <tr>
68 <th class="author">children</th>
68 <th class="author">children</th>
69 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
69 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
70 </tr>
70 </tr>
71 <tr>
71 <tr>
72 <th class="files">files</th>
72 <th class="files">files</th>
73 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
73 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
74 </tr>
74 </tr>
75 </table>
75 </table>
76
76
77 <div class="overflow">
77 <div class="overflow">
78 <div class="sourcefirst"> line diff</div>
78 <div class="sourcefirst"> line diff</div>
79
79
80 <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
80 <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
81 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
81 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
82 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
82 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
83 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
83 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
84 </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
84 </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
85 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
85 </span><a href="#l2.2" id="l2.2"> 2.2</a> <span class="plusline">+++ b/b Thu Jan 01 00:00:00 1970 +0000
86 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
86 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="atline">@@ -0,0 +1,1 @@
87 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
87 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="plusline">+b
88 </span></pre></div>
88 </span></pre></div>
89 </div>
89 </div>
90
90
91 </div>
91 </div>
92 </div>
92 </div>
93
93
94
94
95 </body>
95 </body>
96 </html>
96 </html>
97
97
98 % raw revision
98 % raw revision
99 200 Script output follows
99 200 Script output follows
100
100
101
101
102 # HG changeset patch
102 # HG changeset patch
103 # User test
103 # User test
104 # Date 0 0
104 # Date 0 0
105 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
105 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
106
106
107 a
107 a
108
108
109 diff -r 000000000000 -r 0cd96de13884 a
109 diff -r 000000000000 -r 0cd96de13884 a
110 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
110 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
111 +++ b/a Thu Jan 01 00:00:00 1970 +0000
111 +++ b/a Thu Jan 01 00:00:00 1970 +0000
112 @@ -0,0 +1,1 @@
112 @@ -0,0 +1,1 @@
113 +a
113 +a
114 diff -r 000000000000 -r 0cd96de13884 b
114 diff -r 000000000000 -r 0cd96de13884 b
115 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
115 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
116 +++ b/b Thu Jan 01 00:00:00 1970 +0000
116 +++ b/b Thu Jan 01 00:00:00 1970 +0000
117 @@ -0,0 +1,1 @@
117 @@ -0,0 +1,1 @@
118 +b
118 +b
119
119
120 % diff removed file
120 % diff removed file
121 200 Script output follows
121 200 Script output follows
122
122
123 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
123 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
124 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
124 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
125 <head>
125 <head>
126 <link rel="icon" href="/static/hgicon.png" type="image/png" />
126 <link rel="icon" href="/static/hgicon.png" type="image/png" />
127 <meta name="robots" content="index, nofollow" />
127 <meta name="robots" content="index, nofollow" />
128 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
128 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
129
129
130 <title>test: a diff</title>
130 <title>test: a diff</title>
131 </head>
131 </head>
132 <body>
132 <body>
133
133
134 <div class="container">
134 <div class="container">
135 <div class="menu">
135 <div class="menu">
136 <div class="logo">
136 <div class="logo">
137 <a href="http://mercurial.selenic.com/">
137 <a href="http://mercurial.selenic.com/">
138 <img src="/static/hglogo.png" alt="mercurial" /></a>
138 <img src="/static/hglogo.png" alt="mercurial" /></a>
139 </div>
139 </div>
140 <ul>
140 <ul>
141 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
141 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
142 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
142 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
143 <li><a href="/tags">tags</a></li>
143 <li><a href="/tags">tags</a></li>
144 <li><a href="/branches">branches</a></li>
144 <li><a href="/branches">branches</a></li>
145 </ul>
145 </ul>
146 <ul>
146 <ul>
147 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
147 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
148 <li><a href="/file/78e4ebad7cdf">browse</a></li>
148 <li><a href="/file/78e4ebad7cdf">browse</a></li>
149 </ul>
149 </ul>
150 <ul>
150 <ul>
151 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
151 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
152 <li><a href="/file/tip/a">latest</a></li>
152 <li><a href="/file/tip/a">latest</a></li>
153 <li class="active">diff</li>
153 <li class="active">diff</li>
154 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
154 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
155 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
155 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
156 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
156 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
157 </ul>
157 </ul>
158 </div>
158 </div>
159
159
160 <div class="main">
160 <div class="main">
161 <h2><a href="/">test</a></h2>
161 <h2><a href="/">test</a></h2>
162 <h3>diff a @ 1:78e4ebad7cdf</h3>
162 <h3>diff a @ 1:78e4ebad7cdf</h3>
163
163
164 <form class="search" action="/log">
164 <form class="search" action="/log">
165 <p></p>
165 <p></p>
166 <p><input name="rev" id="search1" type="text" size="30" /></p>
166 <p><input name="rev" id="search1" type="text" size="30" /></p>
167 <div id="hint">find changesets by author, revision,
167 <div id="hint">find changesets by author, revision,
168 files, or words in the commit message</div>
168 files, or words in the commit message</div>
169 </form>
169 </form>
170
170
171 <div class="description">b</div>
171 <div class="description">b</div>
172
172
173 <table id="changesetEntry">
173 <table id="changesetEntry">
174 <tr>
174 <tr>
175 <th>author</th>
175 <th>author</th>
176 <td>&#116;&#101;&#115;&#116;</td>
176 <td>&#116;&#101;&#115;&#116;</td>
177 </tr>
177 </tr>
178 <tr>
178 <tr>
179 <th>date</th>
179 <th>date</th>
180 <td>Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
180 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
181 </tr>
181 </tr>
182 <tr>
182 <tr>
183 <th>parents</th>
183 <th>parents</th>
184 <td></td>
184 <td></td>
185 </tr>
185 </tr>
186 <tr>
186 <tr>
187 <th>children</th>
187 <th>children</th>
188 <td></td>
188 <td></td>
189 </tr>
189 </tr>
190
190
191 </table>
191 </table>
192
192
193 <div class="overflow">
193 <div class="overflow">
194 <div class="sourcefirst"> line diff</div>
194 <div class="sourcefirst"> line diff</div>
195
195
196 <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
196 <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
197 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
197 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ b/a Thu Jan 01 00:00:00 1970 +0000
198 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
198 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -0,0 +1,1 @@
199 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
199 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="plusline">+a
200 </span></pre></div>
200 </span></pre></div>
201 </div>
201 </div>
202 </div>
202 </div>
203 </div>
203 </div>
204
204
205
205
206
206
207 </body>
207 </body>
208 </html>
208 </html>
209
209
210 % set up hgweb with git diffs
210 % set up hgweb with git diffs
211 % revision
211 % revision
212 200 Script output follows
212 200 Script output follows
213
213
214 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
214 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
215 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
215 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
216 <head>
216 <head>
217 <link rel="icon" href="/static/hgicon.png" type="image/png" />
217 <link rel="icon" href="/static/hgicon.png" type="image/png" />
218 <meta name="robots" content="index, nofollow" />
218 <meta name="robots" content="index, nofollow" />
219 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
219 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
220
220
221 <title>test: 0cd96de13884</title>
221 <title>test: 0cd96de13884</title>
222 </head>
222 </head>
223 <body>
223 <body>
224 <div class="container">
224 <div class="container">
225 <div class="menu">
225 <div class="menu">
226 <div class="logo">
226 <div class="logo">
227 <a href="http://mercurial.selenic.com/">
227 <a href="http://mercurial.selenic.com/">
228 <img src="/static/hglogo.png" alt="mercurial" /></a>
228 <img src="/static/hglogo.png" alt="mercurial" /></a>
229 </div>
229 </div>
230 <ul>
230 <ul>
231 <li><a href="/shortlog/0cd96de13884">log</a></li>
231 <li><a href="/shortlog/0cd96de13884">log</a></li>
232 <li><a href="/graph/0cd96de13884">graph</a></li>
232 <li><a href="/graph/0cd96de13884">graph</a></li>
233 <li><a href="/tags">tags</a></li>
233 <li><a href="/tags">tags</a></li>
234 <li><a href="/branches">branches</a></li>
234 <li><a href="/branches">branches</a></li>
235 </ul>
235 </ul>
236 <ul>
236 <ul>
237 <li class="active">changeset</li>
237 <li class="active">changeset</li>
238 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
238 <li><a href="/raw-rev/0cd96de13884">raw</a></li>
239 <li><a href="/file/0cd96de13884">browse</a></li>
239 <li><a href="/file/0cd96de13884">browse</a></li>
240 </ul>
240 </ul>
241 <ul>
241 <ul>
242
242
243 </ul>
243 </ul>
244 </div>
244 </div>
245
245
246 <div class="main">
246 <div class="main">
247
247
248 <h2><a href="/">test</a></h2>
248 <h2><a href="/">test</a></h2>
249 <h3>changeset 0:0cd96de13884 </h3>
249 <h3>changeset 0:0cd96de13884 </h3>
250
250
251 <form class="search" action="/log">
251 <form class="search" action="/log">
252
252
253 <p><input name="rev" id="search1" type="text" size="30" /></p>
253 <p><input name="rev" id="search1" type="text" size="30" /></p>
254 <div id="hint">find changesets by author, revision,
254 <div id="hint">find changesets by author, revision,
255 files, or words in the commit message</div>
255 files, or words in the commit message</div>
256 </form>
256 </form>
257
257
258 <div class="description">a</div>
258 <div class="description">a</div>
259
259
260 <table id="changesetEntry">
260 <table id="changesetEntry">
261 <tr>
261 <tr>
262 <th class="author">author</th>
262 <th class="author">author</th>
263 <td class="author">&#116;&#101;&#115;&#116;</td>
263 <td class="author">&#116;&#101;&#115;&#116;</td>
264 </tr>
264 </tr>
265 <tr>
265 <tr>
266 <th class="date">date</th>
266 <th class="date">date</th>
267 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td></tr>
267 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
268 <tr>
268 <tr>
269 <th class="author">parents</th>
269 <th class="author">parents</th>
270 <td class="author"></td>
270 <td class="author"></td>
271 </tr>
271 </tr>
272 <tr>
272 <tr>
273 <th class="author">children</th>
273 <th class="author">children</th>
274 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
274 <td class="author"> <a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
275 </tr>
275 </tr>
276 <tr>
276 <tr>
277 <th class="files">files</th>
277 <th class="files">files</th>
278 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
278 <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
279 </tr>
279 </tr>
280 </table>
280 </table>
281
281
282 <div class="overflow">
282 <div class="overflow">
283 <div class="sourcefirst"> line diff</div>
283 <div class="sourcefirst"> line diff</div>
284
284
285 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
285 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100644
286 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
286 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
287 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
287 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
288 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
288 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
289 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
289 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
290 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
290 </span></pre></div><div class="source bottomline parity1"><pre><a href="#l2.1" id="l2.1"> 2.1</a> new file mode 100644
291 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
291 <a href="#l2.2" id="l2.2"> 2.2</a> <span class="minusline">--- /dev/null
292 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
292 </span><a href="#l2.3" id="l2.3"> 2.3</a> <span class="plusline">+++ b/b
293 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
293 </span><a href="#l2.4" id="l2.4"> 2.4</a> <span class="atline">@@ -0,0 +1,1 @@
294 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
294 </span><a href="#l2.5" id="l2.5"> 2.5</a> <span class="plusline">+b
295 </span></pre></div>
295 </span></pre></div>
296 </div>
296 </div>
297
297
298 </div>
298 </div>
299 </div>
299 </div>
300
300
301
301
302 </body>
302 </body>
303 </html>
303 </html>
304
304
305 % revision
305 % revision
306 200 Script output follows
306 200 Script output follows
307
307
308
308
309 # HG changeset patch
309 # HG changeset patch
310 # User test
310 # User test
311 # Date 0 0
311 # Date 0 0
312 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
312 # Node ID 0cd96de13884b090099512d4794ae87ad067ea8e
313
313
314 a
314 a
315
315
316 diff --git a/a b/a
316 diff --git a/a b/a
317 new file mode 100644
317 new file mode 100644
318 --- /dev/null
318 --- /dev/null
319 +++ b/a
319 +++ b/a
320 @@ -0,0 +1,1 @@
320 @@ -0,0 +1,1 @@
321 +a
321 +a
322 diff --git a/b b/b
322 diff --git a/b b/b
323 new file mode 100644
323 new file mode 100644
324 --- /dev/null
324 --- /dev/null
325 +++ b/b
325 +++ b/b
326 @@ -0,0 +1,1 @@
326 @@ -0,0 +1,1 @@
327 +b
327 +b
328
328
329 % diff removed file
329 % diff removed file
330 200 Script output follows
330 200 Script output follows
331
331
332 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
332 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
333 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
333 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
334 <head>
334 <head>
335 <link rel="icon" href="/static/hgicon.png" type="image/png" />
335 <link rel="icon" href="/static/hgicon.png" type="image/png" />
336 <meta name="robots" content="index, nofollow" />
336 <meta name="robots" content="index, nofollow" />
337 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
337 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
338
338
339 <title>test: a diff</title>
339 <title>test: a diff</title>
340 </head>
340 </head>
341 <body>
341 <body>
342
342
343 <div class="container">
343 <div class="container">
344 <div class="menu">
344 <div class="menu">
345 <div class="logo">
345 <div class="logo">
346 <a href="http://mercurial.selenic.com/">
346 <a href="http://mercurial.selenic.com/">
347 <img src="/static/hglogo.png" alt="mercurial" /></a>
347 <img src="/static/hglogo.png" alt="mercurial" /></a>
348 </div>
348 </div>
349 <ul>
349 <ul>
350 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
350 <li><a href="/shortlog/78e4ebad7cdf">log</a></li>
351 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
351 <li><a href="/graph/78e4ebad7cdf">graph</a></li>
352 <li><a href="/tags">tags</a></li>
352 <li><a href="/tags">tags</a></li>
353 <li><a href="/branches">branches</a></li>
353 <li><a href="/branches">branches</a></li>
354 </ul>
354 </ul>
355 <ul>
355 <ul>
356 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
356 <li><a href="/rev/78e4ebad7cdf">changeset</a></li>
357 <li><a href="/file/78e4ebad7cdf">browse</a></li>
357 <li><a href="/file/78e4ebad7cdf">browse</a></li>
358 </ul>
358 </ul>
359 <ul>
359 <ul>
360 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
360 <li><a href="/file/78e4ebad7cdf/a">file</a></li>
361 <li><a href="/file/tip/a">latest</a></li>
361 <li><a href="/file/tip/a">latest</a></li>
362 <li class="active">diff</li>
362 <li class="active">diff</li>
363 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
363 <li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
364 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
364 <li><a href="/log/78e4ebad7cdf/a">file log</a></li>
365 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
365 <li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
366 </ul>
366 </ul>
367 </div>
367 </div>
368
368
369 <div class="main">
369 <div class="main">
370 <h2><a href="/">test</a></h2>
370 <h2><a href="/">test</a></h2>
371 <h3>diff a @ 1:78e4ebad7cdf</h3>
371 <h3>diff a @ 1:78e4ebad7cdf</h3>
372
372
373 <form class="search" action="/log">
373 <form class="search" action="/log">
374 <p></p>
374 <p></p>
375 <p><input name="rev" id="search1" type="text" size="30" /></p>
375 <p><input name="rev" id="search1" type="text" size="30" /></p>
376 <div id="hint">find changesets by author, revision,
376 <div id="hint">find changesets by author, revision,
377 files, or words in the commit message</div>
377 files, or words in the commit message</div>
378 </form>
378 </form>
379
379
380 <div class="description">b</div>
380 <div class="description">b</div>
381
381
382 <table id="changesetEntry">
382 <table id="changesetEntry">
383 <tr>
383 <tr>
384 <th>author</th>
384 <th>author</th>
385 <td>&#116;&#101;&#115;&#116;</td>
385 <td>&#116;&#101;&#115;&#116;</td>
386 </tr>
386 </tr>
387 <tr>
387 <tr>
388 <th>date</th>
388 <th>date</th>
389 <td>Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
389 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
390 </tr>
390 </tr>
391 <tr>
391 <tr>
392 <th>parents</th>
392 <th>parents</th>
393 <td></td>
393 <td></td>
394 </tr>
394 </tr>
395 <tr>
395 <tr>
396 <th>children</th>
396 <th>children</th>
397 <td></td>
397 <td></td>
398 </tr>
398 </tr>
399
399
400 </table>
400 </table>
401
401
402 <div class="overflow">
402 <div class="overflow">
403 <div class="sourcefirst"> line diff</div>
403 <div class="sourcefirst"> line diff</div>
404
404
405 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
405 <div class="source bottomline parity0"><pre><a href="#l1.1" id="l1.1"> 1.1</a> new file mode 100755
406 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
406 <a href="#l1.2" id="l1.2"> 1.2</a> <span class="minusline">--- /dev/null
407 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
407 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="plusline">+++ b/a
408 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
408 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="atline">@@ -0,0 +1,1 @@
409 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
409 </span><a href="#l1.5" id="l1.5"> 1.5</a> <span class="plusline">+a
410 </span></pre></div>
410 </span></pre></div>
411 </div>
411 </div>
412 </div>
412 </div>
413 </div>
413 </div>
414
414
415
415
416
416
417 </body>
417 </body>
418 </html>
418 </html>
419
419
420 % errors
420 % errors
@@ -1,569 +1,569 b''
1 adding b
1 adding b
2 adding a
2 adding a
3 adding a
3 adding a
4 changeset: 6:38d962e6234d
4 changeset: 6:38d962e6234d
5 tag: tip
5 tag: tip
6 user: test
6 user: test
7 date: Thu Jan 01 00:00:00 1970 +0000
7 date: Thu Jan 01 00:00:00 1970 +0000
8 summary: change c
8 summary: change c
9
9
10 diff -r a3b6a9e4507e -r 38d962e6234d c
10 diff -r a3b6a9e4507e -r 38d962e6234d c
11 --- a/c Thu Jan 01 00:00:00 1970 +0000
11 --- a/c Thu Jan 01 00:00:00 1970 +0000
12 +++ b/c Thu Jan 01 00:00:00 1970 +0000
12 +++ b/c Thu Jan 01 00:00:00 1970 +0000
13 @@ -1,1 +1,2 @@
13 @@ -1,1 +1,2 @@
14 b
14 b
15 +c
15 +c
16
16
17 changeset: 5:a3b6a9e4507e
17 changeset: 5:a3b6a9e4507e
18 user: test
18 user: test
19 date: Thu Jan 01 00:00:00 1970 +0000
19 date: Thu Jan 01 00:00:00 1970 +0000
20 summary: mv b
20 summary: mv b
21
21
22 diff -r 52e848cdcd88 -r a3b6a9e4507e b
22 diff -r 52e848cdcd88 -r a3b6a9e4507e b
23 --- a/b Thu Jan 01 00:00:00 1970 +0000
23 --- a/b Thu Jan 01 00:00:00 1970 +0000
24 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
24 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
25 @@ -1,1 +0,0 @@
25 @@ -1,1 +0,0 @@
26 -b
26 -b
27 diff -r 52e848cdcd88 -r a3b6a9e4507e c
27 diff -r 52e848cdcd88 -r a3b6a9e4507e c
28 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
28 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
29 +++ b/c Thu Jan 01 00:00:00 1970 +0000
29 +++ b/c Thu Jan 01 00:00:00 1970 +0000
30 @@ -0,0 +1,1 @@
30 @@ -0,0 +1,1 @@
31 +b
31 +b
32
32
33 changeset: 4:52e848cdcd88
33 changeset: 4:52e848cdcd88
34 user: test
34 user: test
35 date: Thu Jan 01 00:00:00 1970 +0000
35 date: Thu Jan 01 00:00:00 1970 +0000
36 summary: del2 a
36 summary: del2 a
37
37
38 diff -r 01de2d66a28d -r 52e848cdcd88 a
38 diff -r 01de2d66a28d -r 52e848cdcd88 a
39 --- a/a Thu Jan 01 00:00:00 1970 +0000
39 --- a/a Thu Jan 01 00:00:00 1970 +0000
40 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
40 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
41 @@ -1,1 +0,0 @@
41 @@ -1,1 +0,0 @@
42 -b
42 -b
43
43
44 changeset: 3:01de2d66a28d
44 changeset: 3:01de2d66a28d
45 user: test
45 user: test
46 date: Thu Jan 01 00:00:00 1970 +0000
46 date: Thu Jan 01 00:00:00 1970 +0000
47 summary: second a
47 summary: second a
48
48
49 diff -r be3ebcc91739 -r 01de2d66a28d a
49 diff -r be3ebcc91739 -r 01de2d66a28d a
50 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
50 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
51 +++ b/a Thu Jan 01 00:00:00 1970 +0000
51 +++ b/a Thu Jan 01 00:00:00 1970 +0000
52 @@ -0,0 +1,1 @@
52 @@ -0,0 +1,1 @@
53 +b
53 +b
54
54
55 changeset: 2:be3ebcc91739
55 changeset: 2:be3ebcc91739
56 user: test
56 user: test
57 date: Thu Jan 01 00:00:00 1970 +0000
57 date: Thu Jan 01 00:00:00 1970 +0000
58 summary: del a
58 summary: del a
59
59
60 diff -r 5ed941583260 -r be3ebcc91739 a
60 diff -r 5ed941583260 -r be3ebcc91739 a
61 --- a/a Thu Jan 01 00:00:00 1970 +0000
61 --- a/a Thu Jan 01 00:00:00 1970 +0000
62 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
62 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
63 @@ -1,1 +0,0 @@
63 @@ -1,1 +0,0 @@
64 -a
64 -a
65
65
66 changeset: 1:5ed941583260
66 changeset: 1:5ed941583260
67 user: test
67 user: test
68 date: Thu Jan 01 00:00:00 1970 +0000
68 date: Thu Jan 01 00:00:00 1970 +0000
69 summary: first a
69 summary: first a
70
70
71 diff -r 6563da9dcf87 -r 5ed941583260 a
71 diff -r 6563da9dcf87 -r 5ed941583260 a
72 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
72 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
73 +++ b/a Thu Jan 01 00:00:00 1970 +0000
73 +++ b/a Thu Jan 01 00:00:00 1970 +0000
74 @@ -0,0 +1,1 @@
74 @@ -0,0 +1,1 @@
75 +a
75 +a
76
76
77 changeset: 0:6563da9dcf87
77 changeset: 0:6563da9dcf87
78 user: test
78 user: test
79 date: Thu Jan 01 00:00:00 1970 +0000
79 date: Thu Jan 01 00:00:00 1970 +0000
80 summary: b
80 summary: b
81
81
82 diff -r 000000000000 -r 6563da9dcf87 b
82 diff -r 000000000000 -r 6563da9dcf87 b
83 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
83 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
84 +++ b/b Thu Jan 01 00:00:00 1970 +0000
84 +++ b/b Thu Jan 01 00:00:00 1970 +0000
85 @@ -0,0 +1,1 @@
85 @@ -0,0 +1,1 @@
86 +b
86 +b
87
87
88 % tip - two revisions
88 % tip - two revisions
89 200 Script output follows
89 200 Script output follows
90
90
91 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
91 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
92 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
92 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
93 <head>
93 <head>
94 <link rel="icon" href="/static/hgicon.png" type="image/png" />
94 <link rel="icon" href="/static/hgicon.png" type="image/png" />
95 <meta name="robots" content="index, nofollow" />
95 <meta name="robots" content="index, nofollow" />
96 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
96 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
97
97
98 <title>test: a history</title>
98 <title>test: a history</title>
99 <link rel="alternate" type="application/atom+xml"
99 <link rel="alternate" type="application/atom+xml"
100 href="/atom-log/tip/a" title="Atom feed for test:a" />
100 href="/atom-log/tip/a" title="Atom feed for test:a" />
101 <link rel="alternate" type="application/rss+xml"
101 <link rel="alternate" type="application/rss+xml"
102 href="/rss-log/tip/a" title="RSS feed for test:a" />
102 href="/rss-log/tip/a" title="RSS feed for test:a" />
103 </head>
103 </head>
104 <body>
104 <body>
105
105
106 <div class="container">
106 <div class="container">
107 <div class="menu">
107 <div class="menu">
108 <div class="logo">
108 <div class="logo">
109 <a href="http://mercurial.selenic.com/">
109 <a href="http://mercurial.selenic.com/">
110 <img src="/static/hglogo.png" alt="mercurial" /></a>
110 <img src="/static/hglogo.png" alt="mercurial" /></a>
111 </div>
111 </div>
112 <ul>
112 <ul>
113 <li><a href="/shortlog/01de2d66a28d">log</a></li>
113 <li><a href="/shortlog/01de2d66a28d">log</a></li>
114 <li><a href="/graph/01de2d66a28d">graph</a></li>
114 <li><a href="/graph/01de2d66a28d">graph</a></li>
115 <li><a href="/tags">tags</a></li>
115 <li><a href="/tags">tags</a></li>
116 <li><a href="/branches">branches</a></li>
116 <li><a href="/branches">branches</a></li>
117 </ul>
117 </ul>
118 <ul>
118 <ul>
119 <li><a href="/rev/01de2d66a28d">changeset</a></li>
119 <li><a href="/rev/01de2d66a28d">changeset</a></li>
120 <li><a href="/file/01de2d66a28d">browse</a></li>
120 <li><a href="/file/01de2d66a28d">browse</a></li>
121 </ul>
121 </ul>
122 <ul>
122 <ul>
123 <li><a href="/file/01de2d66a28d/a">file</a></li>
123 <li><a href="/file/01de2d66a28d/a">file</a></li>
124 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
124 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
125 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
125 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
126 <li class="active">file log</li>
126 <li class="active">file log</li>
127 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
127 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
128 </ul>
128 </ul>
129 </div>
129 </div>
130
130
131 <div class="main">
131 <div class="main">
132 <h2><a href="/">test</a></h2>
132 <h2><a href="/">test</a></h2>
133 <h3>log a</h3>
133 <h3>log a</h3>
134
134
135 <form class="search" action="/log">
135 <form class="search" action="/log">
136
136
137 <p><input name="rev" id="search1" type="text" size="30" /></p>
137 <p><input name="rev" id="search1" type="text" size="30" /></p>
138 <div id="hint">find changesets by author, revision,
138 <div id="hint">find changesets by author, revision,
139 files, or words in the commit message</div>
139 files, or words in the commit message</div>
140 </form>
140 </form>
141
141
142 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
142 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
143
143
144 <table class="bigtable">
144 <table class="bigtable">
145 <tr>
145 <tr>
146 <th class="age">age</th>
146 <th class="age">age</th>
147 <th class="author">author</th>
147 <th class="author">author</th>
148 <th class="description">description</th>
148 <th class="description">description</th>
149 </tr>
149 </tr>
150 <tr class="parity0">
150 <tr class="parity0">
151 <td class="age">many years ago</td>
151 <td class="age">1970-01-01</td>
152 <td class="author">test</td>
152 <td class="author">test</td>
153 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
153 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
154 </tr>
154 </tr>
155 <tr class="parity1">
155 <tr class="parity1">
156 <td class="age">many years ago</td>
156 <td class="age">1970-01-01</td>
157 <td class="author">test</td>
157 <td class="author">test</td>
158 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
158 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
159 </tr>
159 </tr>
160
160
161 </table>
161 </table>
162
162
163 </div>
163 </div>
164 </div>
164 </div>
165
165
166
166
167
167
168 </body>
168 </body>
169 </html>
169 </html>
170
170
171 % second version - two revisions
171 % second version - two revisions
172 200 Script output follows
172 200 Script output follows
173
173
174 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
174 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
175 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
175 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
176 <head>
176 <head>
177 <link rel="icon" href="/static/hgicon.png" type="image/png" />
177 <link rel="icon" href="/static/hgicon.png" type="image/png" />
178 <meta name="robots" content="index, nofollow" />
178 <meta name="robots" content="index, nofollow" />
179 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
179 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
180
180
181 <title>test: a history</title>
181 <title>test: a history</title>
182 <link rel="alternate" type="application/atom+xml"
182 <link rel="alternate" type="application/atom+xml"
183 href="/atom-log/tip/a" title="Atom feed for test:a" />
183 href="/atom-log/tip/a" title="Atom feed for test:a" />
184 <link rel="alternate" type="application/rss+xml"
184 <link rel="alternate" type="application/rss+xml"
185 href="/rss-log/tip/a" title="RSS feed for test:a" />
185 href="/rss-log/tip/a" title="RSS feed for test:a" />
186 </head>
186 </head>
187 <body>
187 <body>
188
188
189 <div class="container">
189 <div class="container">
190 <div class="menu">
190 <div class="menu">
191 <div class="logo">
191 <div class="logo">
192 <a href="http://mercurial.selenic.com/">
192 <a href="http://mercurial.selenic.com/">
193 <img src="/static/hglogo.png" alt="mercurial" /></a>
193 <img src="/static/hglogo.png" alt="mercurial" /></a>
194 </div>
194 </div>
195 <ul>
195 <ul>
196 <li><a href="/shortlog/01de2d66a28d">log</a></li>
196 <li><a href="/shortlog/01de2d66a28d">log</a></li>
197 <li><a href="/graph/01de2d66a28d">graph</a></li>
197 <li><a href="/graph/01de2d66a28d">graph</a></li>
198 <li><a href="/tags">tags</a></li>
198 <li><a href="/tags">tags</a></li>
199 <li><a href="/branches">branches</a></li>
199 <li><a href="/branches">branches</a></li>
200 </ul>
200 </ul>
201 <ul>
201 <ul>
202 <li><a href="/rev/01de2d66a28d">changeset</a></li>
202 <li><a href="/rev/01de2d66a28d">changeset</a></li>
203 <li><a href="/file/01de2d66a28d">browse</a></li>
203 <li><a href="/file/01de2d66a28d">browse</a></li>
204 </ul>
204 </ul>
205 <ul>
205 <ul>
206 <li><a href="/file/01de2d66a28d/a">file</a></li>
206 <li><a href="/file/01de2d66a28d/a">file</a></li>
207 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
207 <li><a href="/diff/01de2d66a28d/a">diff</a></li>
208 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
208 <li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
209 <li class="active">file log</li>
209 <li class="active">file log</li>
210 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
210 <li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
211 </ul>
211 </ul>
212 </div>
212 </div>
213
213
214 <div class="main">
214 <div class="main">
215 <h2><a href="/">test</a></h2>
215 <h2><a href="/">test</a></h2>
216 <h3>log a</h3>
216 <h3>log a</h3>
217
217
218 <form class="search" action="/log">
218 <form class="search" action="/log">
219
219
220 <p><input name="rev" id="search1" type="text" size="30" /></p>
220 <p><input name="rev" id="search1" type="text" size="30" /></p>
221 <div id="hint">find changesets by author, revision,
221 <div id="hint">find changesets by author, revision,
222 files, or words in the commit message</div>
222 files, or words in the commit message</div>
223 </form>
223 </form>
224
224
225 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
225 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
226
226
227 <table class="bigtable">
227 <table class="bigtable">
228 <tr>
228 <tr>
229 <th class="age">age</th>
229 <th class="age">age</th>
230 <th class="author">author</th>
230 <th class="author">author</th>
231 <th class="description">description</th>
231 <th class="description">description</th>
232 </tr>
232 </tr>
233 <tr class="parity0">
233 <tr class="parity0">
234 <td class="age">many years ago</td>
234 <td class="age">1970-01-01</td>
235 <td class="author">test</td>
235 <td class="author">test</td>
236 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
236 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
237 </tr>
237 </tr>
238 <tr class="parity1">
238 <tr class="parity1">
239 <td class="age">many years ago</td>
239 <td class="age">1970-01-01</td>
240 <td class="author">test</td>
240 <td class="author">test</td>
241 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
241 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
242 </tr>
242 </tr>
243
243
244 </table>
244 </table>
245
245
246 </div>
246 </div>
247 </div>
247 </div>
248
248
249
249
250
250
251 </body>
251 </body>
252 </html>
252 </html>
253
253
254 % first deleted - one revision
254 % first deleted - one revision
255 200 Script output follows
255 200 Script output follows
256
256
257 <!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">
258 <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">
259 <head>
259 <head>
260 <link rel="icon" href="/static/hgicon.png" type="image/png" />
260 <link rel="icon" href="/static/hgicon.png" type="image/png" />
261 <meta name="robots" content="index, nofollow" />
261 <meta name="robots" content="index, nofollow" />
262 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
262 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
263
263
264 <title>test: a history</title>
264 <title>test: a history</title>
265 <link rel="alternate" type="application/atom+xml"
265 <link rel="alternate" type="application/atom+xml"
266 href="/atom-log/tip/a" title="Atom feed for test:a" />
266 href="/atom-log/tip/a" title="Atom feed for test:a" />
267 <link rel="alternate" type="application/rss+xml"
267 <link rel="alternate" type="application/rss+xml"
268 href="/rss-log/tip/a" title="RSS feed for test:a" />
268 href="/rss-log/tip/a" title="RSS feed for test:a" />
269 </head>
269 </head>
270 <body>
270 <body>
271
271
272 <div class="container">
272 <div class="container">
273 <div class="menu">
273 <div class="menu">
274 <div class="logo">
274 <div class="logo">
275 <a href="http://mercurial.selenic.com/">
275 <a href="http://mercurial.selenic.com/">
276 <img src="/static/hglogo.png" alt="mercurial" /></a>
276 <img src="/static/hglogo.png" alt="mercurial" /></a>
277 </div>
277 </div>
278 <ul>
278 <ul>
279 <li><a href="/shortlog/5ed941583260">log</a></li>
279 <li><a href="/shortlog/5ed941583260">log</a></li>
280 <li><a href="/graph/5ed941583260">graph</a></li>
280 <li><a href="/graph/5ed941583260">graph</a></li>
281 <li><a href="/tags">tags</a></li>
281 <li><a href="/tags">tags</a></li>
282 <li><a href="/branches">branches</a></li>
282 <li><a href="/branches">branches</a></li>
283 </ul>
283 </ul>
284 <ul>
284 <ul>
285 <li><a href="/rev/5ed941583260">changeset</a></li>
285 <li><a href="/rev/5ed941583260">changeset</a></li>
286 <li><a href="/file/5ed941583260">browse</a></li>
286 <li><a href="/file/5ed941583260">browse</a></li>
287 </ul>
287 </ul>
288 <ul>
288 <ul>
289 <li><a href="/file/5ed941583260/a">file</a></li>
289 <li><a href="/file/5ed941583260/a">file</a></li>
290 <li><a href="/diff/5ed941583260/a">diff</a></li>
290 <li><a href="/diff/5ed941583260/a">diff</a></li>
291 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
291 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
292 <li class="active">file log</li>
292 <li class="active">file log</li>
293 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
293 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
294 </ul>
294 </ul>
295 </div>
295 </div>
296
296
297 <div class="main">
297 <div class="main">
298 <h2><a href="/">test</a></h2>
298 <h2><a href="/">test</a></h2>
299 <h3>log a</h3>
299 <h3>log a</h3>
300
300
301 <form class="search" action="/log">
301 <form class="search" action="/log">
302
302
303 <p><input name="rev" id="search1" type="text" size="30" /></p>
303 <p><input name="rev" id="search1" type="text" size="30" /></p>
304 <div id="hint">find changesets by author, revision,
304 <div id="hint">find changesets by author, revision,
305 files, or words in the commit message</div>
305 files, or words in the commit message</div>
306 </form>
306 </form>
307
307
308 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
308 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
309
309
310 <table class="bigtable">
310 <table class="bigtable">
311 <tr>
311 <tr>
312 <th class="age">age</th>
312 <th class="age">age</th>
313 <th class="author">author</th>
313 <th class="author">author</th>
314 <th class="description">description</th>
314 <th class="description">description</th>
315 </tr>
315 </tr>
316 <tr class="parity0">
316 <tr class="parity0">
317 <td class="age">many years ago</td>
317 <td class="age">1970-01-01</td>
318 <td class="author">test</td>
318 <td class="author">test</td>
319 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
319 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
320 </tr>
320 </tr>
321
321
322 </table>
322 </table>
323
323
324 </div>
324 </div>
325 </div>
325 </div>
326
326
327
327
328
328
329 </body>
329 </body>
330 </html>
330 </html>
331
331
332 % first version - one revision
332 % first version - one revision
333 200 Script output follows
333 200 Script output follows
334
334
335 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
335 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
336 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
336 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
337 <head>
337 <head>
338 <link rel="icon" href="/static/hgicon.png" type="image/png" />
338 <link rel="icon" href="/static/hgicon.png" type="image/png" />
339 <meta name="robots" content="index, nofollow" />
339 <meta name="robots" content="index, nofollow" />
340 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
340 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
341
341
342 <title>test: a history</title>
342 <title>test: a history</title>
343 <link rel="alternate" type="application/atom+xml"
343 <link rel="alternate" type="application/atom+xml"
344 href="/atom-log/tip/a" title="Atom feed for test:a" />
344 href="/atom-log/tip/a" title="Atom feed for test:a" />
345 <link rel="alternate" type="application/rss+xml"
345 <link rel="alternate" type="application/rss+xml"
346 href="/rss-log/tip/a" title="RSS feed for test:a" />
346 href="/rss-log/tip/a" title="RSS feed for test:a" />
347 </head>
347 </head>
348 <body>
348 <body>
349
349
350 <div class="container">
350 <div class="container">
351 <div class="menu">
351 <div class="menu">
352 <div class="logo">
352 <div class="logo">
353 <a href="http://mercurial.selenic.com/">
353 <a href="http://mercurial.selenic.com/">
354 <img src="/static/hglogo.png" alt="mercurial" /></a>
354 <img src="/static/hglogo.png" alt="mercurial" /></a>
355 </div>
355 </div>
356 <ul>
356 <ul>
357 <li><a href="/shortlog/5ed941583260">log</a></li>
357 <li><a href="/shortlog/5ed941583260">log</a></li>
358 <li><a href="/graph/5ed941583260">graph</a></li>
358 <li><a href="/graph/5ed941583260">graph</a></li>
359 <li><a href="/tags">tags</a></li>
359 <li><a href="/tags">tags</a></li>
360 <li><a href="/branches">branches</a></li>
360 <li><a href="/branches">branches</a></li>
361 </ul>
361 </ul>
362 <ul>
362 <ul>
363 <li><a href="/rev/5ed941583260">changeset</a></li>
363 <li><a href="/rev/5ed941583260">changeset</a></li>
364 <li><a href="/file/5ed941583260">browse</a></li>
364 <li><a href="/file/5ed941583260">browse</a></li>
365 </ul>
365 </ul>
366 <ul>
366 <ul>
367 <li><a href="/file/5ed941583260/a">file</a></li>
367 <li><a href="/file/5ed941583260/a">file</a></li>
368 <li><a href="/diff/5ed941583260/a">diff</a></li>
368 <li><a href="/diff/5ed941583260/a">diff</a></li>
369 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
369 <li><a href="/annotate/5ed941583260/a">annotate</a></li>
370 <li class="active">file log</li>
370 <li class="active">file log</li>
371 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
371 <li><a href="/raw-file/5ed941583260/a">raw</a></li>
372 </ul>
372 </ul>
373 </div>
373 </div>
374
374
375 <div class="main">
375 <div class="main">
376 <h2><a href="/">test</a></h2>
376 <h2><a href="/">test</a></h2>
377 <h3>log a</h3>
377 <h3>log a</h3>
378
378
379 <form class="search" action="/log">
379 <form class="search" action="/log">
380
380
381 <p><input name="rev" id="search1" type="text" size="30" /></p>
381 <p><input name="rev" id="search1" type="text" size="30" /></p>
382 <div id="hint">find changesets by author, revision,
382 <div id="hint">find changesets by author, revision,
383 files, or words in the commit message</div>
383 files, or words in the commit message</div>
384 </form>
384 </form>
385
385
386 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
386 <div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
387
387
388 <table class="bigtable">
388 <table class="bigtable">
389 <tr>
389 <tr>
390 <th class="age">age</th>
390 <th class="age">age</th>
391 <th class="author">author</th>
391 <th class="author">author</th>
392 <th class="description">description</th>
392 <th class="description">description</th>
393 </tr>
393 </tr>
394 <tr class="parity0">
394 <tr class="parity0">
395 <td class="age">many years ago</td>
395 <td class="age">1970-01-01</td>
396 <td class="author">test</td>
396 <td class="author">test</td>
397 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
397 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
398 </tr>
398 </tr>
399
399
400 </table>
400 </table>
401
401
402 </div>
402 </div>
403 </div>
403 </div>
404
404
405
405
406
406
407 </body>
407 </body>
408 </html>
408 </html>
409
409
410 % before addition - error
410 % before addition - error
411 404 Not Found
411 404 Not Found
412
412
413 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
413 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
414 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
414 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
415 <head>
415 <head>
416 <link rel="icon" href="/static/hgicon.png" type="image/png" />
416 <link rel="icon" href="/static/hgicon.png" type="image/png" />
417 <meta name="robots" content="index, nofollow" />
417 <meta name="robots" content="index, nofollow" />
418 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
418 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
419
419
420 <title>test: error</title>
420 <title>test: error</title>
421 </head>
421 </head>
422 <body>
422 <body>
423
423
424 <div class="container">
424 <div class="container">
425 <div class="menu">
425 <div class="menu">
426 <div class="logo">
426 <div class="logo">
427 <a href="http://mercurial.selenic.com/">
427 <a href="http://mercurial.selenic.com/">
428 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
428 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
429 </div>
429 </div>
430 <ul>
430 <ul>
431 <li><a href="/shortlog">log</a></li>
431 <li><a href="/shortlog">log</a></li>
432 <li><a href="/graph">graph</a></li>
432 <li><a href="/graph">graph</a></li>
433 <li><a href="/tags">tags</a></li>
433 <li><a href="/tags">tags</a></li>
434 <li><a href="/branches">branches</a></li>
434 <li><a href="/branches">branches</a></li>
435 </ul>
435 </ul>
436 </div>
436 </div>
437
437
438 <div class="main">
438 <div class="main">
439
439
440 <h2><a href="/">test</a></h2>
440 <h2><a href="/">test</a></h2>
441 <h3>error</h3>
441 <h3>error</h3>
442
442
443 <form class="search" action="/log">
443 <form class="search" action="/log">
444
444
445 <p><input name="rev" id="search1" type="text" size="30"></p>
445 <p><input name="rev" id="search1" type="text" size="30"></p>
446 <div id="hint">find changesets by author, revision,
446 <div id="hint">find changesets by author, revision,
447 files, or words in the commit message</div>
447 files, or words in the commit message</div>
448 </form>
448 </form>
449
449
450 <div class="description">
450 <div class="description">
451 <p>
451 <p>
452 An error occurred while processing your request:
452 An error occurred while processing your request:
453 </p>
453 </p>
454 <p>
454 <p>
455 a@6563da9dcf87: not found in manifest
455 a@6563da9dcf87: not found in manifest
456 </p>
456 </p>
457 </div>
457 </div>
458 </div>
458 </div>
459 </div>
459 </div>
460
460
461
461
462
462
463 </body>
463 </body>
464 </html>
464 </html>
465
465
466 % should show base link, use spartan because it shows it
466 % should show base link, use spartan because it shows it
467 200 Script output follows
467 200 Script output follows
468
468
469 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
469 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
470 <html>
470 <html>
471 <head>
471 <head>
472 <link rel="icon" href="/static/hgicon.png" type="image/png">
472 <link rel="icon" href="/static/hgicon.png" type="image/png">
473 <meta name="robots" content="index, nofollow" />
473 <meta name="robots" content="index, nofollow" />
474 <link rel="stylesheet" href="/static/style.css" type="text/css" />
474 <link rel="stylesheet" href="/static/style.css" type="text/css" />
475
475
476 <title>test: c history</title>
476 <title>test: c history</title>
477 <link rel="alternate" type="application/atom+xml"
477 <link rel="alternate" type="application/atom+xml"
478 href="/atom-log/tip/c" title="Atom feed for test:c">
478 href="/atom-log/tip/c" title="Atom feed for test:c">
479 <link rel="alternate" type="application/rss+xml"
479 <link rel="alternate" type="application/rss+xml"
480 href="/rss-log/tip/c" title="RSS feed for test:c">
480 href="/rss-log/tip/c" title="RSS feed for test:c">
481 </head>
481 </head>
482 <body>
482 <body>
483
483
484 <div class="buttons">
484 <div class="buttons">
485 <a href="/log?style=spartan">changelog</a>
485 <a href="/log?style=spartan">changelog</a>
486 <a href="/shortlog?style=spartan">shortlog</a>
486 <a href="/shortlog?style=spartan">shortlog</a>
487 <a href="/graph?style=spartan">graph</a>
487 <a href="/graph?style=spartan">graph</a>
488 <a href="/tags?style=spartan">tags</a>
488 <a href="/tags?style=spartan">tags</a>
489 <a href="/branches?style=spartan">branches</a>
489 <a href="/branches?style=spartan">branches</a>
490 <a href="/file/38d962e6234d/c?style=spartan">file</a>
490 <a href="/file/38d962e6234d/c?style=spartan">file</a>
491 <a href="/annotate/38d962e6234d/c?style=spartan">annotate</a>
491 <a href="/annotate/38d962e6234d/c?style=spartan">annotate</a>
492 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
492 <a type="application/rss+xml" href="/rss-log/tip/c">rss</a>
493 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
493 <a type="application/atom+xml" href="/atom-log/tip/c" title="Atom feed for test:c">atom</a>
494 </div>
494 </div>
495
495
496 <h2>c revision history</h2>
496 <h2>c revision history</h2>
497
497
498 <p>navigate: <small class="navigate"><a href="/log/a3b6a9e4507e/c?style=spartan">(0)</a> <a href="/log/tip/c?style=spartan">tip</a> </small></p>
498 <p>navigate: <small class="navigate"><a href="/log/a3b6a9e4507e/c?style=spartan">(0)</a> <a href="/log/tip/c?style=spartan">tip</a> </small></p>
499
499
500 <table class="logEntry parity0">
500 <table class="logEntry parity0">
501 <tr>
501 <tr>
502 <th class="age">many years ago:</th>
502 <th class="age">1970-01-01:</th>
503 <th class="firstline"><a href="/rev/38d962e6234d?style=spartan">change c</a></th>
503 <th class="firstline"><a href="/rev/38d962e6234d?style=spartan">change c</a></th>
504 </tr>
504 </tr>
505 <tr>
505 <tr>
506 <th class="revision">revision 1:</td>
506 <th class="revision">revision 1:</td>
507 <td class="node">
507 <td class="node">
508 <a href="/file/38d962e6234d/c?style=spartan">38d962e6234d</a>
508 <a href="/file/38d962e6234d/c?style=spartan">38d962e6234d</a>
509 <a href="/diff/38d962e6234d/c?style=spartan">(diff)</a>
509 <a href="/diff/38d962e6234d/c?style=spartan">(diff)</a>
510 <a href="/annotate/38d962e6234d/c?style=spartan">(annotate)</a>
510 <a href="/annotate/38d962e6234d/c?style=spartan">(annotate)</a>
511 </td>
511 </td>
512 </tr>
512 </tr>
513
513
514 <tr>
514 <tr>
515 <th class="author">author:</th>
515 <th class="author">author:</th>
516 <td class="author">&#116;&#101;&#115;&#116;</td>
516 <td class="author">&#116;&#101;&#115;&#116;</td>
517 </tr>
517 </tr>
518 <tr>
518 <tr>
519 <th class="date">date:</th>
519 <th class="date">date:</th>
520 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
520 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
521 </tr>
521 </tr>
522 </table>
522 </table>
523
523
524
524
525 <table class="logEntry parity1">
525 <table class="logEntry parity1">
526 <tr>
526 <tr>
527 <th class="age">many years ago:</th>
527 <th class="age">1970-01-01:</th>
528 <th class="firstline"><a href="/rev/a3b6a9e4507e?style=spartan">mv b</a></th>
528 <th class="firstline"><a href="/rev/a3b6a9e4507e?style=spartan">mv b</a></th>
529 </tr>
529 </tr>
530 <tr>
530 <tr>
531 <th class="revision">revision 0:</td>
531 <th class="revision">revision 0:</td>
532 <td class="node">
532 <td class="node">
533 <a href="/file/a3b6a9e4507e/c?style=spartan">a3b6a9e4507e</a>
533 <a href="/file/a3b6a9e4507e/c?style=spartan">a3b6a9e4507e</a>
534 <a href="/diff/a3b6a9e4507e/c?style=spartan">(diff)</a>
534 <a href="/diff/a3b6a9e4507e/c?style=spartan">(diff)</a>
535 <a href="/annotate/a3b6a9e4507e/c?style=spartan">(annotate)</a>
535 <a href="/annotate/a3b6a9e4507e/c?style=spartan">(annotate)</a>
536 </td>
536 </td>
537 </tr>
537 </tr>
538
538
539 <tr>
539 <tr>
540 <th>base:</th>
540 <th>base:</th>
541 <td>
541 <td>
542 <a href="/file/1e88685f5dde/b?style=spartan">
542 <a href="/file/1e88685f5dde/b?style=spartan">
543 b@1e88685f5dde
543 b@1e88685f5dde
544 </a>
544 </a>
545 </td>
545 </td>
546 </tr>
546 </tr>
547 <tr>
547 <tr>
548 <th class="author">author:</th>
548 <th class="author">author:</th>
549 <td class="author">&#116;&#101;&#115;&#116;</td>
549 <td class="author">&#116;&#101;&#115;&#116;</td>
550 </tr>
550 </tr>
551 <tr>
551 <tr>
552 <th class="date">date:</th>
552 <th class="date">date:</th>
553 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
553 <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
554 </tr>
554 </tr>
555 </table>
555 </table>
556
556
557
557
558
558
559
559
560
560
561 <div class="logo">
561 <div class="logo">
562 <a href="http://mercurial.selenic.com/">
562 <a href="http://mercurial.selenic.com/">
563 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
563 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
564 </div>
564 </div>
565
565
566 </body>
566 </body>
567 </html>
567 </html>
568
568
569 % errors
569 % errors
@@ -1,181 +1,181 b''
1 % setting up repo
1 % setting up repo
2 adding a
2 adding a
3 % set up hgweb
3 % set up hgweb
4 % revision
4 % revision
5 200 Script output follows
5 200 Script output follows
6
6
7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
8 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
8 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
9 <head>
9 <head>
10 <link rel="icon" href="/static/hgicon.png" type="image/png" />
10 <link rel="icon" href="/static/hgicon.png" type="image/png" />
11 <meta name="robots" content="index, nofollow" />
11 <meta name="robots" content="index, nofollow" />
12 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
12 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
13
13
14 <title>test: c78f6c5cbea9</title>
14 <title>test: c78f6c5cbea9</title>
15 </head>
15 </head>
16 <body>
16 <body>
17 <div class="container">
17 <div class="container">
18 <div class="menu">
18 <div class="menu">
19 <div class="logo">
19 <div class="logo">
20 <a href="http://mercurial.selenic.com/">
20 <a href="http://mercurial.selenic.com/">
21 <img src="/static/hglogo.png" alt="mercurial" /></a>
21 <img src="/static/hglogo.png" alt="mercurial" /></a>
22 </div>
22 </div>
23 <ul>
23 <ul>
24 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
24 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
25 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
25 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
26 <li><a href="/tags">tags</a></li>
26 <li><a href="/tags">tags</a></li>
27 <li><a href="/branches">branches</a></li>
27 <li><a href="/branches">branches</a></li>
28 </ul>
28 </ul>
29 <ul>
29 <ul>
30 <li class="active">changeset</li>
30 <li class="active">changeset</li>
31 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
31 <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
32 <li><a href="/file/c78f6c5cbea9">browse</a></li>
32 <li><a href="/file/c78f6c5cbea9">browse</a></li>
33 </ul>
33 </ul>
34 <ul>
34 <ul>
35
35
36 </ul>
36 </ul>
37 </div>
37 </div>
38
38
39 <div class="main">
39 <div class="main">
40
40
41 <h2><a href="/">test</a></h2>
41 <h2><a href="/">test</a></h2>
42 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
42 <h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
43
43
44 <form class="search" action="/log">
44 <form class="search" action="/log">
45
45
46 <p><input name="rev" id="search1" type="text" size="30" /></p>
46 <p><input name="rev" id="search1" type="text" size="30" /></p>
47 <div id="hint">find changesets by author, revision,
47 <div id="hint">find changesets by author, revision,
48 files, or words in the commit message</div>
48 files, or words in the commit message</div>
49 </form>
49 </form>
50
50
51 <div class="description">del</div>
51 <div class="description">del</div>
52
52
53 <table id="changesetEntry">
53 <table id="changesetEntry">
54 <tr>
54 <tr>
55 <th class="author">author</th>
55 <th class="author">author</th>
56 <td class="author">&#116;&#101;&#115;&#116;</td>
56 <td class="author">&#116;&#101;&#115;&#116;</td>
57 </tr>
57 </tr>
58 <tr>
58 <tr>
59 <th class="date">date</th>
59 <th class="date">date</th>
60 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td></tr>
60 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
61 <tr>
61 <tr>
62 <th class="author">parents</th>
62 <th class="author">parents</th>
63 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
63 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
64 </tr>
64 </tr>
65 <tr>
65 <tr>
66 <th class="author">children</th>
66 <th class="author">children</th>
67 <td class="author"></td>
67 <td class="author"></td>
68 </tr>
68 </tr>
69 <tr>
69 <tr>
70 <th class="files">files</th>
70 <th class="files">files</th>
71 <td class="files">a </td>
71 <td class="files">a </td>
72 </tr>
72 </tr>
73 </table>
73 </table>
74
74
75 <div class="overflow">
75 <div class="overflow">
76 <div class="sourcefirst"> line diff</div>
76 <div class="sourcefirst"> line diff</div>
77
77
78 <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
78 <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
79 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
79 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
80 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
80 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
81 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
81 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
82 </span></pre></div>
82 </span></pre></div>
83 </div>
83 </div>
84
84
85 </div>
85 </div>
86 </div>
86 </div>
87
87
88
88
89 </body>
89 </body>
90 </html>
90 </html>
91
91
92 % diff removed file
92 % diff removed file
93 200 Script output follows
93 200 Script output follows
94
94
95 <!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">
96 <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">
97 <head>
97 <head>
98 <link rel="icon" href="/static/hgicon.png" type="image/png" />
98 <link rel="icon" href="/static/hgicon.png" type="image/png" />
99 <meta name="robots" content="index, nofollow" />
99 <meta name="robots" content="index, nofollow" />
100 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
100 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
101
101
102 <title>test: a diff</title>
102 <title>test: a diff</title>
103 </head>
103 </head>
104 <body>
104 <body>
105
105
106 <div class="container">
106 <div class="container">
107 <div class="menu">
107 <div class="menu">
108 <div class="logo">
108 <div class="logo">
109 <a href="http://mercurial.selenic.com/">
109 <a href="http://mercurial.selenic.com/">
110 <img src="/static/hglogo.png" alt="mercurial" /></a>
110 <img src="/static/hglogo.png" alt="mercurial" /></a>
111 </div>
111 </div>
112 <ul>
112 <ul>
113 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
113 <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
114 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
114 <li><a href="/graph/c78f6c5cbea9">graph</a></li>
115 <li><a href="/tags">tags</a></li>
115 <li><a href="/tags">tags</a></li>
116 <li><a href="/branches">branches</a></li>
116 <li><a href="/branches">branches</a></li>
117 </ul>
117 </ul>
118 <ul>
118 <ul>
119 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
119 <li><a href="/rev/c78f6c5cbea9">changeset</a></li>
120 <li><a href="/file/c78f6c5cbea9">browse</a></li>
120 <li><a href="/file/c78f6c5cbea9">browse</a></li>
121 </ul>
121 </ul>
122 <ul>
122 <ul>
123 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
123 <li><a href="/file/c78f6c5cbea9/a">file</a></li>
124 <li><a href="/file/tip/a">latest</a></li>
124 <li><a href="/file/tip/a">latest</a></li>
125 <li class="active">diff</li>
125 <li class="active">diff</li>
126 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
126 <li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
127 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
127 <li><a href="/log/c78f6c5cbea9/a">file log</a></li>
128 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
128 <li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
129 </ul>
129 </ul>
130 </div>
130 </div>
131
131
132 <div class="main">
132 <div class="main">
133 <h2><a href="/">test</a></h2>
133 <h2><a href="/">test</a></h2>
134 <h3>diff a @ 1:c78f6c5cbea9</h3>
134 <h3>diff a @ 1:c78f6c5cbea9</h3>
135
135
136 <form class="search" action="/log">
136 <form class="search" action="/log">
137 <p></p>
137 <p></p>
138 <p><input name="rev" id="search1" type="text" size="30" /></p>
138 <p><input name="rev" id="search1" type="text" size="30" /></p>
139 <div id="hint">find changesets by author, revision,
139 <div id="hint">find changesets by author, revision,
140 files, or words in the commit message</div>
140 files, or words in the commit message</div>
141 </form>
141 </form>
142
142
143 <div class="description">del</div>
143 <div class="description">del</div>
144
144
145 <table id="changesetEntry">
145 <table id="changesetEntry">
146 <tr>
146 <tr>
147 <th>author</th>
147 <th>author</th>
148 <td>&#116;&#101;&#115;&#116;</td>
148 <td>&#116;&#101;&#115;&#116;</td>
149 </tr>
149 </tr>
150 <tr>
150 <tr>
151 <th>date</th>
151 <th>date</th>
152 <td>Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
152 <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
153 </tr>
153 </tr>
154 <tr>
154 <tr>
155 <th>parents</th>
155 <th>parents</th>
156 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
156 <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
157 </tr>
157 </tr>
158 <tr>
158 <tr>
159 <th>children</th>
159 <th>children</th>
160 <td></td>
160 <td></td>
161 </tr>
161 </tr>
162
162
163 </table>
163 </table>
164
164
165 <div class="overflow">
165 <div class="overflow">
166 <div class="sourcefirst"> line diff</div>
166 <div class="sourcefirst"> line diff</div>
167
167
168 <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
168 <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
169 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
169 </span><a href="#l1.2" id="l1.2"> 1.2</a> <span class="plusline">+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
170 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
170 </span><a href="#l1.3" id="l1.3"> 1.3</a> <span class="atline">@@ -1,1 +0,0 @@
171 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
171 </span><a href="#l1.4" id="l1.4"> 1.4</a> <span class="minusline">-a
172 </span></pre></div>
172 </span></pre></div>
173 </div>
173 </div>
174 </div>
174 </div>
175 </div>
175 </div>
176
176
177
177
178
178
179 </body>
179 </body>
180 </html>
180 </html>
181
181
@@ -1,467 +1,467 b''
1 adding primes.py
1 adding primes.py
2 % hg serve
2 % hg serve
3 % hgweb filerevision, html
3 % hgweb filerevision, html
4 200 Script output follows
4 200 Script output follows
5
5
6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
7 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
7 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
8 <head>
8 <head>
9 <link rel="icon" href="/static/hgicon.png" type="image/png" />
9 <link rel="icon" href="/static/hgicon.png" type="image/png" />
10 <meta name="robots" content="index, nofollow" />
10 <meta name="robots" content="index, nofollow" />
11 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
11 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
12
12
13 <link rel="stylesheet" href="/highlightcss" type="text/css" />
13 <link rel="stylesheet" href="/highlightcss" type="text/css" />
14 <title>test: 853dcd4de2a6 primes.py</title>
14 <title>test: 853dcd4de2a6 primes.py</title>
15 </head>
15 </head>
16 <body>
16 <body>
17
17
18 <div class="container">
18 <div class="container">
19 <div class="menu">
19 <div class="menu">
20 <div class="logo">
20 <div class="logo">
21 <a href="http://mercurial.selenic.com/">
21 <a href="http://mercurial.selenic.com/">
22 <img src="/static/hglogo.png" alt="mercurial" /></a>
22 <img src="/static/hglogo.png" alt="mercurial" /></a>
23 </div>
23 </div>
24 <ul>
24 <ul>
25 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
25 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
26 <li><a href="/graph/853dcd4de2a6">graph</a></li>
26 <li><a href="/graph/853dcd4de2a6">graph</a></li>
27 <li><a href="/tags">tags</a></li>
27 <li><a href="/tags">tags</a></li>
28 <li><a href="/branches">branches</a></li>
28 <li><a href="/branches">branches</a></li>
29 </ul>
29 </ul>
30 <ul>
30 <ul>
31 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
31 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
32 <li><a href="/file/853dcd4de2a6/">browse</a></li>
32 <li><a href="/file/853dcd4de2a6/">browse</a></li>
33 </ul>
33 </ul>
34 <ul>
34 <ul>
35 <li class="active">file</li>
35 <li class="active">file</li>
36 <li><a href="/file/tip/primes.py">latest</a></li>
36 <li><a href="/file/tip/primes.py">latest</a></li>
37 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
37 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
38 <li><a href="/annotate/853dcd4de2a6/primes.py">annotate</a></li>
38 <li><a href="/annotate/853dcd4de2a6/primes.py">annotate</a></li>
39 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
39 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
40 <li><a href="/raw-file/853dcd4de2a6/primes.py">raw</a></li>
40 <li><a href="/raw-file/853dcd4de2a6/primes.py">raw</a></li>
41 </ul>
41 </ul>
42 </div>
42 </div>
43
43
44 <div class="main">
44 <div class="main">
45 <h2><a href="/">test</a></h2>
45 <h2><a href="/">test</a></h2>
46 <h3>view primes.py @ 0:853dcd4de2a6</h3>
46 <h3>view primes.py @ 0:853dcd4de2a6</h3>
47
47
48 <form class="search" action="/log">
48 <form class="search" action="/log">
49
49
50 <p><input name="rev" id="search1" type="text" size="30" /></p>
50 <p><input name="rev" id="search1" type="text" size="30" /></p>
51 <div id="hint">find changesets by author, revision,
51 <div id="hint">find changesets by author, revision,
52 files, or words in the commit message</div>
52 files, or words in the commit message</div>
53 </form>
53 </form>
54
54
55 <div class="description">a</div>
55 <div class="description">a</div>
56
56
57 <table id="changesetEntry">
57 <table id="changesetEntry">
58 <tr>
58 <tr>
59 <th class="author">author</th>
59 <th class="author">author</th>
60 <td class="author">&#116;&#101;&#115;&#116;</td>
60 <td class="author">&#116;&#101;&#115;&#116;</td>
61 </tr>
61 </tr>
62 <tr>
62 <tr>
63 <th class="date">date</th>
63 <th class="date">date</th>
64 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
64 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
65 </tr>
65 </tr>
66 <tr>
66 <tr>
67 <th class="author">parents</th>
67 <th class="author">parents</th>
68 <td class="author"></td>
68 <td class="author"></td>
69 </tr>
69 </tr>
70 <tr>
70 <tr>
71 <th class="author">children</th>
71 <th class="author">children</th>
72 <td class="author"></td>
72 <td class="author"></td>
73 </tr>
73 </tr>
74
74
75 </table>
75 </table>
76
76
77 <div class="overflow">
77 <div class="overflow">
78 <div class="sourcefirst"> line source</div>
78 <div class="sourcefirst"> line source</div>
79
79
80 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
80 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
81 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
81 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
82 <div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></div>
82 <div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></div>
83 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
83 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
84 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
84 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
85 <div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></div>
85 <div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></div>
86 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
86 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
87 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
87 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
88 <div class="parity0 source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></div>
88 <div class="parity0 source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></div>
89 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
89 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
90 <div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></div>
90 <div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></div>
91 <div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></div>
91 <div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></div>
92 <div class="parity0 source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div>
92 <div class="parity0 source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div>
93 <div class="parity1 source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></div>
93 <div class="parity1 source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></div>
94 <div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></div>
94 <div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></div>
95 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
95 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
96 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
96 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
97 <div class="parity1 source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></div>
97 <div class="parity1 source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></div>
98 <div class="parity0 source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div>
98 <div class="parity0 source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div>
99 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
99 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
100 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
100 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
101 <div class="parity1 source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></div>
101 <div class="parity1 source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></div>
102 <div class="parity0 source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></div>
102 <div class="parity0 source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></div>
103 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
103 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
104 <div class="parity0 source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></div>
104 <div class="parity0 source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></div>
105 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
105 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
106 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
106 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
107 <div class="parity1 source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></div>
107 <div class="parity1 source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></div>
108 <div class="parity0 source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></div>
108 <div class="parity0 source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></div>
109 <div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></div>
109 <div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></div>
110 <div class="parity0 source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></div>
110 <div class="parity0 source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></div>
111 <div class="parity1 source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></div>
111 <div class="parity1 source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></div>
112 <div class="sourcelast"></div>
112 <div class="sourcelast"></div>
113 </div>
113 </div>
114 </div>
114 </div>
115 </div>
115 </div>
116
116
117
117
118
118
119 </body>
119 </body>
120 </html>
120 </html>
121
121
122 % hgweb fileannotate, html
122 % hgweb fileannotate, html
123 200 Script output follows
123 200 Script output follows
124
124
125 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
125 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
126 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
126 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
127 <head>
127 <head>
128 <link rel="icon" href="/static/hgicon.png" type="image/png" />
128 <link rel="icon" href="/static/hgicon.png" type="image/png" />
129 <meta name="robots" content="index, nofollow" />
129 <meta name="robots" content="index, nofollow" />
130 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
130 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
131
131
132 <link rel="stylesheet" href="/highlightcss" type="text/css" />
132 <link rel="stylesheet" href="/highlightcss" type="text/css" />
133 <title>test: primes.py annotate</title>
133 <title>test: primes.py annotate</title>
134 </head>
134 </head>
135 <body>
135 <body>
136
136
137 <div class="container">
137 <div class="container">
138 <div class="menu">
138 <div class="menu">
139 <div class="logo">
139 <div class="logo">
140 <a href="http://mercurial.selenic.com/">
140 <a href="http://mercurial.selenic.com/">
141 <img src="/static/hglogo.png" alt="mercurial" /></a>
141 <img src="/static/hglogo.png" alt="mercurial" /></a>
142 </div>
142 </div>
143 <ul>
143 <ul>
144 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
144 <li><a href="/shortlog/853dcd4de2a6">log</a></li>
145 <li><a href="/graph/853dcd4de2a6">graph</a></li>
145 <li><a href="/graph/853dcd4de2a6">graph</a></li>
146 <li><a href="/tags">tags</a></li>
146 <li><a href="/tags">tags</a></li>
147 <li><a href="/branches">branches</a></li>
147 <li><a href="/branches">branches</a></li>
148 </ul>
148 </ul>
149
149
150 <ul>
150 <ul>
151 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
151 <li><a href="/rev/853dcd4de2a6">changeset</a></li>
152 <li><a href="/file/853dcd4de2a6/">browse</a></li>
152 <li><a href="/file/853dcd4de2a6/">browse</a></li>
153 </ul>
153 </ul>
154 <ul>
154 <ul>
155 <li><a href="/file/853dcd4de2a6/primes.py">file</a></li>
155 <li><a href="/file/853dcd4de2a6/primes.py">file</a></li>
156 <li><a href="/file/tip/primes.py">latest</a></li>
156 <li><a href="/file/tip/primes.py">latest</a></li>
157 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
157 <li><a href="/diff/853dcd4de2a6/primes.py">diff</a></li>
158 <li class="active">annotate</li>
158 <li class="active">annotate</li>
159 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
159 <li><a href="/log/853dcd4de2a6/primes.py">file log</a></li>
160 <li><a href="/raw-annotate/853dcd4de2a6/primes.py">raw</a></li>
160 <li><a href="/raw-annotate/853dcd4de2a6/primes.py">raw</a></li>
161 </ul>
161 </ul>
162 </div>
162 </div>
163
163
164 <div class="main">
164 <div class="main">
165 <h2><a href="/">test</a></h2>
165 <h2><a href="/">test</a></h2>
166 <h3>annotate primes.py @ 0:853dcd4de2a6</h3>
166 <h3>annotate primes.py @ 0:853dcd4de2a6</h3>
167
167
168 <form class="search" action="/log">
168 <form class="search" action="/log">
169
169
170 <p><input name="rev" id="search1" type="text" size="30" /></p>
170 <p><input name="rev" id="search1" type="text" size="30" /></p>
171 <div id="hint">find changesets by author, revision,
171 <div id="hint">find changesets by author, revision,
172 files, or words in the commit message</div>
172 files, or words in the commit message</div>
173 </form>
173 </form>
174
174
175 <div class="description">a</div>
175 <div class="description">a</div>
176
176
177 <table id="changesetEntry">
177 <table id="changesetEntry">
178 <tr>
178 <tr>
179 <th class="author">author</th>
179 <th class="author">author</th>
180 <td class="author">&#116;&#101;&#115;&#116;</td>
180 <td class="author">&#116;&#101;&#115;&#116;</td>
181 </tr>
181 </tr>
182 <tr>
182 <tr>
183 <th class="date">date</th>
183 <th class="date">date</th>
184 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
184 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
185 </tr>
185 </tr>
186 <tr>
186 <tr>
187 <th class="author">parents</th>
187 <th class="author">parents</th>
188 <td class="author"></td>
188 <td class="author"></td>
189 </tr>
189 </tr>
190 <tr>
190 <tr>
191 <th class="author">children</th>
191 <th class="author">children</th>
192 <td class="author"></td>
192 <td class="author"></td>
193 </tr>
193 </tr>
194
194
195 </table>
195 </table>
196
196
197 <div class="overflow">
197 <div class="overflow">
198 <table class="bigtable">
198 <table class="bigtable">
199 <tr>
199 <tr>
200 <th class="annotate">rev</th>
200 <th class="annotate">rev</th>
201 <th class="line">&nbsp;&nbsp;line source</th>
201 <th class="line">&nbsp;&nbsp;line source</th>
202 </tr>
202 </tr>
203
203
204 <tr class="parity0">
204 <tr class="parity0">
205 <td class="annotate">
205 <td class="annotate">
206 <a href="/annotate/853dcd4de2a6/primes.py#1"
206 <a href="/annotate/853dcd4de2a6/primes.py#1"
207 title="853dcd4de2a6: a">test@0</a>
207 title="853dcd4de2a6: a">test@0</a>
208 </td>
208 </td>
209 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
209 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
210 </tr>
210 </tr>
211 <tr class="parity1">
211 <tr class="parity1">
212 <td class="annotate">
212 <td class="annotate">
213 <a href="/annotate/853dcd4de2a6/primes.py#2"
213 <a href="/annotate/853dcd4de2a6/primes.py#2"
214 title="853dcd4de2a6: a">test@0</a>
214 title="853dcd4de2a6: a">test@0</a>
215 </td>
215 </td>
216 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
216 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
217 </tr>
217 </tr>
218 <tr class="parity0">
218 <tr class="parity0">
219 <td class="annotate">
219 <td class="annotate">
220 <a href="/annotate/853dcd4de2a6/primes.py#3"
220 <a href="/annotate/853dcd4de2a6/primes.py#3"
221 title="853dcd4de2a6: a">test@0</a>
221 title="853dcd4de2a6: a">test@0</a>
222 </td>
222 </td>
223 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
223 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
224 </tr>
224 </tr>
225 <tr class="parity1">
225 <tr class="parity1">
226 <td class="annotate">
226 <td class="annotate">
227 <a href="/annotate/853dcd4de2a6/primes.py#4"
227 <a href="/annotate/853dcd4de2a6/primes.py#4"
228 title="853dcd4de2a6: a">test@0</a>
228 title="853dcd4de2a6: a">test@0</a>
229 </td>
229 </td>
230 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
230 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
231 </tr>
231 </tr>
232 <tr class="parity0">
232 <tr class="parity0">
233 <td class="annotate">
233 <td class="annotate">
234 <a href="/annotate/853dcd4de2a6/primes.py#5"
234 <a href="/annotate/853dcd4de2a6/primes.py#5"
235 title="853dcd4de2a6: a">test@0</a>
235 title="853dcd4de2a6: a">test@0</a>
236 </td>
236 </td>
237 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
237 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
238 </tr>
238 </tr>
239 <tr class="parity1">
239 <tr class="parity1">
240 <td class="annotate">
240 <td class="annotate">
241 <a href="/annotate/853dcd4de2a6/primes.py#6"
241 <a href="/annotate/853dcd4de2a6/primes.py#6"
242 title="853dcd4de2a6: a">test@0</a>
242 title="853dcd4de2a6: a">test@0</a>
243 </td>
243 </td>
244 <td class="source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
244 <td class="source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
245 </tr>
245 </tr>
246 <tr class="parity0">
246 <tr class="parity0">
247 <td class="annotate">
247 <td class="annotate">
248 <a href="/annotate/853dcd4de2a6/primes.py#7"
248 <a href="/annotate/853dcd4de2a6/primes.py#7"
249 title="853dcd4de2a6: a">test@0</a>
249 title="853dcd4de2a6: a">test@0</a>
250 </td>
250 </td>
251 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
251 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
252 </tr>
252 </tr>
253 <tr class="parity1">
253 <tr class="parity1">
254 <td class="annotate">
254 <td class="annotate">
255 <a href="/annotate/853dcd4de2a6/primes.py#8"
255 <a href="/annotate/853dcd4de2a6/primes.py#8"
256 title="853dcd4de2a6: a">test@0</a>
256 title="853dcd4de2a6: a">test@0</a>
257 </td>
257 </td>
258 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
258 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
259 </tr>
259 </tr>
260 <tr class="parity0">
260 <tr class="parity0">
261 <td class="annotate">
261 <td class="annotate">
262 <a href="/annotate/853dcd4de2a6/primes.py#9"
262 <a href="/annotate/853dcd4de2a6/primes.py#9"
263 title="853dcd4de2a6: a">test@0</a>
263 title="853dcd4de2a6: a">test@0</a>
264 </td>
264 </td>
265 <td class="source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></td>
265 <td class="source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></td>
266 </tr>
266 </tr>
267 <tr class="parity1">
267 <tr class="parity1">
268 <td class="annotate">
268 <td class="annotate">
269 <a href="/annotate/853dcd4de2a6/primes.py#10"
269 <a href="/annotate/853dcd4de2a6/primes.py#10"
270 title="853dcd4de2a6: a">test@0</a>
270 title="853dcd4de2a6: a">test@0</a>
271 </td>
271 </td>
272 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
272 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
273 </tr>
273 </tr>
274 <tr class="parity0">
274 <tr class="parity0">
275 <td class="annotate">
275 <td class="annotate">
276 <a href="/annotate/853dcd4de2a6/primes.py#11"
276 <a href="/annotate/853dcd4de2a6/primes.py#11"
277 title="853dcd4de2a6: a">test@0</a>
277 title="853dcd4de2a6: a">test@0</a>
278 </td>
278 </td>
279 <td class="source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
279 <td class="source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
280 </tr>
280 </tr>
281 <tr class="parity1">
281 <tr class="parity1">
282 <td class="annotate">
282 <td class="annotate">
283 <a href="/annotate/853dcd4de2a6/primes.py#12"
283 <a href="/annotate/853dcd4de2a6/primes.py#12"
284 title="853dcd4de2a6: a">test@0</a>
284 title="853dcd4de2a6: a">test@0</a>
285 </td>
285 </td>
286 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
286 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
287 </tr>
287 </tr>
288 <tr class="parity0">
288 <tr class="parity0">
289 <td class="annotate">
289 <td class="annotate">
290 <a href="/annotate/853dcd4de2a6/primes.py#13"
290 <a href="/annotate/853dcd4de2a6/primes.py#13"
291 title="853dcd4de2a6: a">test@0</a>
291 title="853dcd4de2a6: a">test@0</a>
292 </td>
292 </td>
293 <td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
293 <td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
294 </tr>
294 </tr>
295 <tr class="parity1">
295 <tr class="parity1">
296 <td class="annotate">
296 <td class="annotate">
297 <a href="/annotate/853dcd4de2a6/primes.py#14"
297 <a href="/annotate/853dcd4de2a6/primes.py#14"
298 title="853dcd4de2a6: a">test@0</a>
298 title="853dcd4de2a6: a">test@0</a>
299 </td>
299 </td>
300 <td class="source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td>
300 <td class="source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td>
301 </tr>
301 </tr>
302 <tr class="parity0">
302 <tr class="parity0">
303 <td class="annotate">
303 <td class="annotate">
304 <a href="/annotate/853dcd4de2a6/primes.py#15"
304 <a href="/annotate/853dcd4de2a6/primes.py#15"
305 title="853dcd4de2a6: a">test@0</a>
305 title="853dcd4de2a6: a">test@0</a>
306 </td>
306 </td>
307 <td class="source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
307 <td class="source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
308 </tr>
308 </tr>
309 <tr class="parity1">
309 <tr class="parity1">
310 <td class="annotate">
310 <td class="annotate">
311 <a href="/annotate/853dcd4de2a6/primes.py#16"
311 <a href="/annotate/853dcd4de2a6/primes.py#16"
312 title="853dcd4de2a6: a">test@0</a>
312 title="853dcd4de2a6: a">test@0</a>
313 </td>
313 </td>
314 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
314 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
315 </tr>
315 </tr>
316 <tr class="parity0">
316 <tr class="parity0">
317 <td class="annotate">
317 <td class="annotate">
318 <a href="/annotate/853dcd4de2a6/primes.py#17"
318 <a href="/annotate/853dcd4de2a6/primes.py#17"
319 title="853dcd4de2a6: a">test@0</a>
319 title="853dcd4de2a6: a">test@0</a>
320 </td>
320 </td>
321 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
321 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
322 </tr>
322 </tr>
323 <tr class="parity1">
323 <tr class="parity1">
324 <td class="annotate">
324 <td class="annotate">
325 <a href="/annotate/853dcd4de2a6/primes.py#18"
325 <a href="/annotate/853dcd4de2a6/primes.py#18"
326 title="853dcd4de2a6: a">test@0</a>
326 title="853dcd4de2a6: a">test@0</a>
327 </td>
327 </td>
328 <td class="source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mf">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
328 <td class="source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mf">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
329 </tr>
329 </tr>
330 <tr class="parity0">
330 <tr class="parity0">
331 <td class="annotate">
331 <td class="annotate">
332 <a href="/annotate/853dcd4de2a6/primes.py#19"
332 <a href="/annotate/853dcd4de2a6/primes.py#19"
333 title="853dcd4de2a6: a">test@0</a>
333 title="853dcd4de2a6: a">test@0</a>
334 </td>
334 </td>
335 <td class="source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
335 <td class="source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
336 </tr>
336 </tr>
337 <tr class="parity1">
337 <tr class="parity1">
338 <td class="annotate">
338 <td class="annotate">
339 <a href="/annotate/853dcd4de2a6/primes.py#20"
339 <a href="/annotate/853dcd4de2a6/primes.py#20"
340 title="853dcd4de2a6: a">test@0</a>
340 title="853dcd4de2a6: a">test@0</a>
341 </td>
341 </td>
342 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
342 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
343 </tr>
343 </tr>
344 <tr class="parity0">
344 <tr class="parity0">
345 <td class="annotate">
345 <td class="annotate">
346 <a href="/annotate/853dcd4de2a6/primes.py#21"
346 <a href="/annotate/853dcd4de2a6/primes.py#21"
347 title="853dcd4de2a6: a">test@0</a>
347 title="853dcd4de2a6: a">test@0</a>
348 </td>
348 </td>
349 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
349 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
350 </tr>
350 </tr>
351 <tr class="parity1">
351 <tr class="parity1">
352 <td class="annotate">
352 <td class="annotate">
353 <a href="/annotate/853dcd4de2a6/primes.py#22"
353 <a href="/annotate/853dcd4de2a6/primes.py#22"
354 title="853dcd4de2a6: a">test@0</a>
354 title="853dcd4de2a6: a">test@0</a>
355 </td>
355 </td>
356 <td class="source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mf">2</span> <span class="o">==</span> <span class="mf">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
356 <td class="source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mf">2</span> <span class="o">==</span> <span class="mf">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
357 </tr>
357 </tr>
358 <tr class="parity0">
358 <tr class="parity0">
359 <td class="annotate">
359 <td class="annotate">
360 <a href="/annotate/853dcd4de2a6/primes.py#23"
360 <a href="/annotate/853dcd4de2a6/primes.py#23"
361 title="853dcd4de2a6: a">test@0</a>
361 title="853dcd4de2a6: a">test@0</a>
362 </td>
362 </td>
363 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mf">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mf">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
363 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mf">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mf">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
364 </tr>
364 </tr>
365 <tr class="parity1">
365 <tr class="parity1">
366 <td class="annotate">
366 <td class="annotate">
367 <a href="/annotate/853dcd4de2a6/primes.py#24"
367 <a href="/annotate/853dcd4de2a6/primes.py#24"
368 title="853dcd4de2a6: a">test@0</a>
368 title="853dcd4de2a6: a">test@0</a>
369 </td>
369 </td>
370 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
370 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
371 </tr>
371 </tr>
372 <tr class="parity0">
372 <tr class="parity0">
373 <td class="annotate">
373 <td class="annotate">
374 <a href="/annotate/853dcd4de2a6/primes.py#25"
374 <a href="/annotate/853dcd4de2a6/primes.py#25"
375 title="853dcd4de2a6: a">test@0</a>
375 title="853dcd4de2a6: a">test@0</a>
376 </td>
376 </td>
377 <td class="source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></td>
377 <td class="source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></td>
378 </tr>
378 </tr>
379 <tr class="parity1">
379 <tr class="parity1">
380 <td class="annotate">
380 <td class="annotate">
381 <a href="/annotate/853dcd4de2a6/primes.py#26"
381 <a href="/annotate/853dcd4de2a6/primes.py#26"
382 title="853dcd4de2a6: a">test@0</a>
382 title="853dcd4de2a6: a">test@0</a>
383 </td>
383 </td>
384 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
384 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
385 </tr>
385 </tr>
386 <tr class="parity0">
386 <tr class="parity0">
387 <td class="annotate">
387 <td class="annotate">
388 <a href="/annotate/853dcd4de2a6/primes.py#27"
388 <a href="/annotate/853dcd4de2a6/primes.py#27"
389 title="853dcd4de2a6: a">test@0</a>
389 title="853dcd4de2a6: a">test@0</a>
390 </td>
390 </td>
391 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
391 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
392 </tr>
392 </tr>
393 <tr class="parity1">
393 <tr class="parity1">
394 <td class="annotate">
394 <td class="annotate">
395 <a href="/annotate/853dcd4de2a6/primes.py#28"
395 <a href="/annotate/853dcd4de2a6/primes.py#28"
396 title="853dcd4de2a6: a">test@0</a>
396 title="853dcd4de2a6: a">test@0</a>
397 </td>
397 </td>
398 <td class="source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td>
398 <td class="source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td>
399 </tr>
399 </tr>
400 <tr class="parity0">
400 <tr class="parity0">
401 <td class="annotate">
401 <td class="annotate">
402 <a href="/annotate/853dcd4de2a6/primes.py#29"
402 <a href="/annotate/853dcd4de2a6/primes.py#29"
403 title="853dcd4de2a6: a">test@0</a>
403 title="853dcd4de2a6: a">test@0</a>
404 </td>
404 </td>
405 <td class="source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td>
405 <td class="source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td>
406 </tr>
406 </tr>
407 <tr class="parity1">
407 <tr class="parity1">
408 <td class="annotate">
408 <td class="annotate">
409 <a href="/annotate/853dcd4de2a6/primes.py#30"
409 <a href="/annotate/853dcd4de2a6/primes.py#30"
410 title="853dcd4de2a6: a">test@0</a>
410 title="853dcd4de2a6: a">test@0</a>
411 </td>
411 </td>
412 <td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mf">10</span></td>
412 <td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mf">10</span></td>
413 </tr>
413 </tr>
414 <tr class="parity0">
414 <tr class="parity0">
415 <td class="annotate">
415 <td class="annotate">
416 <a href="/annotate/853dcd4de2a6/primes.py#31"
416 <a href="/annotate/853dcd4de2a6/primes.py#31"
417 title="853dcd4de2a6: a">test@0</a>
417 title="853dcd4de2a6: a">test@0</a>
418 </td>
418 </td>
419 <td class="source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
419 <td class="source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
420 </tr>
420 </tr>
421 <tr class="parity1">
421 <tr class="parity1">
422 <td class="annotate">
422 <td class="annotate">
423 <a href="/annotate/853dcd4de2a6/primes.py#32"
423 <a href="/annotate/853dcd4de2a6/primes.py#32"
424 title="853dcd4de2a6: a">test@0</a>
424 title="853dcd4de2a6: a">test@0</a>
425 </td>
425 </td>
426 <td class="source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></td>
426 <td class="source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></td>
427 </tr>
427 </tr>
428 </table>
428 </table>
429 </div>
429 </div>
430 </div>
430 </div>
431 </div>
431 </div>
432
432
433
433
434
434
435 </body>
435 </body>
436 </html>
436 </html>
437
437
438 % hgweb fileannotate, raw
438 % hgweb fileannotate, raw
439
439
440 % hgweb filerevision, raw
440 % hgweb filerevision, raw
441
441
442 % hgweb highlightcss friendly
442 % hgweb highlightcss friendly
443 200 Script output follows
443 200 Script output follows
444
444
445 /* pygments_style = friendly */
445 /* pygments_style = friendly */
446
446
447 % errors encountered
447 % errors encountered
448 % hg serve again
448 % hg serve again
449 % hgweb highlightcss fruity
449 % hgweb highlightcss fruity
450 200 Script output follows
450 200 Script output follows
451
451
452 /* pygments_style = fruity */
452 /* pygments_style = fruity */
453
453
454 % errors encountered
454 % errors encountered
455 adding eucjp.txt
455 adding eucjp.txt
456 % HGENCODING=euc-jp hg serve
456 % HGENCODING=euc-jp hg serve
457 % hgweb filerevision, html
457 % hgweb filerevision, html
458 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div>
458 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div>
459 % errors encountered
459 % errors encountered
460 % HGENCODING=utf-8 hg serve
460 % HGENCODING=utf-8 hg serve
461 % hgweb filerevision, html
461 % hgweb filerevision, html
462 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div>
462 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div>
463 % errors encountered
463 % errors encountered
464 % HGENCODING=us-ascii hg serve
464 % HGENCODING=us-ascii hg serve
465 % hgweb filerevision, html
465 % hgweb filerevision, html
466 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
466 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
467 % errors encountered
467 % errors encountered
General Comments 0
You need to be logged in to leave comments. Login now