##// END OF EJS Templates
test-serve: make the 'listening at *' lines optional...
Matt Harbison -
r31769:594dd384 default
parent child Browse files
Show More
@@ -1,1729 +1,1729 b''
1 #require serve
1 #require serve
2
2
3 hide outer repo and work in dir without '.hg'
3 hide outer repo and work in dir without '.hg'
4 $ hg init
4 $ hg init
5 $ mkdir dir
5 $ mkdir dir
6 $ cd dir
6 $ cd dir
7
7
8 Tests some basic hgwebdir functionality. Tests setting up paths and
8 Tests some basic hgwebdir functionality. Tests setting up paths and
9 collection, different forms of 404s and the subdirectory support.
9 collection, different forms of 404s and the subdirectory support.
10
10
11 $ mkdir webdir
11 $ mkdir webdir
12 $ cd webdir
12 $ cd webdir
13 $ hg init a
13 $ hg init a
14 $ echo a > a/a
14 $ echo a > a/a
15 $ hg --cwd a ci -Ama -d'1 0'
15 $ hg --cwd a ci -Ama -d'1 0'
16 adding a
16 adding a
17
17
18 create a mercurial queue repository
18 create a mercurial queue repository
19
19
20 $ hg --cwd a qinit --config extensions.hgext.mq= -c
20 $ hg --cwd a qinit --config extensions.hgext.mq= -c
21 $ hg init b
21 $ hg init b
22 $ echo b > b/b
22 $ echo b > b/b
23 $ hg --cwd b ci -Amb -d'2 0'
23 $ hg --cwd b ci -Amb -d'2 0'
24 adding b
24 adding b
25
25
26 create a nested repository
26 create a nested repository
27
27
28 $ cd b
28 $ cd b
29 $ hg init d
29 $ hg init d
30 $ echo d > d/d
30 $ echo d > d/d
31 $ hg --cwd d ci -Amd -d'3 0'
31 $ hg --cwd d ci -Amd -d'3 0'
32 adding d
32 adding d
33 $ cd ..
33 $ cd ..
34 $ hg init c
34 $ hg init c
35 $ echo c > c/c
35 $ echo c > c/c
36 $ hg --cwd c ci -Amc -d'3 0'
36 $ hg --cwd c ci -Amc -d'3 0'
37 adding c
37 adding c
38
38
39 create a subdirectory containing repositories and subrepositories
39 create a subdirectory containing repositories and subrepositories
40
40
41 $ mkdir notrepo
41 $ mkdir notrepo
42 $ cd notrepo
42 $ cd notrepo
43 $ hg init e
43 $ hg init e
44 $ echo e > e/e
44 $ echo e > e/e
45 $ hg --cwd e ci -Ame -d'4 0'
45 $ hg --cwd e ci -Ame -d'4 0'
46 adding e
46 adding e
47 $ hg init e/e2
47 $ hg init e/e2
48 $ echo e2 > e/e2/e2
48 $ echo e2 > e/e2/e2
49 $ hg --cwd e/e2 ci -Ame2 -d '4 0'
49 $ hg --cwd e/e2 ci -Ame2 -d '4 0'
50 adding e2
50 adding e2
51 $ hg init f
51 $ hg init f
52 $ echo f > f/f
52 $ echo f > f/f
53 $ hg --cwd f ci -Amf -d'4 0'
53 $ hg --cwd f ci -Amf -d'4 0'
54 adding f
54 adding f
55 $ hg init f/f2
55 $ hg init f/f2
56 $ echo f2 > f/f2/f2
56 $ echo f2 > f/f2/f2
57 $ hg --cwd f/f2 ci -Amf2 -d '4 0'
57 $ hg --cwd f/f2 ci -Amf2 -d '4 0'
58 adding f2
58 adding f2
59 $ echo 'f2 = f2' > f/.hgsub
59 $ echo 'f2 = f2' > f/.hgsub
60 $ hg -R f ci -Am 'add subrepo' -d'4 0'
60 $ hg -R f ci -Am 'add subrepo' -d'4 0'
61 adding .hgsub
61 adding .hgsub
62 $ cat >> f/.hg/hgrc << EOF
62 $ cat >> f/.hg/hgrc << EOF
63 > [web]
63 > [web]
64 > name = fancy name for repo f
64 > name = fancy name for repo f
65 > labels = foo, bar
65 > labels = foo, bar
66 > EOF
66 > EOF
67 $ cd ..
67 $ cd ..
68
68
69 create repository without .hg/store
69 create repository without .hg/store
70
70
71 $ hg init nostore
71 $ hg init nostore
72 $ rm -R nostore/.hg/store
72 $ rm -R nostore/.hg/store
73 $ root=`pwd`
73 $ root=`pwd`
74 $ cd ..
74 $ cd ..
75
75
76 serve
76 serve
77 $ cat > paths.conf <<EOF
77 $ cat > paths.conf <<EOF
78 > [paths]
78 > [paths]
79 > a=$root/a
79 > a=$root/a
80 > b=$root/b
80 > b=$root/b
81 > EOF
81 > EOF
82 $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf paths.conf \
82 $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf paths.conf \
83 > -A access-paths.log -E error-paths-1.log
83 > -A access-paths.log -E error-paths-1.log
84 $ cat hg.pid >> $DAEMON_PIDS
84 $ cat hg.pid >> $DAEMON_PIDS
85
85
86 should give a 404 - file does not exist
86 should give a 404 - file does not exist
87
87
88 $ get-with-headers.py localhost:$HGPORT 'a/file/tip/bork?style=raw'
88 $ get-with-headers.py localhost:$HGPORT 'a/file/tip/bork?style=raw'
89 404 Not Found
89 404 Not Found
90
90
91
91
92 error: bork@8580ff50825a: not found in manifest
92 error: bork@8580ff50825a: not found in manifest
93 [1]
93 [1]
94
94
95 should succeed
95 should succeed
96
96
97 $ get-with-headers.py localhost:$HGPORT '?style=raw'
97 $ get-with-headers.py localhost:$HGPORT '?style=raw'
98 200 Script output follows
98 200 Script output follows
99
99
100
100
101 /a/
101 /a/
102 /b/
102 /b/
103
103
104 $ get-with-headers.py localhost:$HGPORT '?style=json'
104 $ get-with-headers.py localhost:$HGPORT '?style=json'
105 200 Script output follows
105 200 Script output follows
106
106
107 {
107 {
108 "entries": [{
108 "entries": [{
109 "name": "a",
109 "name": "a",
110 "description": "unknown",
110 "description": "unknown",
111 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
111 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
112 "lastchange": [*, *], (glob)
112 "lastchange": [*, *], (glob)
113 "labels": []
113 "labels": []
114 }, {
114 }, {
115 "name": "b",
115 "name": "b",
116 "description": "unknown",
116 "description": "unknown",
117 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
117 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
118 "lastchange": [*, *], (glob)
118 "lastchange": [*, *], (glob)
119 "labels": []
119 "labels": []
120 }]
120 }]
121 } (no-eol)
121 } (no-eol)
122
122
123 $ get-with-headers.py localhost:$HGPORT 'a/file/tip/a?style=raw'
123 $ get-with-headers.py localhost:$HGPORT 'a/file/tip/a?style=raw'
124 200 Script output follows
124 200 Script output follows
125
125
126 a
126 a
127 $ get-with-headers.py localhost:$HGPORT 'b/file/tip/b?style=raw'
127 $ get-with-headers.py localhost:$HGPORT 'b/file/tip/b?style=raw'
128 200 Script output follows
128 200 Script output follows
129
129
130 b
130 b
131
131
132 should give a 404 - repo is not published
132 should give a 404 - repo is not published
133
133
134 $ get-with-headers.py localhost:$HGPORT 'c/file/tip/c?style=raw'
134 $ get-with-headers.py localhost:$HGPORT 'c/file/tip/c?style=raw'
135 404 Not Found
135 404 Not Found
136
136
137
137
138 error: repository c/file/tip/c not found
138 error: repository c/file/tip/c not found
139 [1]
139 [1]
140
140
141 atom-log without basedir
141 atom-log without basedir
142
142
143 $ get-with-headers.py localhost:$HGPORT 'a/atom-log' | grep '<link'
143 $ get-with-headers.py localhost:$HGPORT 'a/atom-log' | grep '<link'
144 <link rel="self" href="http://*:$HGPORT/a/atom-log"/> (glob)
144 <link rel="self" href="http://*:$HGPORT/a/atom-log"/> (glob)
145 <link rel="alternate" href="http://*:$HGPORT/a/"/> (glob)
145 <link rel="alternate" href="http://*:$HGPORT/a/"/> (glob)
146 <link href="http://*:$HGPORT/a/rev/8580ff50825a"/> (glob)
146 <link href="http://*:$HGPORT/a/rev/8580ff50825a"/> (glob)
147
147
148 rss-log without basedir
148 rss-log without basedir
149
149
150 $ get-with-headers.py localhost:$HGPORT 'a/rss-log' | grep '<guid'
150 $ get-with-headers.py localhost:$HGPORT 'a/rss-log' | grep '<guid'
151 <guid isPermaLink="true">http://*:$HGPORT/a/rev/8580ff50825a</guid> (glob)
151 <guid isPermaLink="true">http://*:$HGPORT/a/rev/8580ff50825a</guid> (glob)
152 $ cat > paths.conf <<EOF
152 $ cat > paths.conf <<EOF
153 > [paths]
153 > [paths]
154 > t/a/=$root/a
154 > t/a/=$root/a
155 > b=$root/b
155 > b=$root/b
156 > coll=$root/*
156 > coll=$root/*
157 > rcoll=$root/**
157 > rcoll=$root/**
158 > star=*
158 > star=*
159 > starstar=**
159 > starstar=**
160 > astar=webdir/a/*
160 > astar=webdir/a/*
161 > EOF
161 > EOF
162 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
162 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
163 > -A access-paths.log -E error-paths-2.log
163 > -A access-paths.log -E error-paths-2.log
164 $ cat hg.pid >> $DAEMON_PIDS
164 $ cat hg.pid >> $DAEMON_PIDS
165
165
166 should succeed, slashy names
166 should succeed, slashy names
167
167
168 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
168 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
169 200 Script output follows
169 200 Script output follows
170
170
171
171
172 /t/a/
172 /t/a/
173 /b/
173 /b/
174 /coll/a/
174 /coll/a/
175 /coll/a/.hg/patches/
175 /coll/a/.hg/patches/
176 /coll/b/
176 /coll/b/
177 /coll/c/
177 /coll/c/
178 /coll/notrepo/e/
178 /coll/notrepo/e/
179 /coll/notrepo/f/
179 /coll/notrepo/f/
180 /rcoll/a/
180 /rcoll/a/
181 /rcoll/a/.hg/patches/
181 /rcoll/a/.hg/patches/
182 /rcoll/b/
182 /rcoll/b/
183 /rcoll/b/d/
183 /rcoll/b/d/
184 /rcoll/c/
184 /rcoll/c/
185 /rcoll/notrepo/e/
185 /rcoll/notrepo/e/
186 /rcoll/notrepo/e/e2/
186 /rcoll/notrepo/e/e2/
187 /rcoll/notrepo/f/
187 /rcoll/notrepo/f/
188 /rcoll/notrepo/f/f2/
188 /rcoll/notrepo/f/f2/
189 /star/webdir/a/
189 /star/webdir/a/
190 /star/webdir/a/.hg/patches/
190 /star/webdir/a/.hg/patches/
191 /star/webdir/b/
191 /star/webdir/b/
192 /star/webdir/c/
192 /star/webdir/c/
193 /star/webdir/notrepo/e/
193 /star/webdir/notrepo/e/
194 /star/webdir/notrepo/f/
194 /star/webdir/notrepo/f/
195 /starstar/webdir/a/
195 /starstar/webdir/a/
196 /starstar/webdir/a/.hg/patches/
196 /starstar/webdir/a/.hg/patches/
197 /starstar/webdir/b/
197 /starstar/webdir/b/
198 /starstar/webdir/b/d/
198 /starstar/webdir/b/d/
199 /starstar/webdir/c/
199 /starstar/webdir/c/
200 /starstar/webdir/notrepo/e/
200 /starstar/webdir/notrepo/e/
201 /starstar/webdir/notrepo/e/e2/
201 /starstar/webdir/notrepo/e/e2/
202 /starstar/webdir/notrepo/f/
202 /starstar/webdir/notrepo/f/
203 /starstar/webdir/notrepo/f/f2/
203 /starstar/webdir/notrepo/f/f2/
204 /astar/
204 /astar/
205 /astar/.hg/patches/
205 /astar/.hg/patches/
206
206
207
207
208 $ get-with-headers.py localhost:$HGPORT1 '?style=json'
208 $ get-with-headers.py localhost:$HGPORT1 '?style=json'
209 200 Script output follows
209 200 Script output follows
210
210
211 {
211 {
212 "entries": [{
212 "entries": [{
213 "name": "t/a",
213 "name": "t/a",
214 "description": "unknown",
214 "description": "unknown",
215 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
215 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
216 "lastchange": [*, *], (glob)
216 "lastchange": [*, *], (glob)
217 "labels": []
217 "labels": []
218 }, {
218 }, {
219 "name": "b",
219 "name": "b",
220 "description": "unknown",
220 "description": "unknown",
221 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
221 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
222 "lastchange": [*, *], (glob)
222 "lastchange": [*, *], (glob)
223 "labels": []
223 "labels": []
224 }, {
224 }, {
225 "name": "coll/a",
225 "name": "coll/a",
226 "description": "unknown",
226 "description": "unknown",
227 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
227 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
228 "lastchange": [*, *], (glob)
228 "lastchange": [*, *], (glob)
229 "labels": []
229 "labels": []
230 }, {
230 }, {
231 "name": "coll/a/.hg/patches",
231 "name": "coll/a/.hg/patches",
232 "description": "unknown",
232 "description": "unknown",
233 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
233 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
234 "lastchange": [*, *], (glob)
234 "lastchange": [*, *], (glob)
235 "labels": []
235 "labels": []
236 }, {
236 }, {
237 "name": "coll/b",
237 "name": "coll/b",
238 "description": "unknown",
238 "description": "unknown",
239 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
239 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
240 "lastchange": [*, *], (glob)
240 "lastchange": [*, *], (glob)
241 "labels": []
241 "labels": []
242 }, {
242 }, {
243 "name": "coll/c",
243 "name": "coll/c",
244 "description": "unknown",
244 "description": "unknown",
245 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
245 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
246 "lastchange": [*, *], (glob)
246 "lastchange": [*, *], (glob)
247 "labels": []
247 "labels": []
248 }, {
248 }, {
249 "name": "coll/notrepo/e",
249 "name": "coll/notrepo/e",
250 "description": "unknown",
250 "description": "unknown",
251 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
251 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
252 "lastchange": [*, *], (glob)
252 "lastchange": [*, *], (glob)
253 "labels": []
253 "labels": []
254 }, {
254 }, {
255 "name": "fancy name for repo f",
255 "name": "fancy name for repo f",
256 "description": "unknown",
256 "description": "unknown",
257 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
257 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
258 "lastchange": [*, *], (glob)
258 "lastchange": [*, *], (glob)
259 "labels": ["foo", "bar"]
259 "labels": ["foo", "bar"]
260 }, {
260 }, {
261 "name": "rcoll/a",
261 "name": "rcoll/a",
262 "description": "unknown",
262 "description": "unknown",
263 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
263 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
264 "lastchange": [*, *], (glob)
264 "lastchange": [*, *], (glob)
265 "labels": []
265 "labels": []
266 }, {
266 }, {
267 "name": "rcoll/a/.hg/patches",
267 "name": "rcoll/a/.hg/patches",
268 "description": "unknown",
268 "description": "unknown",
269 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
269 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
270 "lastchange": [*, *], (glob)
270 "lastchange": [*, *], (glob)
271 "labels": []
271 "labels": []
272 }, {
272 }, {
273 "name": "rcoll/b",
273 "name": "rcoll/b",
274 "description": "unknown",
274 "description": "unknown",
275 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
275 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
276 "lastchange": [*, *], (glob)
276 "lastchange": [*, *], (glob)
277 "labels": []
277 "labels": []
278 }, {
278 }, {
279 "name": "rcoll/b/d",
279 "name": "rcoll/b/d",
280 "description": "unknown",
280 "description": "unknown",
281 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
281 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
282 "lastchange": [*, *], (glob)
282 "lastchange": [*, *], (glob)
283 "labels": []
283 "labels": []
284 }, {
284 }, {
285 "name": "rcoll/c",
285 "name": "rcoll/c",
286 "description": "unknown",
286 "description": "unknown",
287 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
287 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
288 "lastchange": [*, *], (glob)
288 "lastchange": [*, *], (glob)
289 "labels": []
289 "labels": []
290 }, {
290 }, {
291 "name": "rcoll/notrepo/e",
291 "name": "rcoll/notrepo/e",
292 "description": "unknown",
292 "description": "unknown",
293 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
293 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
294 "lastchange": [*, *], (glob)
294 "lastchange": [*, *], (glob)
295 "labels": []
295 "labels": []
296 }, {
296 }, {
297 "name": "rcoll/notrepo/e/e2",
297 "name": "rcoll/notrepo/e/e2",
298 "description": "unknown",
298 "description": "unknown",
299 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
299 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
300 "lastchange": [*, *], (glob)
300 "lastchange": [*, *], (glob)
301 "labels": []
301 "labels": []
302 }, {
302 }, {
303 "name": "fancy name for repo f",
303 "name": "fancy name for repo f",
304 "description": "unknown",
304 "description": "unknown",
305 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
305 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
306 "lastchange": [*, *], (glob)
306 "lastchange": [*, *], (glob)
307 "labels": ["foo", "bar"]
307 "labels": ["foo", "bar"]
308 }, {
308 }, {
309 "name": "rcoll/notrepo/f/f2",
309 "name": "rcoll/notrepo/f/f2",
310 "description": "unknown",
310 "description": "unknown",
311 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
311 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
312 "lastchange": [*, *], (glob)
312 "lastchange": [*, *], (glob)
313 "labels": []
313 "labels": []
314 }, {
314 }, {
315 "name": "star/webdir/a",
315 "name": "star/webdir/a",
316 "description": "unknown",
316 "description": "unknown",
317 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
317 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
318 "lastchange": [*, *], (glob)
318 "lastchange": [*, *], (glob)
319 "labels": []
319 "labels": []
320 }, {
320 }, {
321 "name": "star/webdir/a/.hg/patches",
321 "name": "star/webdir/a/.hg/patches",
322 "description": "unknown",
322 "description": "unknown",
323 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
323 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
324 "lastchange": [*, *], (glob)
324 "lastchange": [*, *], (glob)
325 "labels": []
325 "labels": []
326 }, {
326 }, {
327 "name": "star/webdir/b",
327 "name": "star/webdir/b",
328 "description": "unknown",
328 "description": "unknown",
329 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
329 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
330 "lastchange": [*, *], (glob)
330 "lastchange": [*, *], (glob)
331 "labels": []
331 "labels": []
332 }, {
332 }, {
333 "name": "star/webdir/c",
333 "name": "star/webdir/c",
334 "description": "unknown",
334 "description": "unknown",
335 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
335 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
336 "lastchange": [*, *], (glob)
336 "lastchange": [*, *], (glob)
337 "labels": []
337 "labels": []
338 }, {
338 }, {
339 "name": "star/webdir/notrepo/e",
339 "name": "star/webdir/notrepo/e",
340 "description": "unknown",
340 "description": "unknown",
341 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
341 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
342 "lastchange": [*, *], (glob)
342 "lastchange": [*, *], (glob)
343 "labels": []
343 "labels": []
344 }, {
344 }, {
345 "name": "fancy name for repo f",
345 "name": "fancy name for repo f",
346 "description": "unknown",
346 "description": "unknown",
347 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
347 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
348 "lastchange": [*, *], (glob)
348 "lastchange": [*, *], (glob)
349 "labels": ["foo", "bar"]
349 "labels": ["foo", "bar"]
350 }, {
350 }, {
351 "name": "starstar/webdir/a",
351 "name": "starstar/webdir/a",
352 "description": "unknown",
352 "description": "unknown",
353 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
353 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
354 "lastchange": [*, *], (glob)
354 "lastchange": [*, *], (glob)
355 "labels": []
355 "labels": []
356 }, {
356 }, {
357 "name": "starstar/webdir/a/.hg/patches",
357 "name": "starstar/webdir/a/.hg/patches",
358 "description": "unknown",
358 "description": "unknown",
359 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
359 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
360 "lastchange": [*, *], (glob)
360 "lastchange": [*, *], (glob)
361 "labels": []
361 "labels": []
362 }, {
362 }, {
363 "name": "starstar/webdir/b",
363 "name": "starstar/webdir/b",
364 "description": "unknown",
364 "description": "unknown",
365 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
365 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
366 "lastchange": [*, *], (glob)
366 "lastchange": [*, *], (glob)
367 "labels": []
367 "labels": []
368 }, {
368 }, {
369 "name": "starstar/webdir/b/d",
369 "name": "starstar/webdir/b/d",
370 "description": "unknown",
370 "description": "unknown",
371 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
371 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
372 "lastchange": [*, *], (glob)
372 "lastchange": [*, *], (glob)
373 "labels": []
373 "labels": []
374 }, {
374 }, {
375 "name": "starstar/webdir/c",
375 "name": "starstar/webdir/c",
376 "description": "unknown",
376 "description": "unknown",
377 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
377 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
378 "lastchange": [*, *], (glob)
378 "lastchange": [*, *], (glob)
379 "labels": []
379 "labels": []
380 }, {
380 }, {
381 "name": "starstar/webdir/notrepo/e",
381 "name": "starstar/webdir/notrepo/e",
382 "description": "unknown",
382 "description": "unknown",
383 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
383 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
384 "lastchange": [*, *], (glob)
384 "lastchange": [*, *], (glob)
385 "labels": []
385 "labels": []
386 }, {
386 }, {
387 "name": "starstar/webdir/notrepo/e/e2",
387 "name": "starstar/webdir/notrepo/e/e2",
388 "description": "unknown",
388 "description": "unknown",
389 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
389 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
390 "lastchange": [*, *], (glob)
390 "lastchange": [*, *], (glob)
391 "labels": []
391 "labels": []
392 }, {
392 }, {
393 "name": "fancy name for repo f",
393 "name": "fancy name for repo f",
394 "description": "unknown",
394 "description": "unknown",
395 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
395 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
396 "lastchange": [*, *], (glob)
396 "lastchange": [*, *], (glob)
397 "labels": ["foo", "bar"]
397 "labels": ["foo", "bar"]
398 }, {
398 }, {
399 "name": "starstar/webdir/notrepo/f/f2",
399 "name": "starstar/webdir/notrepo/f/f2",
400 "description": "unknown",
400 "description": "unknown",
401 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
401 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
402 "lastchange": [*, *], (glob)
402 "lastchange": [*, *], (glob)
403 "labels": []
403 "labels": []
404 }, {
404 }, {
405 "name": "astar",
405 "name": "astar",
406 "description": "unknown",
406 "description": "unknown",
407 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
407 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
408 "lastchange": [*, *], (glob)
408 "lastchange": [*, *], (glob)
409 "labels": []
409 "labels": []
410 }, {
410 }, {
411 "name": "astar/.hg/patches",
411 "name": "astar/.hg/patches",
412 "description": "unknown",
412 "description": "unknown",
413 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
413 "contact": "Foo Bar \u003cfoo.bar@example.com\u003e",
414 "lastchange": [*, *], (glob)
414 "lastchange": [*, *], (glob)
415 "labels": []
415 "labels": []
416 }]
416 }]
417 } (no-eol)
417 } (no-eol)
418
418
419 $ get-with-headers.py localhost:$HGPORT1 '?style=paper'
419 $ get-with-headers.py localhost:$HGPORT1 '?style=paper'
420 200 Script output follows
420 200 Script output follows
421
421
422 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
422 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
423 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
423 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
424 <head>
424 <head>
425 <link rel="icon" href="/static/hgicon.png" type="image/png" />
425 <link rel="icon" href="/static/hgicon.png" type="image/png" />
426 <meta name="robots" content="index, nofollow" />
426 <meta name="robots" content="index, nofollow" />
427 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
427 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
428 <script type="text/javascript" src="/static/mercurial.js"></script>
428 <script type="text/javascript" src="/static/mercurial.js"></script>
429
429
430 <title>Mercurial repositories index</title>
430 <title>Mercurial repositories index</title>
431 </head>
431 </head>
432 <body>
432 <body>
433
433
434 <div class="container">
434 <div class="container">
435 <div class="menu">
435 <div class="menu">
436 <a href="https://mercurial-scm.org/">
436 <a href="https://mercurial-scm.org/">
437 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
437 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
438 </div>
438 </div>
439 <div class="main">
439 <div class="main">
440 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
440 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
441
441
442 <table class="bigtable">
442 <table class="bigtable">
443 <thead>
443 <thead>
444 <tr>
444 <tr>
445 <th><a href="?sort=name">Name</a></th>
445 <th><a href="?sort=name">Name</a></th>
446 <th><a href="?sort=description">Description</a></th>
446 <th><a href="?sort=description">Description</a></th>
447 <th><a href="?sort=contact">Contact</a></th>
447 <th><a href="?sort=contact">Contact</a></th>
448 <th><a href="?sort=lastchange">Last modified</a></th>
448 <th><a href="?sort=lastchange">Last modified</a></th>
449 <th>&nbsp;</th>
449 <th>&nbsp;</th>
450 <th>&nbsp;</th>
450 <th>&nbsp;</th>
451 </tr>
451 </tr>
452 </thead>
452 </thead>
453 <tbody class="stripes2">
453 <tbody class="stripes2">
454
454
455 <tr>
455 <tr>
456 <td><a href="/t/a/?style=paper">t/a</a></td>
456 <td><a href="/t/a/?style=paper">t/a</a></td>
457 <td>unknown</td>
457 <td>unknown</td>
458 <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>
458 <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>
459 <td class="age">*</td> (glob)
459 <td class="age">*</td> (glob)
460 <td class="indexlinks"></td>
460 <td class="indexlinks"></td>
461 <td>
461 <td>
462 <a href="/t/a/atom-log" title="subscribe to repository atom feed">
462 <a href="/t/a/atom-log" title="subscribe to repository atom feed">
463 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
463 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
464 </a>
464 </a>
465 </td>
465 </td>
466 </tr>
466 </tr>
467
467
468 <tr>
468 <tr>
469 <td><a href="/b/?style=paper">b</a></td>
469 <td><a href="/b/?style=paper">b</a></td>
470 <td>unknown</td>
470 <td>unknown</td>
471 <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>
471 <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>
472 <td class="age">*</td> (glob)
472 <td class="age">*</td> (glob)
473 <td class="indexlinks"></td>
473 <td class="indexlinks"></td>
474 <td>
474 <td>
475 <a href="/b/atom-log" title="subscribe to repository atom feed">
475 <a href="/b/atom-log" title="subscribe to repository atom feed">
476 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
476 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
477 </a>
477 </a>
478 </td>
478 </td>
479 </tr>
479 </tr>
480
480
481 <tr>
481 <tr>
482 <td><a href="/coll/a/?style=paper">coll/a</a></td>
482 <td><a href="/coll/a/?style=paper">coll/a</a></td>
483 <td>unknown</td>
483 <td>unknown</td>
484 <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>
484 <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>
485 <td class="age">*</td> (glob)
485 <td class="age">*</td> (glob)
486 <td class="indexlinks"></td>
486 <td class="indexlinks"></td>
487 <td>
487 <td>
488 <a href="/coll/a/atom-log" title="subscribe to repository atom feed">
488 <a href="/coll/a/atom-log" title="subscribe to repository atom feed">
489 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
489 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
490 </a>
490 </a>
491 </td>
491 </td>
492 </tr>
492 </tr>
493
493
494 <tr>
494 <tr>
495 <td><a href="/coll/a/.hg/patches/?style=paper">coll/a/.hg/patches</a></td>
495 <td><a href="/coll/a/.hg/patches/?style=paper">coll/a/.hg/patches</a></td>
496 <td>unknown</td>
496 <td>unknown</td>
497 <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>
497 <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>
498 <td class="age">*</td> (glob)
498 <td class="age">*</td> (glob)
499 <td class="indexlinks"></td>
499 <td class="indexlinks"></td>
500 <td>
500 <td>
501 <a href="/coll/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
501 <a href="/coll/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
502 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
502 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
503 </a>
503 </a>
504 </td>
504 </td>
505 </tr>
505 </tr>
506
506
507 <tr>
507 <tr>
508 <td><a href="/coll/b/?style=paper">coll/b</a></td>
508 <td><a href="/coll/b/?style=paper">coll/b</a></td>
509 <td>unknown</td>
509 <td>unknown</td>
510 <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>
510 <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>
511 <td class="age">*</td> (glob)
511 <td class="age">*</td> (glob)
512 <td class="indexlinks"></td>
512 <td class="indexlinks"></td>
513 <td>
513 <td>
514 <a href="/coll/b/atom-log" title="subscribe to repository atom feed">
514 <a href="/coll/b/atom-log" title="subscribe to repository atom feed">
515 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
515 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
516 </a>
516 </a>
517 </td>
517 </td>
518 </tr>
518 </tr>
519
519
520 <tr>
520 <tr>
521 <td><a href="/coll/c/?style=paper">coll/c</a></td>
521 <td><a href="/coll/c/?style=paper">coll/c</a></td>
522 <td>unknown</td>
522 <td>unknown</td>
523 <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>
523 <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>
524 <td class="age">*</td> (glob)
524 <td class="age">*</td> (glob)
525 <td class="indexlinks"></td>
525 <td class="indexlinks"></td>
526 <td>
526 <td>
527 <a href="/coll/c/atom-log" title="subscribe to repository atom feed">
527 <a href="/coll/c/atom-log" title="subscribe to repository atom feed">
528 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
528 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
529 </a>
529 </a>
530 </td>
530 </td>
531 </tr>
531 </tr>
532
532
533 <tr>
533 <tr>
534 <td><a href="/coll/notrepo/e/?style=paper">coll/notrepo/e</a></td>
534 <td><a href="/coll/notrepo/e/?style=paper">coll/notrepo/e</a></td>
535 <td>unknown</td>
535 <td>unknown</td>
536 <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>
536 <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>
537 <td class="age">*</td> (glob)
537 <td class="age">*</td> (glob)
538 <td class="indexlinks"></td>
538 <td class="indexlinks"></td>
539 <td>
539 <td>
540 <a href="/coll/notrepo/e/atom-log" title="subscribe to repository atom feed">
540 <a href="/coll/notrepo/e/atom-log" title="subscribe to repository atom feed">
541 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
541 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
542 </a>
542 </a>
543 </td>
543 </td>
544 </tr>
544 </tr>
545
545
546 <tr>
546 <tr>
547 <td><a href="/coll/notrepo/f/?style=paper">fancy name for repo f</a></td>
547 <td><a href="/coll/notrepo/f/?style=paper">fancy name for repo f</a></td>
548 <td>unknown</td>
548 <td>unknown</td>
549 <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>
549 <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>
550 <td class="age">*</td> (glob)
550 <td class="age">*</td> (glob)
551 <td class="indexlinks"></td>
551 <td class="indexlinks"></td>
552 <td>
552 <td>
553 <a href="/coll/notrepo/f/atom-log" title="subscribe to repository atom feed">
553 <a href="/coll/notrepo/f/atom-log" title="subscribe to repository atom feed">
554 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
554 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
555 </a>
555 </a>
556 </td>
556 </td>
557 </tr>
557 </tr>
558
558
559 <tr>
559 <tr>
560 <td><a href="/rcoll/a/?style=paper">rcoll/a</a></td>
560 <td><a href="/rcoll/a/?style=paper">rcoll/a</a></td>
561 <td>unknown</td>
561 <td>unknown</td>
562 <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>
562 <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>
563 <td class="age">*</td> (glob)
563 <td class="age">*</td> (glob)
564 <td class="indexlinks"></td>
564 <td class="indexlinks"></td>
565 <td>
565 <td>
566 <a href="/rcoll/a/atom-log" title="subscribe to repository atom feed">
566 <a href="/rcoll/a/atom-log" title="subscribe to repository atom feed">
567 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
567 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
568 </a>
568 </a>
569 </td>
569 </td>
570 </tr>
570 </tr>
571
571
572 <tr>
572 <tr>
573 <td><a href="/rcoll/a/.hg/patches/?style=paper">rcoll/a/.hg/patches</a></td>
573 <td><a href="/rcoll/a/.hg/patches/?style=paper">rcoll/a/.hg/patches</a></td>
574 <td>unknown</td>
574 <td>unknown</td>
575 <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>
575 <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>
576 <td class="age">*</td> (glob)
576 <td class="age">*</td> (glob)
577 <td class="indexlinks"></td>
577 <td class="indexlinks"></td>
578 <td>
578 <td>
579 <a href="/rcoll/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
579 <a href="/rcoll/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
580 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
580 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
581 </a>
581 </a>
582 </td>
582 </td>
583 </tr>
583 </tr>
584
584
585 <tr>
585 <tr>
586 <td><a href="/rcoll/b/?style=paper">rcoll/b</a></td>
586 <td><a href="/rcoll/b/?style=paper">rcoll/b</a></td>
587 <td>unknown</td>
587 <td>unknown</td>
588 <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>
588 <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>
589 <td class="age">*</td> (glob)
589 <td class="age">*</td> (glob)
590 <td class="indexlinks"></td>
590 <td class="indexlinks"></td>
591 <td>
591 <td>
592 <a href="/rcoll/b/atom-log" title="subscribe to repository atom feed">
592 <a href="/rcoll/b/atom-log" title="subscribe to repository atom feed">
593 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
593 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
594 </a>
594 </a>
595 </td>
595 </td>
596 </tr>
596 </tr>
597
597
598 <tr>
598 <tr>
599 <td><a href="/rcoll/b/d/?style=paper">rcoll/b/d</a></td>
599 <td><a href="/rcoll/b/d/?style=paper">rcoll/b/d</a></td>
600 <td>unknown</td>
600 <td>unknown</td>
601 <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>
601 <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>
602 <td class="age">*</td> (glob)
602 <td class="age">*</td> (glob)
603 <td class="indexlinks"></td>
603 <td class="indexlinks"></td>
604 <td>
604 <td>
605 <a href="/rcoll/b/d/atom-log" title="subscribe to repository atom feed">
605 <a href="/rcoll/b/d/atom-log" title="subscribe to repository atom feed">
606 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
606 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
607 </a>
607 </a>
608 </td>
608 </td>
609 </tr>
609 </tr>
610
610
611 <tr>
611 <tr>
612 <td><a href="/rcoll/c/?style=paper">rcoll/c</a></td>
612 <td><a href="/rcoll/c/?style=paper">rcoll/c</a></td>
613 <td>unknown</td>
613 <td>unknown</td>
614 <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>
614 <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>
615 <td class="age">*</td> (glob)
615 <td class="age">*</td> (glob)
616 <td class="indexlinks"></td>
616 <td class="indexlinks"></td>
617 <td>
617 <td>
618 <a href="/rcoll/c/atom-log" title="subscribe to repository atom feed">
618 <a href="/rcoll/c/atom-log" title="subscribe to repository atom feed">
619 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
619 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
620 </a>
620 </a>
621 </td>
621 </td>
622 </tr>
622 </tr>
623
623
624 <tr>
624 <tr>
625 <td><a href="/rcoll/notrepo/e/?style=paper">rcoll/notrepo/e</a></td>
625 <td><a href="/rcoll/notrepo/e/?style=paper">rcoll/notrepo/e</a></td>
626 <td>unknown</td>
626 <td>unknown</td>
627 <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>
627 <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>
628 <td class="age">*</td> (glob)
628 <td class="age">*</td> (glob)
629 <td class="indexlinks"></td>
629 <td class="indexlinks"></td>
630 <td>
630 <td>
631 <a href="/rcoll/notrepo/e/atom-log" title="subscribe to repository atom feed">
631 <a href="/rcoll/notrepo/e/atom-log" title="subscribe to repository atom feed">
632 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
632 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
633 </a>
633 </a>
634 </td>
634 </td>
635 </tr>
635 </tr>
636
636
637 <tr>
637 <tr>
638 <td><a href="/rcoll/notrepo/e/e2/?style=paper">rcoll/notrepo/e/e2</a></td>
638 <td><a href="/rcoll/notrepo/e/e2/?style=paper">rcoll/notrepo/e/e2</a></td>
639 <td>unknown</td>
639 <td>unknown</td>
640 <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>
640 <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>
641 <td class="age">*</td> (glob)
641 <td class="age">*</td> (glob)
642 <td class="indexlinks"></td>
642 <td class="indexlinks"></td>
643 <td>
643 <td>
644 <a href="/rcoll/notrepo/e/e2/atom-log" title="subscribe to repository atom feed">
644 <a href="/rcoll/notrepo/e/e2/atom-log" title="subscribe to repository atom feed">
645 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
645 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
646 </a>
646 </a>
647 </td>
647 </td>
648 </tr>
648 </tr>
649
649
650 <tr>
650 <tr>
651 <td><a href="/rcoll/notrepo/f/?style=paper">fancy name for repo f</a></td>
651 <td><a href="/rcoll/notrepo/f/?style=paper">fancy name for repo f</a></td>
652 <td>unknown</td>
652 <td>unknown</td>
653 <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>
653 <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>
654 <td class="age">*</td> (glob)
654 <td class="age">*</td> (glob)
655 <td class="indexlinks"></td>
655 <td class="indexlinks"></td>
656 <td>
656 <td>
657 <a href="/rcoll/notrepo/f/atom-log" title="subscribe to repository atom feed">
657 <a href="/rcoll/notrepo/f/atom-log" title="subscribe to repository atom feed">
658 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
658 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
659 </a>
659 </a>
660 </td>
660 </td>
661 </tr>
661 </tr>
662
662
663 <tr>
663 <tr>
664 <td><a href="/rcoll/notrepo/f/f2/?style=paper">rcoll/notrepo/f/f2</a></td>
664 <td><a href="/rcoll/notrepo/f/f2/?style=paper">rcoll/notrepo/f/f2</a></td>
665 <td>unknown</td>
665 <td>unknown</td>
666 <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>
666 <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>
667 <td class="age">*</td> (glob)
667 <td class="age">*</td> (glob)
668 <td class="indexlinks"></td>
668 <td class="indexlinks"></td>
669 <td>
669 <td>
670 <a href="/rcoll/notrepo/f/f2/atom-log" title="subscribe to repository atom feed">
670 <a href="/rcoll/notrepo/f/f2/atom-log" title="subscribe to repository atom feed">
671 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
671 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
672 </a>
672 </a>
673 </td>
673 </td>
674 </tr>
674 </tr>
675
675
676 <tr>
676 <tr>
677 <td><a href="/star/webdir/a/?style=paper">star/webdir/a</a></td>
677 <td><a href="/star/webdir/a/?style=paper">star/webdir/a</a></td>
678 <td>unknown</td>
678 <td>unknown</td>
679 <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>
679 <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>
680 <td class="age">*</td> (glob)
680 <td class="age">*</td> (glob)
681 <td class="indexlinks"></td>
681 <td class="indexlinks"></td>
682 <td>
682 <td>
683 <a href="/star/webdir/a/atom-log" title="subscribe to repository atom feed">
683 <a href="/star/webdir/a/atom-log" title="subscribe to repository atom feed">
684 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
684 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
685 </a>
685 </a>
686 </td>
686 </td>
687 </tr>
687 </tr>
688
688
689 <tr>
689 <tr>
690 <td><a href="/star/webdir/a/.hg/patches/?style=paper">star/webdir/a/.hg/patches</a></td>
690 <td><a href="/star/webdir/a/.hg/patches/?style=paper">star/webdir/a/.hg/patches</a></td>
691 <td>unknown</td>
691 <td>unknown</td>
692 <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>
692 <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>
693 <td class="age">*</td> (glob)
693 <td class="age">*</td> (glob)
694 <td class="indexlinks"></td>
694 <td class="indexlinks"></td>
695 <td>
695 <td>
696 <a href="/star/webdir/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
696 <a href="/star/webdir/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
697 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
697 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
698 </a>
698 </a>
699 </td>
699 </td>
700 </tr>
700 </tr>
701
701
702 <tr>
702 <tr>
703 <td><a href="/star/webdir/b/?style=paper">star/webdir/b</a></td>
703 <td><a href="/star/webdir/b/?style=paper">star/webdir/b</a></td>
704 <td>unknown</td>
704 <td>unknown</td>
705 <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>
705 <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>
706 <td class="age">*</td> (glob)
706 <td class="age">*</td> (glob)
707 <td class="indexlinks"></td>
707 <td class="indexlinks"></td>
708 <td>
708 <td>
709 <a href="/star/webdir/b/atom-log" title="subscribe to repository atom feed">
709 <a href="/star/webdir/b/atom-log" title="subscribe to repository atom feed">
710 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
710 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
711 </a>
711 </a>
712 </td>
712 </td>
713 </tr>
713 </tr>
714
714
715 <tr>
715 <tr>
716 <td><a href="/star/webdir/c/?style=paper">star/webdir/c</a></td>
716 <td><a href="/star/webdir/c/?style=paper">star/webdir/c</a></td>
717 <td>unknown</td>
717 <td>unknown</td>
718 <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>
718 <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>
719 <td class="age">*</td> (glob)
719 <td class="age">*</td> (glob)
720 <td class="indexlinks"></td>
720 <td class="indexlinks"></td>
721 <td>
721 <td>
722 <a href="/star/webdir/c/atom-log" title="subscribe to repository atom feed">
722 <a href="/star/webdir/c/atom-log" title="subscribe to repository atom feed">
723 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
723 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
724 </a>
724 </a>
725 </td>
725 </td>
726 </tr>
726 </tr>
727
727
728 <tr>
728 <tr>
729 <td><a href="/star/webdir/notrepo/e/?style=paper">star/webdir/notrepo/e</a></td>
729 <td><a href="/star/webdir/notrepo/e/?style=paper">star/webdir/notrepo/e</a></td>
730 <td>unknown</td>
730 <td>unknown</td>
731 <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>
731 <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>
732 <td class="age">*</td> (glob)
732 <td class="age">*</td> (glob)
733 <td class="indexlinks"></td>
733 <td class="indexlinks"></td>
734 <td>
734 <td>
735 <a href="/star/webdir/notrepo/e/atom-log" title="subscribe to repository atom feed">
735 <a href="/star/webdir/notrepo/e/atom-log" title="subscribe to repository atom feed">
736 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
736 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
737 </a>
737 </a>
738 </td>
738 </td>
739 </tr>
739 </tr>
740
740
741 <tr>
741 <tr>
742 <td><a href="/star/webdir/notrepo/f/?style=paper">fancy name for repo f</a></td>
742 <td><a href="/star/webdir/notrepo/f/?style=paper">fancy name for repo f</a></td>
743 <td>unknown</td>
743 <td>unknown</td>
744 <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>
744 <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>
745 <td class="age">*</td> (glob)
745 <td class="age">*</td> (glob)
746 <td class="indexlinks"></td>
746 <td class="indexlinks"></td>
747 <td>
747 <td>
748 <a href="/star/webdir/notrepo/f/atom-log" title="subscribe to repository atom feed">
748 <a href="/star/webdir/notrepo/f/atom-log" title="subscribe to repository atom feed">
749 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
749 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
750 </a>
750 </a>
751 </td>
751 </td>
752 </tr>
752 </tr>
753
753
754 <tr>
754 <tr>
755 <td><a href="/starstar/webdir/a/?style=paper">starstar/webdir/a</a></td>
755 <td><a href="/starstar/webdir/a/?style=paper">starstar/webdir/a</a></td>
756 <td>unknown</td>
756 <td>unknown</td>
757 <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>
757 <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>
758 <td class="age">*</td> (glob)
758 <td class="age">*</td> (glob)
759 <td class="indexlinks"></td>
759 <td class="indexlinks"></td>
760 <td>
760 <td>
761 <a href="/starstar/webdir/a/atom-log" title="subscribe to repository atom feed">
761 <a href="/starstar/webdir/a/atom-log" title="subscribe to repository atom feed">
762 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
762 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
763 </a>
763 </a>
764 </td>
764 </td>
765 </tr>
765 </tr>
766
766
767 <tr>
767 <tr>
768 <td><a href="/starstar/webdir/a/.hg/patches/?style=paper">starstar/webdir/a/.hg/patches</a></td>
768 <td><a href="/starstar/webdir/a/.hg/patches/?style=paper">starstar/webdir/a/.hg/patches</a></td>
769 <td>unknown</td>
769 <td>unknown</td>
770 <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>
770 <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>
771 <td class="age">*</td> (glob)
771 <td class="age">*</td> (glob)
772 <td class="indexlinks"></td>
772 <td class="indexlinks"></td>
773 <td>
773 <td>
774 <a href="/starstar/webdir/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
774 <a href="/starstar/webdir/a/.hg/patches/atom-log" title="subscribe to repository atom feed">
775 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
775 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
776 </a>
776 </a>
777 </td>
777 </td>
778 </tr>
778 </tr>
779
779
780 <tr>
780 <tr>
781 <td><a href="/starstar/webdir/b/?style=paper">starstar/webdir/b</a></td>
781 <td><a href="/starstar/webdir/b/?style=paper">starstar/webdir/b</a></td>
782 <td>unknown</td>
782 <td>unknown</td>
783 <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>
783 <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>
784 <td class="age">*</td> (glob)
784 <td class="age">*</td> (glob)
785 <td class="indexlinks"></td>
785 <td class="indexlinks"></td>
786 <td>
786 <td>
787 <a href="/starstar/webdir/b/atom-log" title="subscribe to repository atom feed">
787 <a href="/starstar/webdir/b/atom-log" title="subscribe to repository atom feed">
788 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
788 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
789 </a>
789 </a>
790 </td>
790 </td>
791 </tr>
791 </tr>
792
792
793 <tr>
793 <tr>
794 <td><a href="/starstar/webdir/b/d/?style=paper">starstar/webdir/b/d</a></td>
794 <td><a href="/starstar/webdir/b/d/?style=paper">starstar/webdir/b/d</a></td>
795 <td>unknown</td>
795 <td>unknown</td>
796 <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>
796 <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>
797 <td class="age">*</td> (glob)
797 <td class="age">*</td> (glob)
798 <td class="indexlinks"></td>
798 <td class="indexlinks"></td>
799 <td>
799 <td>
800 <a href="/starstar/webdir/b/d/atom-log" title="subscribe to repository atom feed">
800 <a href="/starstar/webdir/b/d/atom-log" title="subscribe to repository atom feed">
801 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
801 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
802 </a>
802 </a>
803 </td>
803 </td>
804 </tr>
804 </tr>
805
805
806 <tr>
806 <tr>
807 <td><a href="/starstar/webdir/c/?style=paper">starstar/webdir/c</a></td>
807 <td><a href="/starstar/webdir/c/?style=paper">starstar/webdir/c</a></td>
808 <td>unknown</td>
808 <td>unknown</td>
809 <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>
809 <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>
810 <td class="age">*</td> (glob)
810 <td class="age">*</td> (glob)
811 <td class="indexlinks"></td>
811 <td class="indexlinks"></td>
812 <td>
812 <td>
813 <a href="/starstar/webdir/c/atom-log" title="subscribe to repository atom feed">
813 <a href="/starstar/webdir/c/atom-log" title="subscribe to repository atom feed">
814 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
814 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
815 </a>
815 </a>
816 </td>
816 </td>
817 </tr>
817 </tr>
818
818
819 <tr>
819 <tr>
820 <td><a href="/starstar/webdir/notrepo/e/?style=paper">starstar/webdir/notrepo/e</a></td>
820 <td><a href="/starstar/webdir/notrepo/e/?style=paper">starstar/webdir/notrepo/e</a></td>
821 <td>unknown</td>
821 <td>unknown</td>
822 <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>
822 <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>
823 <td class="age">*</td> (glob)
823 <td class="age">*</td> (glob)
824 <td class="indexlinks"></td>
824 <td class="indexlinks"></td>
825 <td>
825 <td>
826 <a href="/starstar/webdir/notrepo/e/atom-log" title="subscribe to repository atom feed">
826 <a href="/starstar/webdir/notrepo/e/atom-log" title="subscribe to repository atom feed">
827 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
827 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
828 </a>
828 </a>
829 </td>
829 </td>
830 </tr>
830 </tr>
831
831
832 <tr>
832 <tr>
833 <td><a href="/starstar/webdir/notrepo/e/e2/?style=paper">starstar/webdir/notrepo/e/e2</a></td>
833 <td><a href="/starstar/webdir/notrepo/e/e2/?style=paper">starstar/webdir/notrepo/e/e2</a></td>
834 <td>unknown</td>
834 <td>unknown</td>
835 <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>
835 <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>
836 <td class="age">*</td> (glob)
836 <td class="age">*</td> (glob)
837 <td class="indexlinks"></td>
837 <td class="indexlinks"></td>
838 <td>
838 <td>
839 <a href="/starstar/webdir/notrepo/e/e2/atom-log" title="subscribe to repository atom feed">
839 <a href="/starstar/webdir/notrepo/e/e2/atom-log" title="subscribe to repository atom feed">
840 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
840 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
841 </a>
841 </a>
842 </td>
842 </td>
843 </tr>
843 </tr>
844
844
845 <tr>
845 <tr>
846 <td><a href="/starstar/webdir/notrepo/f/?style=paper">fancy name for repo f</a></td>
846 <td><a href="/starstar/webdir/notrepo/f/?style=paper">fancy name for repo f</a></td>
847 <td>unknown</td>
847 <td>unknown</td>
848 <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>
848 <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>
849 <td class="age">*</td> (glob)
849 <td class="age">*</td> (glob)
850 <td class="indexlinks"></td>
850 <td class="indexlinks"></td>
851 <td>
851 <td>
852 <a href="/starstar/webdir/notrepo/f/atom-log" title="subscribe to repository atom feed">
852 <a href="/starstar/webdir/notrepo/f/atom-log" title="subscribe to repository atom feed">
853 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
853 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
854 </a>
854 </a>
855 </td>
855 </td>
856 </tr>
856 </tr>
857
857
858 <tr>
858 <tr>
859 <td><a href="/starstar/webdir/notrepo/f/f2/?style=paper">starstar/webdir/notrepo/f/f2</a></td>
859 <td><a href="/starstar/webdir/notrepo/f/f2/?style=paper">starstar/webdir/notrepo/f/f2</a></td>
860 <td>unknown</td>
860 <td>unknown</td>
861 <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>
861 <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>
862 <td class="age">*</td> (glob)
862 <td class="age">*</td> (glob)
863 <td class="indexlinks"></td>
863 <td class="indexlinks"></td>
864 <td>
864 <td>
865 <a href="/starstar/webdir/notrepo/f/f2/atom-log" title="subscribe to repository atom feed">
865 <a href="/starstar/webdir/notrepo/f/f2/atom-log" title="subscribe to repository atom feed">
866 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
866 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
867 </a>
867 </a>
868 </td>
868 </td>
869 </tr>
869 </tr>
870
870
871 <tr>
871 <tr>
872 <td><a href="/astar/?style=paper">astar</a></td>
872 <td><a href="/astar/?style=paper">astar</a></td>
873 <td>unknown</td>
873 <td>unknown</td>
874 <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>
874 <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>
875 <td class="age">*</td> (glob)
875 <td class="age">*</td> (glob)
876 <td class="indexlinks"></td>
876 <td class="indexlinks"></td>
877 <td>
877 <td>
878 <a href="/astar/atom-log" title="subscribe to repository atom feed">
878 <a href="/astar/atom-log" title="subscribe to repository atom feed">
879 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
879 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
880 </a>
880 </a>
881 </td>
881 </td>
882 </tr>
882 </tr>
883
883
884 <tr>
884 <tr>
885 <td><a href="/astar/.hg/patches/?style=paper">astar/.hg/patches</a></td>
885 <td><a href="/astar/.hg/patches/?style=paper">astar/.hg/patches</a></td>
886 <td>unknown</td>
886 <td>unknown</td>
887 <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>
887 <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>
888 <td class="age">*</td> (glob)
888 <td class="age">*</td> (glob)
889 <td class="indexlinks"></td>
889 <td class="indexlinks"></td>
890 <td>
890 <td>
891 <a href="/astar/.hg/patches/atom-log" title="subscribe to repository atom feed">
891 <a href="/astar/.hg/patches/atom-log" title="subscribe to repository atom feed">
892 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
892 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
893 </a>
893 </a>
894 </td>
894 </td>
895 </tr>
895 </tr>
896
896
897 </tbody>
897 </tbody>
898 </table>
898 </table>
899 </div>
899 </div>
900 </div>
900 </div>
901
901
902
902
903 </body>
903 </body>
904 </html>
904 </html>
905
905
906 $ get-with-headers.py localhost:$HGPORT1 't?style=raw'
906 $ get-with-headers.py localhost:$HGPORT1 't?style=raw'
907 200 Script output follows
907 200 Script output follows
908
908
909
909
910 /t/a/
910 /t/a/
911
911
912 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
912 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
913 200 Script output follows
913 200 Script output follows
914
914
915
915
916 /t/a/
916 /t/a/
917
917
918 $ get-with-headers.py localhost:$HGPORT1 't/?style=paper'
918 $ get-with-headers.py localhost:$HGPORT1 't/?style=paper'
919 200 Script output follows
919 200 Script output follows
920
920
921 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
921 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
922 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
922 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
923 <head>
923 <head>
924 <link rel="icon" href="/static/hgicon.png" type="image/png" />
924 <link rel="icon" href="/static/hgicon.png" type="image/png" />
925 <meta name="robots" content="index, nofollow" />
925 <meta name="robots" content="index, nofollow" />
926 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
926 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
927 <script type="text/javascript" src="/static/mercurial.js"></script>
927 <script type="text/javascript" src="/static/mercurial.js"></script>
928
928
929 <title>Mercurial repositories index</title>
929 <title>Mercurial repositories index</title>
930 </head>
930 </head>
931 <body>
931 <body>
932
932
933 <div class="container">
933 <div class="container">
934 <div class="menu">
934 <div class="menu">
935 <a href="https://mercurial-scm.org/">
935 <a href="https://mercurial-scm.org/">
936 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
936 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
937 </div>
937 </div>
938 <div class="main">
938 <div class="main">
939 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/t">t</a> </h2>
939 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/t">t</a> </h2>
940
940
941 <table class="bigtable">
941 <table class="bigtable">
942 <thead>
942 <thead>
943 <tr>
943 <tr>
944 <th><a href="?sort=name">Name</a></th>
944 <th><a href="?sort=name">Name</a></th>
945 <th><a href="?sort=description">Description</a></th>
945 <th><a href="?sort=description">Description</a></th>
946 <th><a href="?sort=contact">Contact</a></th>
946 <th><a href="?sort=contact">Contact</a></th>
947 <th><a href="?sort=lastchange">Last modified</a></th>
947 <th><a href="?sort=lastchange">Last modified</a></th>
948 <th>&nbsp;</th>
948 <th>&nbsp;</th>
949 <th>&nbsp;</th>
949 <th>&nbsp;</th>
950 </tr>
950 </tr>
951 </thead>
951 </thead>
952 <tbody class="stripes2">
952 <tbody class="stripes2">
953
953
954 <tr>
954 <tr>
955 <td><a href="/t/a/?style=paper">a</a></td>
955 <td><a href="/t/a/?style=paper">a</a></td>
956 <td>unknown</td>
956 <td>unknown</td>
957 <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>
957 <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>
958 <td class="age">*</td> (glob)
958 <td class="age">*</td> (glob)
959 <td class="indexlinks"></td>
959 <td class="indexlinks"></td>
960 <td>
960 <td>
961 <a href="/t/a/atom-log" title="subscribe to repository atom feed">
961 <a href="/t/a/atom-log" title="subscribe to repository atom feed">
962 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
962 <img class="atom-logo" src="/static/feed-icon-14x14.png" alt="subscribe to repository atom feed">
963 </a>
963 </a>
964 </td>
964 </td>
965 </tr>
965 </tr>
966
966
967 </tbody>
967 </tbody>
968 </table>
968 </table>
969 </div>
969 </div>
970 </div>
970 </div>
971
971
972
972
973 </body>
973 </body>
974 </html>
974 </html>
975
975
976 $ get-with-headers.py localhost:$HGPORT1 't/a?style=atom'
976 $ get-with-headers.py localhost:$HGPORT1 't/a?style=atom'
977 200 Script output follows
977 200 Script output follows
978
978
979 <?xml version="1.0" encoding="ascii"?>
979 <?xml version="1.0" encoding="ascii"?>
980 <feed xmlns="http://www.w3.org/2005/Atom">
980 <feed xmlns="http://www.w3.org/2005/Atom">
981 <!-- Changelog -->
981 <!-- Changelog -->
982 <id>http://*:$HGPORT1/t/a/</id> (glob)
982 <id>http://*:$HGPORT1/t/a/</id> (glob)
983 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
983 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
984 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
984 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
985 <title>t/a Changelog</title>
985 <title>t/a Changelog</title>
986 <updated>1970-01-01T00:00:01+00:00</updated>
986 <updated>1970-01-01T00:00:01+00:00</updated>
987
987
988 <entry>
988 <entry>
989 <title>[default] a</title>
989 <title>[default] a</title>
990 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
990 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
991 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
991 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
992 <author>
992 <author>
993 <name>test</name>
993 <name>test</name>
994 <email>&#116;&#101;&#115;&#116;</email>
994 <email>&#116;&#101;&#115;&#116;</email>
995 </author>
995 </author>
996 <updated>1970-01-01T00:00:01+00:00</updated>
996 <updated>1970-01-01T00:00:01+00:00</updated>
997 <published>1970-01-01T00:00:01+00:00</published>
997 <published>1970-01-01T00:00:01+00:00</published>
998 <content type="xhtml">
998 <content type="xhtml">
999 <table xmlns="http://www.w3.org/1999/xhtml">
999 <table xmlns="http://www.w3.org/1999/xhtml">
1000 <tr>
1000 <tr>
1001 <th style="text-align:left;">changeset</th>
1001 <th style="text-align:left;">changeset</th>
1002 <td>8580ff50825a</td>
1002 <td>8580ff50825a</td>
1003 </tr>
1003 </tr>
1004 <tr>
1004 <tr>
1005 <th style="text-align:left;">branch</th>
1005 <th style="text-align:left;">branch</th>
1006 <td>default</td>
1006 <td>default</td>
1007 </tr>
1007 </tr>
1008 <tr>
1008 <tr>
1009 <th style="text-align:left;">bookmark</th>
1009 <th style="text-align:left;">bookmark</th>
1010 <td></td>
1010 <td></td>
1011 </tr>
1011 </tr>
1012 <tr>
1012 <tr>
1013 <th style="text-align:left;">tag</th>
1013 <th style="text-align:left;">tag</th>
1014 <td>tip</td>
1014 <td>tip</td>
1015 </tr>
1015 </tr>
1016 <tr>
1016 <tr>
1017 <th style="text-align:left;">user</th>
1017 <th style="text-align:left;">user</th>
1018 <td>&#116;&#101;&#115;&#116;</td>
1018 <td>&#116;&#101;&#115;&#116;</td>
1019 </tr>
1019 </tr>
1020 <tr>
1020 <tr>
1021 <th style="text-align:left;vertical-align:top;">description</th>
1021 <th style="text-align:left;vertical-align:top;">description</th>
1022 <td>a</td>
1022 <td>a</td>
1023 </tr>
1023 </tr>
1024 <tr>
1024 <tr>
1025 <th style="text-align:left;vertical-align:top;">files</th>
1025 <th style="text-align:left;vertical-align:top;">files</th>
1026 <td>a<br /></td>
1026 <td>a<br /></td>
1027 </tr>
1027 </tr>
1028 </table>
1028 </table>
1029 </content>
1029 </content>
1030 </entry>
1030 </entry>
1031
1031
1032 </feed>
1032 </feed>
1033 $ get-with-headers.py localhost:$HGPORT1 't/a/?style=atom'
1033 $ get-with-headers.py localhost:$HGPORT1 't/a/?style=atom'
1034 200 Script output follows
1034 200 Script output follows
1035
1035
1036 <?xml version="1.0" encoding="ascii"?>
1036 <?xml version="1.0" encoding="ascii"?>
1037 <feed xmlns="http://www.w3.org/2005/Atom">
1037 <feed xmlns="http://www.w3.org/2005/Atom">
1038 <!-- Changelog -->
1038 <!-- Changelog -->
1039 <id>http://*:$HGPORT1/t/a/</id> (glob)
1039 <id>http://*:$HGPORT1/t/a/</id> (glob)
1040 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
1040 <link rel="self" href="http://*:$HGPORT1/t/a/atom-log"/> (glob)
1041 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
1041 <link rel="alternate" href="http://*:$HGPORT1/t/a/"/> (glob)
1042 <title>t/a Changelog</title>
1042 <title>t/a Changelog</title>
1043 <updated>1970-01-01T00:00:01+00:00</updated>
1043 <updated>1970-01-01T00:00:01+00:00</updated>
1044
1044
1045 <entry>
1045 <entry>
1046 <title>[default] a</title>
1046 <title>[default] a</title>
1047 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
1047 <id>http://*:$HGPORT1/t/a/#changeset-8580ff50825a50c8f716709acdf8de0deddcd6ab</id> (glob)
1048 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
1048 <link href="http://*:$HGPORT1/t/a/rev/8580ff50825a"/> (glob)
1049 <author>
1049 <author>
1050 <name>test</name>
1050 <name>test</name>
1051 <email>&#116;&#101;&#115;&#116;</email>
1051 <email>&#116;&#101;&#115;&#116;</email>
1052 </author>
1052 </author>
1053 <updated>1970-01-01T00:00:01+00:00</updated>
1053 <updated>1970-01-01T00:00:01+00:00</updated>
1054 <published>1970-01-01T00:00:01+00:00</published>
1054 <published>1970-01-01T00:00:01+00:00</published>
1055 <content type="xhtml">
1055 <content type="xhtml">
1056 <table xmlns="http://www.w3.org/1999/xhtml">
1056 <table xmlns="http://www.w3.org/1999/xhtml">
1057 <tr>
1057 <tr>
1058 <th style="text-align:left;">changeset</th>
1058 <th style="text-align:left;">changeset</th>
1059 <td>8580ff50825a</td>
1059 <td>8580ff50825a</td>
1060 </tr>
1060 </tr>
1061 <tr>
1061 <tr>
1062 <th style="text-align:left;">branch</th>
1062 <th style="text-align:left;">branch</th>
1063 <td>default</td>
1063 <td>default</td>
1064 </tr>
1064 </tr>
1065 <tr>
1065 <tr>
1066 <th style="text-align:left;">bookmark</th>
1066 <th style="text-align:left;">bookmark</th>
1067 <td></td>
1067 <td></td>
1068 </tr>
1068 </tr>
1069 <tr>
1069 <tr>
1070 <th style="text-align:left;">tag</th>
1070 <th style="text-align:left;">tag</th>
1071 <td>tip</td>
1071 <td>tip</td>
1072 </tr>
1072 </tr>
1073 <tr>
1073 <tr>
1074 <th style="text-align:left;">user</th>
1074 <th style="text-align:left;">user</th>
1075 <td>&#116;&#101;&#115;&#116;</td>
1075 <td>&#116;&#101;&#115;&#116;</td>
1076 </tr>
1076 </tr>
1077 <tr>
1077 <tr>
1078 <th style="text-align:left;vertical-align:top;">description</th>
1078 <th style="text-align:left;vertical-align:top;">description</th>
1079 <td>a</td>
1079 <td>a</td>
1080 </tr>
1080 </tr>
1081 <tr>
1081 <tr>
1082 <th style="text-align:left;vertical-align:top;">files</th>
1082 <th style="text-align:left;vertical-align:top;">files</th>
1083 <td>a<br /></td>
1083 <td>a<br /></td>
1084 </tr>
1084 </tr>
1085 </table>
1085 </table>
1086 </content>
1086 </content>
1087 </entry>
1087 </entry>
1088
1088
1089 </feed>
1089 </feed>
1090 $ get-with-headers.py localhost:$HGPORT1 't/a/file/tip/a?style=raw'
1090 $ get-with-headers.py localhost:$HGPORT1 't/a/file/tip/a?style=raw'
1091 200 Script output follows
1091 200 Script output follows
1092
1092
1093 a
1093 a
1094
1094
1095 Test [paths] '*' extension
1095 Test [paths] '*' extension
1096
1096
1097 $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
1097 $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
1098 200 Script output follows
1098 200 Script output follows
1099
1099
1100
1100
1101 /coll/a/
1101 /coll/a/
1102 /coll/a/.hg/patches/
1102 /coll/a/.hg/patches/
1103 /coll/b/
1103 /coll/b/
1104 /coll/c/
1104 /coll/c/
1105 /coll/notrepo/e/
1105 /coll/notrepo/e/
1106 /coll/notrepo/f/
1106 /coll/notrepo/f/
1107
1107
1108 $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
1108 $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
1109 200 Script output follows
1109 200 Script output follows
1110
1110
1111 a
1111 a
1112
1112
1113 Test [paths] '**' extension
1113 Test [paths] '**' extension
1114
1114
1115 $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
1115 $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
1116 200 Script output follows
1116 200 Script output follows
1117
1117
1118
1118
1119 /rcoll/a/
1119 /rcoll/a/
1120 /rcoll/a/.hg/patches/
1120 /rcoll/a/.hg/patches/
1121 /rcoll/b/
1121 /rcoll/b/
1122 /rcoll/b/d/
1122 /rcoll/b/d/
1123 /rcoll/c/
1123 /rcoll/c/
1124 /rcoll/notrepo/e/
1124 /rcoll/notrepo/e/
1125 /rcoll/notrepo/e/e2/
1125 /rcoll/notrepo/e/e2/
1126 /rcoll/notrepo/f/
1126 /rcoll/notrepo/f/
1127 /rcoll/notrepo/f/f2/
1127 /rcoll/notrepo/f/f2/
1128
1128
1129 $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
1129 $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
1130 200 Script output follows
1130 200 Script output follows
1131
1131
1132 d
1132 d
1133
1133
1134 Test collapse = True
1134 Test collapse = True
1135
1135
1136 $ killdaemons.py
1136 $ killdaemons.py
1137 $ cat >> paths.conf <<EOF
1137 $ cat >> paths.conf <<EOF
1138 > [web]
1138 > [web]
1139 > collapse=true
1139 > collapse=true
1140 > descend = true
1140 > descend = true
1141 > EOF
1141 > EOF
1142 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1142 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1143 > -A access-paths.log -E error-paths-3.log
1143 > -A access-paths.log -E error-paths-3.log
1144 $ cat hg.pid >> $DAEMON_PIDS
1144 $ cat hg.pid >> $DAEMON_PIDS
1145 $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
1145 $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
1146 200 Script output follows
1146 200 Script output follows
1147
1147
1148
1148
1149 /coll/a/
1149 /coll/a/
1150 /coll/a/.hg/patches/
1150 /coll/a/.hg/patches/
1151 /coll/b/
1151 /coll/b/
1152 /coll/c/
1152 /coll/c/
1153 /coll/notrepo/
1153 /coll/notrepo/
1154
1154
1155 $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
1155 $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
1156 200 Script output follows
1156 200 Script output follows
1157
1157
1158 a
1158 a
1159 $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
1159 $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
1160 200 Script output follows
1160 200 Script output follows
1161
1161
1162
1162
1163 /rcoll/a/
1163 /rcoll/a/
1164 /rcoll/a/.hg/patches/
1164 /rcoll/a/.hg/patches/
1165 /rcoll/b/
1165 /rcoll/b/
1166 /rcoll/b/d/
1166 /rcoll/b/d/
1167 /rcoll/c/
1167 /rcoll/c/
1168 /rcoll/notrepo/
1168 /rcoll/notrepo/
1169
1169
1170 $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
1170 $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
1171 200 Script output follows
1171 200 Script output follows
1172
1172
1173 d
1173 d
1174
1174
1175 Test intermediate directories
1175 Test intermediate directories
1176
1176
1177 Hide the subrepo parent
1177 Hide the subrepo parent
1178
1178
1179 $ cp $root/notrepo/f/.hg/hgrc $root/notrepo/f/.hg/hgrc.bak
1179 $ cp $root/notrepo/f/.hg/hgrc $root/notrepo/f/.hg/hgrc.bak
1180 $ cat >> $root/notrepo/f/.hg/hgrc << EOF
1180 $ cat >> $root/notrepo/f/.hg/hgrc << EOF
1181 > [web]
1181 > [web]
1182 > hidden = True
1182 > hidden = True
1183 > EOF
1183 > EOF
1184
1184
1185 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
1185 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
1186 200 Script output follows
1186 200 Script output follows
1187
1187
1188
1188
1189 /rcoll/notrepo/e/
1189 /rcoll/notrepo/e/
1190 /rcoll/notrepo/e/e2/
1190 /rcoll/notrepo/e/e2/
1191
1191
1192
1192
1193 Subrepo parent not hidden
1193 Subrepo parent not hidden
1194 $ mv $root/notrepo/f/.hg/hgrc.bak $root/notrepo/f/.hg/hgrc
1194 $ mv $root/notrepo/f/.hg/hgrc.bak $root/notrepo/f/.hg/hgrc
1195
1195
1196 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
1196 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
1197 200 Script output follows
1197 200 Script output follows
1198
1198
1199
1199
1200 /rcoll/notrepo/e/
1200 /rcoll/notrepo/e/
1201 /rcoll/notrepo/e/e2/
1201 /rcoll/notrepo/e/e2/
1202 /rcoll/notrepo/f/
1202 /rcoll/notrepo/f/
1203 /rcoll/notrepo/f/f2/
1203 /rcoll/notrepo/f/f2/
1204
1204
1205
1205
1206 Test repositories inside intermediate directories
1206 Test repositories inside intermediate directories
1207
1207
1208 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
1208 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
1209 200 Script output follows
1209 200 Script output follows
1210
1210
1211 e
1211 e
1212
1212
1213 Test subrepositories inside intermediate directories
1213 Test subrepositories inside intermediate directories
1214
1214
1215 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
1215 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
1216 200 Script output follows
1216 200 Script output follows
1217
1217
1218 f2
1218 f2
1219
1219
1220 Test descend = False
1220 Test descend = False
1221
1221
1222 $ killdaemons.py
1222 $ killdaemons.py
1223 $ cat >> paths.conf <<EOF
1223 $ cat >> paths.conf <<EOF
1224 > descend=false
1224 > descend=false
1225 > EOF
1225 > EOF
1226 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1226 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1227 > -A access-paths.log -E error-paths-4.log
1227 > -A access-paths.log -E error-paths-4.log
1228 $ cat hg.pid >> $DAEMON_PIDS
1228 $ cat hg.pid >> $DAEMON_PIDS
1229 $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
1229 $ get-with-headers.py localhost:$HGPORT1 'coll/?style=raw'
1230 200 Script output follows
1230 200 Script output follows
1231
1231
1232
1232
1233 /coll/a/
1233 /coll/a/
1234 /coll/b/
1234 /coll/b/
1235 /coll/c/
1235 /coll/c/
1236
1236
1237 $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
1237 $ get-with-headers.py localhost:$HGPORT1 'coll/a/file/tip/a?style=raw'
1238 200 Script output follows
1238 200 Script output follows
1239
1239
1240 a
1240 a
1241 $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
1241 $ get-with-headers.py localhost:$HGPORT1 'rcoll/?style=raw'
1242 200 Script output follows
1242 200 Script output follows
1243
1243
1244
1244
1245 /rcoll/a/
1245 /rcoll/a/
1246 /rcoll/b/
1246 /rcoll/b/
1247 /rcoll/c/
1247 /rcoll/c/
1248
1248
1249 $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
1249 $ get-with-headers.py localhost:$HGPORT1 'rcoll/b/d/file/tip/d?style=raw'
1250 200 Script output follows
1250 200 Script output follows
1251
1251
1252 d
1252 d
1253
1253
1254 Test intermediate directories
1254 Test intermediate directories
1255
1255
1256 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
1256 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/?style=raw'
1257 200 Script output follows
1257 200 Script output follows
1258
1258
1259
1259
1260 /rcoll/notrepo/e/
1260 /rcoll/notrepo/e/
1261 /rcoll/notrepo/f/
1261 /rcoll/notrepo/f/
1262
1262
1263
1263
1264 Test repositories inside intermediate directories
1264 Test repositories inside intermediate directories
1265
1265
1266 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
1266 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/e/file/tip/e?style=raw'
1267 200 Script output follows
1267 200 Script output follows
1268
1268
1269 e
1269 e
1270
1270
1271 Test subrepositories inside intermediate directories
1271 Test subrepositories inside intermediate directories
1272
1272
1273 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
1273 $ get-with-headers.py localhost:$HGPORT1 'rcoll/notrepo/f/f2/file/tip/f2?style=raw'
1274 200 Script output follows
1274 200 Script output follows
1275
1275
1276 f2
1276 f2
1277
1277
1278 Test [paths] '*' in a repo root
1278 Test [paths] '*' in a repo root
1279
1279
1280 $ hg id http://localhost:$HGPORT1/astar
1280 $ hg id http://localhost:$HGPORT1/astar
1281 8580ff50825a
1281 8580ff50825a
1282
1282
1283 $ killdaemons.py
1283 $ killdaemons.py
1284 $ cat > paths.conf <<EOF
1284 $ cat > paths.conf <<EOF
1285 > [paths]
1285 > [paths]
1286 > t/a = $root/a
1286 > t/a = $root/a
1287 > t/b = $root/b
1287 > t/b = $root/b
1288 > c = $root/c
1288 > c = $root/c
1289 > EOF
1289 > EOF
1290 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1290 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1291 > -A access-paths.log -E error-paths-5.log
1291 > -A access-paths.log -E error-paths-5.log
1292 $ cat hg.pid >> $DAEMON_PIDS
1292 $ cat hg.pid >> $DAEMON_PIDS
1293 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1293 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1294 200 Script output follows
1294 200 Script output follows
1295
1295
1296
1296
1297 /t/a/
1297 /t/a/
1298 /t/b/
1298 /t/b/
1299 /c/
1299 /c/
1300
1300
1301 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
1301 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
1302 200 Script output follows
1302 200 Script output follows
1303
1303
1304
1304
1305 /t/a/
1305 /t/a/
1306 /t/b/
1306 /t/b/
1307
1307
1308
1308
1309 Test collapse = True
1309 Test collapse = True
1310
1310
1311 $ killdaemons.py
1311 $ killdaemons.py
1312 $ cat >> paths.conf <<EOF
1312 $ cat >> paths.conf <<EOF
1313 > [web]
1313 > [web]
1314 > collapse=true
1314 > collapse=true
1315 > EOF
1315 > EOF
1316 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1316 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1317 > -A access-paths.log -E error-paths-6.log
1317 > -A access-paths.log -E error-paths-6.log
1318 $ cat hg.pid >> $DAEMON_PIDS
1318 $ cat hg.pid >> $DAEMON_PIDS
1319 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1319 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1320 200 Script output follows
1320 200 Script output follows
1321
1321
1322
1322
1323 /t/
1323 /t/
1324 /c/
1324 /c/
1325
1325
1326 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
1326 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
1327 200 Script output follows
1327 200 Script output follows
1328
1328
1329
1329
1330 /t/a/
1330 /t/a/
1331 /t/b/
1331 /t/b/
1332
1332
1333
1333
1334 test descend = False
1334 test descend = False
1335
1335
1336 $ killdaemons.py
1336 $ killdaemons.py
1337 $ cat >> paths.conf <<EOF
1337 $ cat >> paths.conf <<EOF
1338 > descend=false
1338 > descend=false
1339 > EOF
1339 > EOF
1340 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1340 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1341 > -A access-paths.log -E error-paths-7.log
1341 > -A access-paths.log -E error-paths-7.log
1342 $ cat hg.pid >> $DAEMON_PIDS
1342 $ cat hg.pid >> $DAEMON_PIDS
1343 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1343 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1344 200 Script output follows
1344 200 Script output follows
1345
1345
1346
1346
1347 /c/
1347 /c/
1348
1348
1349 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
1349 $ get-with-headers.py localhost:$HGPORT1 't/?style=raw'
1350 200 Script output follows
1350 200 Script output follows
1351
1351
1352
1352
1353 /t/a/
1353 /t/a/
1354 /t/b/
1354 /t/b/
1355
1355
1356 $ killdaemons.py
1356 $ killdaemons.py
1357 $ cat > paths.conf <<EOF
1357 $ cat > paths.conf <<EOF
1358 > [paths]
1358 > [paths]
1359 > nostore = $root/nostore
1359 > nostore = $root/nostore
1360 > inexistent = $root/inexistent
1360 > inexistent = $root/inexistent
1361 > EOF
1361 > EOF
1362 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1362 $ hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
1363 > -A access-paths.log -E error-paths-8.log
1363 > -A access-paths.log -E error-paths-8.log
1364 $ cat hg.pid >> $DAEMON_PIDS
1364 $ cat hg.pid >> $DAEMON_PIDS
1365
1365
1366 test inexistent and inaccessible repo should be ignored silently
1366 test inexistent and inaccessible repo should be ignored silently
1367
1367
1368 $ get-with-headers.py localhost:$HGPORT1 ''
1368 $ get-with-headers.py localhost:$HGPORT1 ''
1369 200 Script output follows
1369 200 Script output follows
1370
1370
1371 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1371 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1372 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1372 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1373 <head>
1373 <head>
1374 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1374 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1375 <meta name="robots" content="index, nofollow" />
1375 <meta name="robots" content="index, nofollow" />
1376 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1376 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1377 <script type="text/javascript" src="/static/mercurial.js"></script>
1377 <script type="text/javascript" src="/static/mercurial.js"></script>
1378
1378
1379 <title>Mercurial repositories index</title>
1379 <title>Mercurial repositories index</title>
1380 </head>
1380 </head>
1381 <body>
1381 <body>
1382
1382
1383 <div class="container">
1383 <div class="container">
1384 <div class="menu">
1384 <div class="menu">
1385 <a href="https://mercurial-scm.org/">
1385 <a href="https://mercurial-scm.org/">
1386 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
1386 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
1387 </div>
1387 </div>
1388 <div class="main">
1388 <div class="main">
1389 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1389 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1390
1390
1391 <table class="bigtable">
1391 <table class="bigtable">
1392 <thead>
1392 <thead>
1393 <tr>
1393 <tr>
1394 <th><a href="?sort=name">Name</a></th>
1394 <th><a href="?sort=name">Name</a></th>
1395 <th><a href="?sort=description">Description</a></th>
1395 <th><a href="?sort=description">Description</a></th>
1396 <th><a href="?sort=contact">Contact</a></th>
1396 <th><a href="?sort=contact">Contact</a></th>
1397 <th><a href="?sort=lastchange">Last modified</a></th>
1397 <th><a href="?sort=lastchange">Last modified</a></th>
1398 <th>&nbsp;</th>
1398 <th>&nbsp;</th>
1399 <th>&nbsp;</th>
1399 <th>&nbsp;</th>
1400 </tr>
1400 </tr>
1401 </thead>
1401 </thead>
1402 <tbody class="stripes2">
1402 <tbody class="stripes2">
1403
1403
1404 </tbody>
1404 </tbody>
1405 </table>
1405 </table>
1406 </div>
1406 </div>
1407 </div>
1407 </div>
1408
1408
1409
1409
1410 </body>
1410 </body>
1411 </html>
1411 </html>
1412
1412
1413
1413
1414 test listening address/port specified by web-conf (issue4699):
1414 test listening address/port specified by web-conf (issue4699):
1415
1415
1416 $ killdaemons.py
1416 $ killdaemons.py
1417 $ cat >> paths.conf <<EOF
1417 $ cat >> paths.conf <<EOF
1418 > [web]
1418 > [web]
1419 > address = localhost
1419 > address = localhost
1420 > port = $HGPORT1
1420 > port = $HGPORT1
1421 > EOF
1421 > EOF
1422 $ hg serve -d --pid-file=hg.pid --web-conf paths.conf \
1422 $ hg serve -d --pid-file=hg.pid --web-conf paths.conf \
1423 > -A access-paths.log -E error-paths-9.log
1423 > -A access-paths.log -E error-paths-9.log
1424 listening at http://*:$HGPORT1/ (bound to *$LOCALIP*:$HGPORT1) (glob)
1424 listening at http://*:$HGPORT1/ (bound to *$LOCALIP*:$HGPORT1) (glob) (?)
1425 $ cat hg.pid >> $DAEMON_PIDS
1425 $ cat hg.pid >> $DAEMON_PIDS
1426 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1426 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1427 200 Script output follows
1427 200 Script output follows
1428
1428
1429
1429
1430
1430
1431 test --port option overrides web.port:
1431 test --port option overrides web.port:
1432
1432
1433 $ killdaemons.py
1433 $ killdaemons.py
1434 $ hg serve -p $HGPORT2 -d -v --pid-file=hg.pid --web-conf paths.conf \
1434 $ hg serve -p $HGPORT2 -d -v --pid-file=hg.pid --web-conf paths.conf \
1435 > -A access-paths.log -E error-paths-10.log
1435 > -A access-paths.log -E error-paths-10.log
1436 listening at http://*:$HGPORT2/ (bound to *$LOCALIP*:$HGPORT2) (glob)
1436 listening at http://*:$HGPORT2/ (bound to *$LOCALIP*:$HGPORT2) (glob) (?)
1437 $ cat hg.pid >> $DAEMON_PIDS
1437 $ cat hg.pid >> $DAEMON_PIDS
1438 $ get-with-headers.py localhost:$HGPORT2 '?style=raw'
1438 $ get-with-headers.py localhost:$HGPORT2 '?style=raw'
1439 200 Script output follows
1439 200 Script output follows
1440
1440
1441
1441
1442
1442
1443
1443
1444 $ killdaemons.py
1444 $ killdaemons.py
1445 $ cat > collections.conf <<EOF
1445 $ cat > collections.conf <<EOF
1446 > [collections]
1446 > [collections]
1447 > $root=$root
1447 > $root=$root
1448 > EOF
1448 > EOF
1449 $ hg serve --config web.baseurl=http://hg.example.com:8080/ -p $HGPORT2 -d \
1449 $ hg serve --config web.baseurl=http://hg.example.com:8080/ -p $HGPORT2 -d \
1450 > --pid-file=hg.pid --webdir-conf collections.conf \
1450 > --pid-file=hg.pid --webdir-conf collections.conf \
1451 > -A access-collections.log -E error-collections.log
1451 > -A access-collections.log -E error-collections.log
1452 $ cat hg.pid >> $DAEMON_PIDS
1452 $ cat hg.pid >> $DAEMON_PIDS
1453
1453
1454 collections: should succeed
1454 collections: should succeed
1455
1455
1456 $ get-with-headers.py localhost:$HGPORT2 '?style=raw'
1456 $ get-with-headers.py localhost:$HGPORT2 '?style=raw'
1457 200 Script output follows
1457 200 Script output follows
1458
1458
1459
1459
1460 /a/
1460 /a/
1461 /a/.hg/patches/
1461 /a/.hg/patches/
1462 /b/
1462 /b/
1463 /c/
1463 /c/
1464 /notrepo/e/
1464 /notrepo/e/
1465 /notrepo/f/
1465 /notrepo/f/
1466
1466
1467 $ get-with-headers.py localhost:$HGPORT2 'a/file/tip/a?style=raw'
1467 $ get-with-headers.py localhost:$HGPORT2 'a/file/tip/a?style=raw'
1468 200 Script output follows
1468 200 Script output follows
1469
1469
1470 a
1470 a
1471 $ get-with-headers.py localhost:$HGPORT2 'b/file/tip/b?style=raw'
1471 $ get-with-headers.py localhost:$HGPORT2 'b/file/tip/b?style=raw'
1472 200 Script output follows
1472 200 Script output follows
1473
1473
1474 b
1474 b
1475 $ get-with-headers.py localhost:$HGPORT2 'c/file/tip/c?style=raw'
1475 $ get-with-headers.py localhost:$HGPORT2 'c/file/tip/c?style=raw'
1476 200 Script output follows
1476 200 Script output follows
1477
1477
1478 c
1478 c
1479
1479
1480 atom-log with basedir /
1480 atom-log with basedir /
1481
1481
1482 $ get-with-headers.py localhost:$HGPORT2 'a/atom-log' | grep '<link'
1482 $ get-with-headers.py localhost:$HGPORT2 'a/atom-log' | grep '<link'
1483 <link rel="self" href="http://hg.example.com:8080/a/atom-log"/>
1483 <link rel="self" href="http://hg.example.com:8080/a/atom-log"/>
1484 <link rel="alternate" href="http://hg.example.com:8080/a/"/>
1484 <link rel="alternate" href="http://hg.example.com:8080/a/"/>
1485 <link href="http://hg.example.com:8080/a/rev/8580ff50825a"/>
1485 <link href="http://hg.example.com:8080/a/rev/8580ff50825a"/>
1486
1486
1487 rss-log with basedir /
1487 rss-log with basedir /
1488
1488
1489 $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid'
1489 $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid'
1490 <guid isPermaLink="true">http://hg.example.com:8080/a/rev/8580ff50825a</guid>
1490 <guid isPermaLink="true">http://hg.example.com:8080/a/rev/8580ff50825a</guid>
1491 $ killdaemons.py
1491 $ killdaemons.py
1492 $ hg serve --config web.baseurl=http://hg.example.com:8080/foo/ -p $HGPORT2 -d \
1492 $ hg serve --config web.baseurl=http://hg.example.com:8080/foo/ -p $HGPORT2 -d \
1493 > --pid-file=hg.pid --webdir-conf collections.conf \
1493 > --pid-file=hg.pid --webdir-conf collections.conf \
1494 > -A access-collections-2.log -E error-collections-2.log
1494 > -A access-collections-2.log -E error-collections-2.log
1495 $ cat hg.pid >> $DAEMON_PIDS
1495 $ cat hg.pid >> $DAEMON_PIDS
1496
1496
1497 atom-log with basedir /foo/
1497 atom-log with basedir /foo/
1498
1498
1499 $ get-with-headers.py localhost:$HGPORT2 'a/atom-log' | grep '<link'
1499 $ get-with-headers.py localhost:$HGPORT2 'a/atom-log' | grep '<link'
1500 <link rel="self" href="http://hg.example.com:8080/foo/a/atom-log"/>
1500 <link rel="self" href="http://hg.example.com:8080/foo/a/atom-log"/>
1501 <link rel="alternate" href="http://hg.example.com:8080/foo/a/"/>
1501 <link rel="alternate" href="http://hg.example.com:8080/foo/a/"/>
1502 <link href="http://hg.example.com:8080/foo/a/rev/8580ff50825a"/>
1502 <link href="http://hg.example.com:8080/foo/a/rev/8580ff50825a"/>
1503
1503
1504 rss-log with basedir /foo/
1504 rss-log with basedir /foo/
1505
1505
1506 $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid'
1506 $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid'
1507 <guid isPermaLink="true">http://hg.example.com:8080/foo/a/rev/8580ff50825a</guid>
1507 <guid isPermaLink="true">http://hg.example.com:8080/foo/a/rev/8580ff50825a</guid>
1508
1508
1509 Path refreshing works as expected
1509 Path refreshing works as expected
1510
1510
1511 $ killdaemons.py
1511 $ killdaemons.py
1512 $ mkdir $root/refreshtest
1512 $ mkdir $root/refreshtest
1513 $ hg init $root/refreshtest/a
1513 $ hg init $root/refreshtest/a
1514 $ cat > paths.conf << EOF
1514 $ cat > paths.conf << EOF
1515 > [paths]
1515 > [paths]
1516 > / = $root/refreshtest/*
1516 > / = $root/refreshtest/*
1517 > EOF
1517 > EOF
1518 $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf
1518 $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf
1519 $ cat hg.pid >> $DAEMON_PIDS
1519 $ cat hg.pid >> $DAEMON_PIDS
1520
1520
1521 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1521 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1522 200 Script output follows
1522 200 Script output follows
1523
1523
1524
1524
1525 /a/
1525 /a/
1526
1526
1527
1527
1528 By default refreshing occurs every 20s and a new repo won't be listed
1528 By default refreshing occurs every 20s and a new repo won't be listed
1529 immediately.
1529 immediately.
1530
1530
1531 $ hg init $root/refreshtest/b
1531 $ hg init $root/refreshtest/b
1532 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1532 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1533 200 Script output follows
1533 200 Script output follows
1534
1534
1535
1535
1536 /a/
1536 /a/
1537
1537
1538
1538
1539 Restart the server with no refresh interval. New repo should appear
1539 Restart the server with no refresh interval. New repo should appear
1540 immediately.
1540 immediately.
1541
1541
1542 $ killdaemons.py
1542 $ killdaemons.py
1543 $ cat > paths.conf << EOF
1543 $ cat > paths.conf << EOF
1544 > [web]
1544 > [web]
1545 > refreshinterval = -1
1545 > refreshinterval = -1
1546 > [paths]
1546 > [paths]
1547 > / = $root/refreshtest/*
1547 > / = $root/refreshtest/*
1548 > EOF
1548 > EOF
1549 $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf
1549 $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf
1550 $ cat hg.pid >> $DAEMON_PIDS
1550 $ cat hg.pid >> $DAEMON_PIDS
1551
1551
1552 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1552 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1553 200 Script output follows
1553 200 Script output follows
1554
1554
1555
1555
1556 /a/
1556 /a/
1557 /b/
1557 /b/
1558
1558
1559
1559
1560 $ hg init $root/refreshtest/c
1560 $ hg init $root/refreshtest/c
1561 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1561 $ get-with-headers.py localhost:$HGPORT1 '?style=raw'
1562 200 Script output follows
1562 200 Script output follows
1563
1563
1564
1564
1565 /a/
1565 /a/
1566 /b/
1566 /b/
1567 /c/
1567 /c/
1568
1568
1569 $ killdaemons.py
1569 $ killdaemons.py
1570 $ cat > paths.conf << EOF
1570 $ cat > paths.conf << EOF
1571 > [paths]
1571 > [paths]
1572 > /dir1/a_repo = $root/a
1572 > /dir1/a_repo = $root/a
1573 > /dir1/a_repo/b_repo = $root/b
1573 > /dir1/a_repo/b_repo = $root/b
1574 > /dir1/dir2/index = $root/b
1574 > /dir1/dir2/index = $root/b
1575 > EOF
1575 > EOF
1576 $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf
1576 $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf
1577 $ cat hg.pid >> $DAEMON_PIDS
1577 $ cat hg.pid >> $DAEMON_PIDS
1578
1578
1579 $ echo 'index file' > $root/a/index
1579 $ echo 'index file' > $root/a/index
1580 $ hg --cwd $root/a ci -Am 'add index file'
1580 $ hg --cwd $root/a ci -Am 'add index file'
1581 adding index
1581 adding index
1582
1582
1583 $ get-with-headers.py localhost:$HGPORT1 '' | grep 'a_repo'
1583 $ get-with-headers.py localhost:$HGPORT1 '' | grep 'a_repo'
1584 <td><a href="/dir1/a_repo/">dir1/a_repo</a></td>
1584 <td><a href="/dir1/a_repo/">dir1/a_repo</a></td>
1585 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1585 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1586 <td><a href="/dir1/a_repo/b_repo/">dir1/a_repo/b_repo</a></td>
1586 <td><a href="/dir1/a_repo/b_repo/">dir1/a_repo/b_repo</a></td>
1587 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1587 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1588
1588
1589 $ get-with-headers.py localhost:$HGPORT1 'index' | grep 'a_repo'
1589 $ get-with-headers.py localhost:$HGPORT1 'index' | grep 'a_repo'
1590 <td><a href="/dir1/a_repo/">dir1/a_repo</a></td>
1590 <td><a href="/dir1/a_repo/">dir1/a_repo</a></td>
1591 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1591 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1592 <td><a href="/dir1/a_repo/b_repo/">dir1/a_repo/b_repo</a></td>
1592 <td><a href="/dir1/a_repo/b_repo/">dir1/a_repo/b_repo</a></td>
1593 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1593 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1594
1594
1595 $ get-with-headers.py localhost:$HGPORT1 'dir1' | grep 'a_repo'
1595 $ get-with-headers.py localhost:$HGPORT1 'dir1' | grep 'a_repo'
1596 <td><a href="/dir1/a_repo/">a_repo</a></td>
1596 <td><a href="/dir1/a_repo/">a_repo</a></td>
1597 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1597 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1598 <td><a href="/dir1/a_repo/b_repo/">a_repo/b_repo</a></td>
1598 <td><a href="/dir1/a_repo/b_repo/">a_repo/b_repo</a></td>
1599 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1599 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1600
1600
1601 $ get-with-headers.py localhost:$HGPORT1 'dir1/index' | grep 'a_repo'
1601 $ get-with-headers.py localhost:$HGPORT1 'dir1/index' | grep 'a_repo'
1602 <td><a href="/dir1/a_repo/">a_repo</a></td>
1602 <td><a href="/dir1/a_repo/">a_repo</a></td>
1603 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1603 <a href="/dir1/a_repo/atom-log" title="subscribe to repository atom feed">
1604 <td><a href="/dir1/a_repo/b_repo/">a_repo/b_repo</a></td>
1604 <td><a href="/dir1/a_repo/b_repo/">a_repo/b_repo</a></td>
1605 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1605 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1606
1606
1607 $ get-with-headers.py localhost:$HGPORT1 'dir1/a_repo' | grep 'a_repo'
1607 $ get-with-headers.py localhost:$HGPORT1 'dir1/a_repo' | grep 'a_repo'
1608 <link rel="icon" href="/dir1/a_repo/static/hgicon.png" type="image/png" />
1608 <link rel="icon" href="/dir1/a_repo/static/hgicon.png" type="image/png" />
1609 <link rel="stylesheet" href="/dir1/a_repo/static/style-paper.css" type="text/css" />
1609 <link rel="stylesheet" href="/dir1/a_repo/static/style-paper.css" type="text/css" />
1610 <script type="text/javascript" src="/dir1/a_repo/static/mercurial.js"></script>
1610 <script type="text/javascript" src="/dir1/a_repo/static/mercurial.js"></script>
1611 <title>dir1/a_repo: log</title>
1611 <title>dir1/a_repo: log</title>
1612 href="/dir1/a_repo/atom-log" title="Atom feed for dir1/a_repo" />
1612 href="/dir1/a_repo/atom-log" title="Atom feed for dir1/a_repo" />
1613 href="/dir1/a_repo/rss-log" title="RSS feed for dir1/a_repo" />
1613 href="/dir1/a_repo/rss-log" title="RSS feed for dir1/a_repo" />
1614 <img src="/dir1/a_repo/static/hglogo.png" alt="mercurial" /></a>
1614 <img src="/dir1/a_repo/static/hglogo.png" alt="mercurial" /></a>
1615 <li><a href="/dir1/a_repo/graph/tip">graph</a></li>
1615 <li><a href="/dir1/a_repo/graph/tip">graph</a></li>
1616 <li><a href="/dir1/a_repo/tags">tags</a></li>
1616 <li><a href="/dir1/a_repo/tags">tags</a></li>
1617 <li><a href="/dir1/a_repo/bookmarks">bookmarks</a></li>
1617 <li><a href="/dir1/a_repo/bookmarks">bookmarks</a></li>
1618 <li><a href="/dir1/a_repo/branches">branches</a></li>
1618 <li><a href="/dir1/a_repo/branches">branches</a></li>
1619 <li><a href="/dir1/a_repo/rev/tip">changeset</a></li>
1619 <li><a href="/dir1/a_repo/rev/tip">changeset</a></li>
1620 <li><a href="/dir1/a_repo/file/tip">browse</a></li>
1620 <li><a href="/dir1/a_repo/file/tip">browse</a></li>
1621 <li><a href="/dir1/a_repo/help">help</a></li>
1621 <li><a href="/dir1/a_repo/help">help</a></li>
1622 <a href="/dir1/a_repo/atom-log" title="subscribe to atom feed">
1622 <a href="/dir1/a_repo/atom-log" title="subscribe to atom feed">
1623 <img class="atom-logo" src="/dir1/a_repo/static/feed-icon-14x14.png" alt="atom feed" />
1623 <img class="atom-logo" src="/dir1/a_repo/static/feed-icon-14x14.png" alt="atom feed" />
1624 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/dir1">dir1</a> &gt; <a href="/dir1/a_repo">a_repo</a> </h2>
1624 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/dir1">dir1</a> &gt; <a href="/dir1/a_repo">a_repo</a> </h2>
1625 <form class="search" action="/dir1/a_repo/log">
1625 <form class="search" action="/dir1/a_repo/log">
1626 number or hash, or <a href="/dir1/a_repo/help/revsets">revset expression</a>.</div>
1626 number or hash, or <a href="/dir1/a_repo/help/revsets">revset expression</a>.</div>
1627 <a href="/dir1/a_repo/shortlog/tip?revcount=30">less</a>
1627 <a href="/dir1/a_repo/shortlog/tip?revcount=30">less</a>
1628 <a href="/dir1/a_repo/shortlog/tip?revcount=120">more</a>
1628 <a href="/dir1/a_repo/shortlog/tip?revcount=120">more</a>
1629 | rev 1: <a href="/dir1/a_repo/shortlog/8580ff50825a">(0)</a> <a href="/dir1/a_repo/shortlog/tip">tip</a>
1629 | rev 1: <a href="/dir1/a_repo/shortlog/8580ff50825a">(0)</a> <a href="/dir1/a_repo/shortlog/tip">tip</a>
1630 <a href="/dir1/a_repo/rev/71a89161f014">add index file</a>
1630 <a href="/dir1/a_repo/rev/71a89161f014">add index file</a>
1631 <a href="/dir1/a_repo/rev/8580ff50825a">a</a>
1631 <a href="/dir1/a_repo/rev/8580ff50825a">a</a>
1632 <a href="/dir1/a_repo/shortlog/tip?revcount=30">less</a>
1632 <a href="/dir1/a_repo/shortlog/tip?revcount=30">less</a>
1633 <a href="/dir1/a_repo/shortlog/tip?revcount=120">more</a>
1633 <a href="/dir1/a_repo/shortlog/tip?revcount=120">more</a>
1634 | rev 1: <a href="/dir1/a_repo/shortlog/8580ff50825a">(0)</a> <a href="/dir1/a_repo/shortlog/tip">tip</a>
1634 | rev 1: <a href="/dir1/a_repo/shortlog/8580ff50825a">(0)</a> <a href="/dir1/a_repo/shortlog/tip">tip</a>
1635 '/dir1/a_repo/shortlog/%next%',
1635 '/dir1/a_repo/shortlog/%next%',
1636
1636
1637 $ get-with-headers.py localhost:$HGPORT1 'dir1/a_repo/index' | grep 'a_repo'
1637 $ get-with-headers.py localhost:$HGPORT1 'dir1/a_repo/index' | grep 'a_repo'
1638 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/dir1">dir1</a> &gt; <a href="/dir1/a_repo">a_repo</a> </h2>
1638 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/dir1">dir1</a> &gt; <a href="/dir1/a_repo">a_repo</a> </h2>
1639 <td><a href="/dir1/a_repo/b_repo/">b_repo</a></td>
1639 <td><a href="/dir1/a_repo/b_repo/">b_repo</a></td>
1640 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1640 <a href="/dir1/a_repo/b_repo/atom-log" title="subscribe to repository atom feed">
1641
1641
1642 Files named 'index' are not blocked
1642 Files named 'index' are not blocked
1643
1643
1644 $ get-with-headers.py localhost:$HGPORT1 'dir1/a_repo/raw-file/tip/index'
1644 $ get-with-headers.py localhost:$HGPORT1 'dir1/a_repo/raw-file/tip/index'
1645 200 Script output follows
1645 200 Script output follows
1646
1646
1647 index file
1647 index file
1648
1648
1649 Repos named 'index' take precedence over the index file
1649 Repos named 'index' take precedence over the index file
1650
1650
1651 $ get-with-headers.py localhost:$HGPORT1 'dir1/dir2/index' | grep 'index'
1651 $ get-with-headers.py localhost:$HGPORT1 'dir1/dir2/index' | grep 'index'
1652 <link rel="icon" href="/dir1/dir2/index/static/hgicon.png" type="image/png" />
1652 <link rel="icon" href="/dir1/dir2/index/static/hgicon.png" type="image/png" />
1653 <meta name="robots" content="index, nofollow" />
1653 <meta name="robots" content="index, nofollow" />
1654 <link rel="stylesheet" href="/dir1/dir2/index/static/style-paper.css" type="text/css" />
1654 <link rel="stylesheet" href="/dir1/dir2/index/static/style-paper.css" type="text/css" />
1655 <script type="text/javascript" src="/dir1/dir2/index/static/mercurial.js"></script>
1655 <script type="text/javascript" src="/dir1/dir2/index/static/mercurial.js"></script>
1656 <title>dir1/dir2/index: log</title>
1656 <title>dir1/dir2/index: log</title>
1657 href="/dir1/dir2/index/atom-log" title="Atom feed for dir1/dir2/index" />
1657 href="/dir1/dir2/index/atom-log" title="Atom feed for dir1/dir2/index" />
1658 href="/dir1/dir2/index/rss-log" title="RSS feed for dir1/dir2/index" />
1658 href="/dir1/dir2/index/rss-log" title="RSS feed for dir1/dir2/index" />
1659 <img src="/dir1/dir2/index/static/hglogo.png" alt="mercurial" /></a>
1659 <img src="/dir1/dir2/index/static/hglogo.png" alt="mercurial" /></a>
1660 <li><a href="/dir1/dir2/index/graph/tip">graph</a></li>
1660 <li><a href="/dir1/dir2/index/graph/tip">graph</a></li>
1661 <li><a href="/dir1/dir2/index/tags">tags</a></li>
1661 <li><a href="/dir1/dir2/index/tags">tags</a></li>
1662 <li><a href="/dir1/dir2/index/bookmarks">bookmarks</a></li>
1662 <li><a href="/dir1/dir2/index/bookmarks">bookmarks</a></li>
1663 <li><a href="/dir1/dir2/index/branches">branches</a></li>
1663 <li><a href="/dir1/dir2/index/branches">branches</a></li>
1664 <li><a href="/dir1/dir2/index/rev/tip">changeset</a></li>
1664 <li><a href="/dir1/dir2/index/rev/tip">changeset</a></li>
1665 <li><a href="/dir1/dir2/index/file/tip">browse</a></li>
1665 <li><a href="/dir1/dir2/index/file/tip">browse</a></li>
1666 <li><a href="/dir1/dir2/index/help">help</a></li>
1666 <li><a href="/dir1/dir2/index/help">help</a></li>
1667 <a href="/dir1/dir2/index/atom-log" title="subscribe to atom feed">
1667 <a href="/dir1/dir2/index/atom-log" title="subscribe to atom feed">
1668 <img class="atom-logo" src="/dir1/dir2/index/static/feed-icon-14x14.png" alt="atom feed" />
1668 <img class="atom-logo" src="/dir1/dir2/index/static/feed-icon-14x14.png" alt="atom feed" />
1669 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/dir1">dir1</a> &gt; <a href="/dir1/dir2">dir2</a> &gt; <a href="/dir1/dir2/index">index</a> </h2>
1669 <h2 class="breadcrumb"><a href="/">Mercurial</a> &gt; <a href="/dir1">dir1</a> &gt; <a href="/dir1/dir2">dir2</a> &gt; <a href="/dir1/dir2/index">index</a> </h2>
1670 <form class="search" action="/dir1/dir2/index/log">
1670 <form class="search" action="/dir1/dir2/index/log">
1671 number or hash, or <a href="/dir1/dir2/index/help/revsets">revset expression</a>.</div>
1671 number or hash, or <a href="/dir1/dir2/index/help/revsets">revset expression</a>.</div>
1672 <a href="/dir1/dir2/index/shortlog/tip?revcount=30">less</a>
1672 <a href="/dir1/dir2/index/shortlog/tip?revcount=30">less</a>
1673 <a href="/dir1/dir2/index/shortlog/tip?revcount=120">more</a>
1673 <a href="/dir1/dir2/index/shortlog/tip?revcount=120">more</a>
1674 | rev 0: <a href="/dir1/dir2/index/shortlog/39505516671b">(0)</a> <a href="/dir1/dir2/index/shortlog/tip">tip</a>
1674 | rev 0: <a href="/dir1/dir2/index/shortlog/39505516671b">(0)</a> <a href="/dir1/dir2/index/shortlog/tip">tip</a>
1675 <a href="/dir1/dir2/index/rev/39505516671b">b</a>
1675 <a href="/dir1/dir2/index/rev/39505516671b">b</a>
1676 <a href="/dir1/dir2/index/shortlog/tip?revcount=30">less</a>
1676 <a href="/dir1/dir2/index/shortlog/tip?revcount=30">less</a>
1677 <a href="/dir1/dir2/index/shortlog/tip?revcount=120">more</a>
1677 <a href="/dir1/dir2/index/shortlog/tip?revcount=120">more</a>
1678 | rev 0: <a href="/dir1/dir2/index/shortlog/39505516671b">(0)</a> <a href="/dir1/dir2/index/shortlog/tip">tip</a>
1678 | rev 0: <a href="/dir1/dir2/index/shortlog/39505516671b">(0)</a> <a href="/dir1/dir2/index/shortlog/tip">tip</a>
1679 '/dir1/dir2/index/shortlog/%next%',
1679 '/dir1/dir2/index/shortlog/%next%',
1680
1680
1681 $ killdaemons.py
1681 $ killdaemons.py
1682
1682
1683 paths errors 1
1683 paths errors 1
1684
1684
1685 $ cat error-paths-1.log
1685 $ cat error-paths-1.log
1686
1686
1687 paths errors 2
1687 paths errors 2
1688
1688
1689 $ cat error-paths-2.log
1689 $ cat error-paths-2.log
1690
1690
1691 paths errors 3
1691 paths errors 3
1692
1692
1693 $ cat error-paths-3.log
1693 $ cat error-paths-3.log
1694
1694
1695 paths errors 4
1695 paths errors 4
1696
1696
1697 $ cat error-paths-4.log
1697 $ cat error-paths-4.log
1698
1698
1699 paths errors 5
1699 paths errors 5
1700
1700
1701 $ cat error-paths-5.log
1701 $ cat error-paths-5.log
1702
1702
1703 paths errors 6
1703 paths errors 6
1704
1704
1705 $ cat error-paths-6.log
1705 $ cat error-paths-6.log
1706
1706
1707 paths errors 7
1707 paths errors 7
1708
1708
1709 $ cat error-paths-7.log
1709 $ cat error-paths-7.log
1710
1710
1711 paths errors 8
1711 paths errors 8
1712
1712
1713 $ cat error-paths-8.log
1713 $ cat error-paths-8.log
1714
1714
1715 paths errors 9
1715 paths errors 9
1716
1716
1717 $ cat error-paths-9.log
1717 $ cat error-paths-9.log
1718
1718
1719 paths errors 10
1719 paths errors 10
1720
1720
1721 $ cat error-paths-10.log
1721 $ cat error-paths-10.log
1722
1722
1723 collections errors
1723 collections errors
1724
1724
1725 $ cat error-collections.log
1725 $ cat error-collections.log
1726
1726
1727 collections errors 2
1727 collections errors 2
1728
1728
1729 $ cat error-collections-2.log
1729 $ cat error-collections-2.log
@@ -1,124 +1,124 b''
1 #require serve ssl
1 #require serve ssl
2
2
3 Set up SMTP server:
3 Set up SMTP server:
4
4
5 $ CERTSDIR="$TESTDIR/sslcerts"
5 $ CERTSDIR="$TESTDIR/sslcerts"
6 $ cat "$CERTSDIR/priv.pem" "$CERTSDIR/pub.pem" >> server.pem
6 $ cat "$CERTSDIR/priv.pem" "$CERTSDIR/pub.pem" >> server.pem
7
7
8 $ python "$TESTDIR/dummysmtpd.py" -p $HGPORT --pid-file a.pid -d \
8 $ python "$TESTDIR/dummysmtpd.py" -p $HGPORT --pid-file a.pid -d \
9 > --tls smtps --certificate `pwd`/server.pem
9 > --tls smtps --certificate `pwd`/server.pem
10 listening at localhost:$HGPORT
10 listening at localhost:$HGPORT (?)
11 $ cat a.pid >> $DAEMON_PIDS
11 $ cat a.pid >> $DAEMON_PIDS
12
12
13 Set up repository:
13 Set up repository:
14
14
15 $ hg init t
15 $ hg init t
16 $ cd t
16 $ cd t
17 $ cat <<EOF >> .hg/hgrc
17 $ cat <<EOF >> .hg/hgrc
18 > [extensions]
18 > [extensions]
19 > patchbomb =
19 > patchbomb =
20 > [email]
20 > [email]
21 > method = smtp
21 > method = smtp
22 > [smtp]
22 > [smtp]
23 > host = localhost
23 > host = localhost
24 > port = $HGPORT
24 > port = $HGPORT
25 > tls = smtps
25 > tls = smtps
26 > EOF
26 > EOF
27
27
28 $ echo a > a
28 $ echo a > a
29 $ hg commit -Ama -d '1 0'
29 $ hg commit -Ama -d '1 0'
30 adding a
30 adding a
31
31
32 Utility functions:
32 Utility functions:
33
33
34 $ DISABLECACERTS=
34 $ DISABLECACERTS=
35 $ try () {
35 $ try () {
36 > hg email $DISABLECACERTS -f quux -t foo -c bar -r tip "$@"
36 > hg email $DISABLECACERTS -f quux -t foo -c bar -r tip "$@"
37 > }
37 > }
38
38
39 Our test cert is not signed by a trusted CA. It should fail to verify if
39 Our test cert is not signed by a trusted CA. It should fail to verify if
40 we are able to load CA certs:
40 we are able to load CA certs:
41
41
42 #if sslcontext defaultcacerts no-defaultcacertsloaded
42 #if sslcontext defaultcacerts no-defaultcacertsloaded
43 $ try
43 $ try
44 this patch series consists of 1 patches.
44 this patch series consists of 1 patches.
45
45
46
46
47 (an attempt was made to load CA certificates but none were loaded; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error)
47 (an attempt was made to load CA certificates but none were loaded; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error)
48 (?i)abort: .*?certificate.verify.failed.* (re)
48 (?i)abort: .*?certificate.verify.failed.* (re)
49 [255]
49 [255]
50 #endif
50 #endif
51
51
52 #if no-sslcontext defaultcacerts
52 #if no-sslcontext defaultcacerts
53 $ try
53 $ try
54 this patch series consists of 1 patches.
54 this patch series consists of 1 patches.
55
55
56
56
57 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info
57 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info
58 (using CA certificates from *; if you see this message, your Mercurial install is not properly configured; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this message) (glob) (?)
58 (using CA certificates from *; if you see this message, your Mercurial install is not properly configured; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this message) (glob) (?)
59 (?i)abort: .*?certificate.verify.failed.* (re)
59 (?i)abort: .*?certificate.verify.failed.* (re)
60 [255]
60 [255]
61 #endif
61 #endif
62
62
63 #if defaultcacertsloaded
63 #if defaultcacertsloaded
64 $ try
64 $ try
65 this patch series consists of 1 patches.
65 this patch series consists of 1 patches.
66
66
67
67
68 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
68 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
69 (using CA certificates from *; if you see this message, your Mercurial install is not properly configured; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this message) (glob) (?)
69 (using CA certificates from *; if you see this message, your Mercurial install is not properly configured; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this message) (glob) (?)
70 (?i)abort: .*?certificate.verify.failed.* (re)
70 (?i)abort: .*?certificate.verify.failed.* (re)
71 [255]
71 [255]
72
72
73 #endif
73 #endif
74
74
75 #if no-defaultcacerts
75 #if no-defaultcacerts
76 $ try
76 $ try
77 this patch series consists of 1 patches.
77 this patch series consists of 1 patches.
78
78
79
79
80 (unable to load * certificates; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this message) (glob) (?)
80 (unable to load * certificates; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this message) (glob) (?)
81 abort: localhost certificate error: no certificate received
81 abort: localhost certificate error: no certificate received
82 (set hostsecurity.localhost:certfingerprints=sha256:62:09:97:2f:97:60:e3:65:8f:12:5d:78:9e:35:a1:36:7a:65:4b:0e:9f:ac:db:c3:bc:6e:b6:a3:c0:16:e0:30 config setting or use --insecure to connect insecurely)
82 (set hostsecurity.localhost:certfingerprints=sha256:62:09:97:2f:97:60:e3:65:8f:12:5d:78:9e:35:a1:36:7a:65:4b:0e:9f:ac:db:c3:bc:6e:b6:a3:c0:16:e0:30 config setting or use --insecure to connect insecurely)
83 [255]
83 [255]
84 #endif
84 #endif
85
85
86 $ DISABLECACERTS="--config devel.disableloaddefaultcerts=true"
86 $ DISABLECACERTS="--config devel.disableloaddefaultcerts=true"
87
87
88 Without certificates:
88 Without certificates:
89
89
90 $ try --debug
90 $ try --debug
91 this patch series consists of 1 patches.
91 this patch series consists of 1 patches.
92
92
93
93
94 (using smtps)
94 (using smtps)
95 sending mail: smtp host localhost, port * (glob)
95 sending mail: smtp host localhost, port * (glob)
96 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
96 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
97 (verifying remote certificate)
97 (verifying remote certificate)
98 abort: unable to verify security of localhost (no loaded CA certificates); refusing to connect
98 abort: unable to verify security of localhost (no loaded CA certificates); refusing to connect
99 (see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error or set hostsecurity.localhost:fingerprints=sha256:20:de:b3:ad:b4:cd:a5:42:f0:74:41:1c:a2:70:1e:da:6e:c0:5c:16:9e:e7:22:0f:f1:b7:e5:6e:e4:92:af:7e to trust this server)
99 (see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error or set hostsecurity.localhost:fingerprints=sha256:20:de:b3:ad:b4:cd:a5:42:f0:74:41:1c:a2:70:1e:da:6e:c0:5c:16:9e:e7:22:0f:f1:b7:e5:6e:e4:92:af:7e to trust this server)
100 [255]
100 [255]
101
101
102 With global certificates:
102 With global certificates:
103
103
104 $ try --debug --config web.cacerts="$CERTSDIR/pub.pem"
104 $ try --debug --config web.cacerts="$CERTSDIR/pub.pem"
105 this patch series consists of 1 patches.
105 this patch series consists of 1 patches.
106
106
107
107
108 (using smtps)
108 (using smtps)
109 sending mail: smtp host localhost, port * (glob)
109 sending mail: smtp host localhost, port * (glob)
110 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
110 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
111 (verifying remote certificate)
111 (verifying remote certificate)
112 sending [PATCH] a ...
112 sending [PATCH] a ...
113
113
114 With invalid certificates:
114 With invalid certificates:
115
115
116 $ try --config web.cacerts="$CERTSDIR/pub-other.pem"
116 $ try --config web.cacerts="$CERTSDIR/pub-other.pem"
117 this patch series consists of 1 patches.
117 this patch series consists of 1 patches.
118
118
119
119
120 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
120 warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
121 (?i)abort: .*?certificate.verify.failed.* (re)
121 (?i)abort: .*?certificate.verify.failed.* (re)
122 [255]
122 [255]
123
123
124 $ cd ..
124 $ cd ..
@@ -1,81 +1,81 b''
1 #require serve
1 #require serve
2
2
3 $ hgserve()
3 $ hgserve()
4 > {
4 > {
5 > hg serve -a localhost -d --pid-file=hg.pid -E errors.log -v $@ \
5 > hg serve -a localhost -d --pid-file=hg.pid -E errors.log -v $@ \
6 > | sed -e "s/:$HGPORT1\\([^0-9]\\)/:HGPORT1\1/g" \
6 > | sed -e "s/:$HGPORT1\\([^0-9]\\)/:HGPORT1\1/g" \
7 > -e "s/:$HGPORT2\\([^0-9]\\)/:HGPORT2\1/g" \
7 > -e "s/:$HGPORT2\\([^0-9]\\)/:HGPORT2\1/g" \
8 > -e 's/http:\/\/[^/]*\//http:\/\/localhost\//'
8 > -e 's/http:\/\/[^/]*\//http:\/\/localhost\//'
9 > cat hg.pid >> "$DAEMON_PIDS"
9 > cat hg.pid >> "$DAEMON_PIDS"
10 > echo % errors
10 > echo % errors
11 > cat errors.log
11 > cat errors.log
12 > killdaemons.py hg.pid
12 > killdaemons.py hg.pid
13 > }
13 > }
14
14
15 $ hg init test
15 $ hg init test
16 $ cd test
16 $ cd test
17 $ echo '[web]' > .hg/hgrc
17 $ echo '[web]' > .hg/hgrc
18 $ echo 'accesslog = access.log' >> .hg/hgrc
18 $ echo 'accesslog = access.log' >> .hg/hgrc
19 $ echo "port = $HGPORT1" >> .hg/hgrc
19 $ echo "port = $HGPORT1" >> .hg/hgrc
20
20
21 Without -v
21 Without -v
22
22
23 $ hg serve -a localhost -p $HGPORT -d --pid-file=hg.pid -E errors.log
23 $ hg serve -a localhost -p $HGPORT -d --pid-file=hg.pid -E errors.log
24 $ cat hg.pid >> "$DAEMON_PIDS"
24 $ cat hg.pid >> "$DAEMON_PIDS"
25 $ if [ -f access.log ]; then
25 $ if [ -f access.log ]; then
26 > echo 'access log created - .hg/hgrc respected'
26 > echo 'access log created - .hg/hgrc respected'
27 > fi
27 > fi
28 access log created - .hg/hgrc respected
28 access log created - .hg/hgrc respected
29
29
30 errors
30 errors
31
31
32 $ cat errors.log
32 $ cat errors.log
33
33
34 With -v
34 With -v
35
35
36 $ hgserve
36 $ hgserve
37 listening at http://localhost/ (bound to *$LOCALIP*:HGPORT1) (glob)
37 listening at http://localhost/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
38 % errors
38 % errors
39
39
40 With -v and -p HGPORT2
40 With -v and -p HGPORT2
41
41
42 $ hgserve -p "$HGPORT2"
42 $ hgserve -p "$HGPORT2"
43 listening at http://localhost/ (bound to *$LOCALIP*:HGPORT2) (glob)
43 listening at http://localhost/ (bound to *$LOCALIP*:HGPORT2) (glob) (?)
44 % errors
44 % errors
45
45
46 With -v and -p daytime (should fail because low port)
46 With -v and -p daytime (should fail because low port)
47
47
48 #if no-root
48 #if no-root
49 $ KILLQUIETLY=Y
49 $ KILLQUIETLY=Y
50 $ hgserve -p daytime
50 $ hgserve -p daytime
51 abort: cannot start server at 'localhost:13': Permission denied
51 abort: cannot start server at 'localhost:13': Permission denied
52 abort: child process failed to start
52 abort: child process failed to start
53 % errors
53 % errors
54 $ KILLQUIETLY=N
54 $ KILLQUIETLY=N
55 #endif
55 #endif
56
56
57 With --prefix foo
57 With --prefix foo
58
58
59 $ hgserve --prefix foo
59 $ hgserve --prefix foo
60 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob)
60 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
61 % errors
61 % errors
62
62
63 With --prefix /foo
63 With --prefix /foo
64
64
65 $ hgserve --prefix /foo
65 $ hgserve --prefix /foo
66 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob)
66 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
67 % errors
67 % errors
68
68
69 With --prefix foo/
69 With --prefix foo/
70
70
71 $ hgserve --prefix foo/
71 $ hgserve --prefix foo/
72 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob)
72 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
73 % errors
73 % errors
74
74
75 With --prefix /foo/
75 With --prefix /foo/
76
76
77 $ hgserve --prefix /foo/
77 $ hgserve --prefix /foo/
78 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob)
78 listening at http://localhost/foo/ (bound to *$LOCALIP*:HGPORT1) (glob) (?)
79 % errors
79 % errors
80
80
81 $ cd ..
81 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now