changeset 7348:1a5c9ca2bfd5

merge with mpm
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Sat, 08 Nov 2008 00:29:04 +0100
parents bc158cd800fa (diff) 55651328dfcc (current diff)
children f711b8e0d2b3
files mercurial/hgweb/hgweb_mod.py tests/test-hgweb-commands.out
diffstat 57 files changed, 1732 insertions(+), 1340 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hgweb/hgweb_mod.py	Fri Nov 07 23:31:12 2008 +0100
+++ b/mercurial/hgweb/hgweb_mod.py	Sat Nov 08 00:29:04 2008 +0100
@@ -231,7 +231,7 @@
         # figure out which style to use
 
         vars = {}
-        style = self.config("web", "style", "")
+        style = self.config("web", "style", "paper")
         if 'style' in req.form:
             style = req.form['style'][0]
             vars['style'] = style
--- a/mercurial/hgweb/hgwebdir_mod.py	Fri Nov 07 23:31:12 2008 +0100
+++ b/mercurial/hgweb/hgwebdir_mod.py	Sat Nov 08 00:29:04 2008 +0100
@@ -25,7 +25,7 @@
         self.parentui = parentui or ui.ui(report_untrusted=False,
                                           interactive = False)
         self.motd = None
-        self.style = None
+        self.style = 'paper'
         self.stripecount = None
         self.repos_sorted = ('name', False)
         self._baseurl = None
--- a/mercurial/httprepo.py	Fri Nov 07 23:31:12 2008 +0100
+++ b/mercurial/httprepo.py	Sat Nov 08 00:29:04 2008 +0100
@@ -148,13 +148,16 @@
             raise util.UnexpectedOutput(_("unexpected response:"), d)
 
     def between(self, pairs):
-        n = " ".join(["-".join(map(hex, p)) for p in pairs])
-        d = self.do_read("between", pairs=n)
-        try:
-            p = [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ]
-            return p
-        except:
-            raise util.UnexpectedOutput(_("unexpected response:"), d)
+        batch = 8 # avoid giant requests
+        r = []
+        for i in xrange(0, len(pairs), batch):
+            n = " ".join(["-".join(map(hex, p)) for p in pairs[i:i + batch]])
+            d = self.do_read("between", pairs=n)
+            try:
+                r += [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ]
+            except:
+                raise util.UnexpectedOutput(_("unexpected response:"), d)
+        return r
 
     def changegroup(self, nodes, kind):
         n = " ".join(map(hex, nodes))
--- a/templates/changelog.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#header#
-<title>#repo|escape#: changelog</title>
-<link rel="alternate" type="application/atom+xml"
-   href="#url#atom-log" title="Atom feed for #repo|escape#">
-<link rel="alternate" type="application/rss+xml"
-   href="#url#rss-log" title="RSS feed for #repo|escape#">
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
-#archives%archiveentry#
-<a type="application/rss+xml" href="#url#rss-log">rss</a>
-<a type="application/atom+xml" href="#url#atom-log" title="Atom feed for #repo|escape#">atom</a>
-</div>
-
-<h2>changelog for #repo|escape#</h2>
-
-<form action="#url#log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">#changenav%naventry#</small>
-</p>
-</form>
-
-#entries%changelogentry#
-
-<form action="#url#log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search2">search:</label>
-<input name="rev" id="search2" type="text" size="30">
-navigate: <small class="navigate">#changenav%naventry#</small>
-</p>
-</form>
-
-#footer#
--- a/templates/changelogentry.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<table class="logEntry parity#parity#">
- <tr>
-  <th class="age">#date|age# ago:</th>
-  <th class="firstline">#desc|strip|firstline|escape#</th>
- </tr>
- <tr>
-  <th class="revision">changeset #rev#:</th>
-  <td class="node"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td>
- </tr>
- #parent%changelogparent#
- #child%changelogchild#
- #changelogtag#
- <tr>
-  <th class="author">author:</th>
-  <td class="author">#author|obfuscate#</td>
- </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">#date|date#</td>
- </tr>
- <tr>
-  <th class="files"><a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>:</th>
-  <td class="files">#files#</td>
- </tr>
-</table>
--- a/templates/changeset.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-#header#
-<title>#repo|escape#: changeset #node|short#</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
-<a href="#url#raw-rev/#node|short#">raw</a>
-#archives%archiveentry#
-</div>
-
-<h2>changeset: #desc|strip|escape|firstline#</h2>
-
-<table id="changesetEntry">
-<tr>
- <th class="changeset">changeset #rev#:</th>
- <td class="changeset"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td>
-</tr>
-#parent%changesetparent#
-#child%changesetchild#
-#changesettag#
-<tr>
- <th class="author">author:</th>
- <td class="author">#author|obfuscate#</td>
-</tr>
-<tr>
- <th class="date">date:</th>
- <td class="date">#date|date# (#date|age# ago)</td>
-</tr>
-<tr>
- <th class="files">files:</th>
- <td class="files">#files#</td>
-</tr>
-<tr>
- <th class="description">description:</th>
- <td class="description">#desc|strip|escape|addbreaks#</td>
-</tr>
-</table>
-
-<div id="changesetDiff">
-#diff#
-</div>
-
-#footer#
-
-
--- a/templates/error.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-#header#
-<title>Mercurial Error</title>
-</head>
-<body>
-
-<h2>Mercurial Error</h2>
-
-<p>
-An error occurred while processing your request:
-</p>
-<p>
-#error|escape#
-</p>
-
-#footer#
--- a/templates/fileannotate.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-#header#
-<title>#repo|escape#: #file|escape# annotate</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
-<a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a>
-<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
-<a href="#url#log/#node|short#/#file|urlescape#{sessionvars%urlparameter}">revisions</a>
-<a href="#url#raw-annotate/#node|short#/#file|urlescape#">raw</a>
-</div>
-
-<h2>Annotate #file|escape#</h2>
-
-<table>
-<tr>
- <td class="metatag">changeset #rev#:</td>
- <td><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>
-#parent%fileannotateparent#
-#child%fileannotatechild#
-<tr>
- <td class="metatag">author:</td>
- <td>#author|obfuscate#</td></tr>
-<tr>
- <td class="metatag">date:</td>
- <td>#date|date# (#date|age# ago)</td>
-</tr>
-<tr>
- <td class="metatag">permissions:</td>
- <td>#permissions|permissions#</td>
-</tr>
-<tr>
-  <td class="metatag">description:</td>
-  <td>{desc|strip|escape|addbreaks}</td>
-</tr>
-</table>
-
-<br/>
-
-<table cellspacing="0" cellpadding="0">
-#annotate%annotateline#
-</table>
-
-#footer#
--- a/templates/filediff.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#header#
-<title>#repo|escape#: #file|escape# diff</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
-<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
-<a href="#url#log/#node|short#/#file|urlescape#{sessionvars%urlparameter}">revisions</a>
-<a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">annotate</a>
-<a href="#url#raw-diff/#node|short#/#file|urlescape#">raw</a>
-</div>
-
-<h2>#file|escape#</h2>
-
-<table id="filediffEntry">
-<tr>
- <th class="revision">revision #rev#:</th>
- <td class="revision"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td>
-</tr>
-#parent%filediffparent#
-#child%filediffchild#
-</table>
-
-<div id="fileDiff">
-#diff#
-</div>
-
-#footer#
-
-
--- a/templates/filelog.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#header#
-<title>#repo|escape#: #file|escape# history</title>
-<link rel="alternate" type="application/atom+xml"
-   href="#url#atom-log/tip/#file|urlescape#" title="Atom feed for #repo|escape#:#file#">
-<link rel="alternate" type="application/rss+xml"
-   href="#url#rss-log/tip/#file|urlescape#" title="RSS feed for #repo|escape#:#file#">
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
-<a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">annotate</a>
-<a type="application/rss+xml" href="#url#rss-log/tip/#file|urlescape#">rss</a>
-<a type="application/atom+xml" href="#url#atom-log/tip/#file|urlescape#" title="Atom feed for #repo|escape#:#file#">atom</a>
-</div>
-
-<h2>#file|escape# revision history</h2>
-
-<p>navigate: <small class="navigate">{nav%filenaventry}</small></p>
-
-#entries%filelogentry#
-
-#footer#
--- a/templates/filelogentry.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<table class="logEntry parity#parity#">
- <tr>
-  <th class="age">#date|age# ago:</th>
-  <th class="firstline"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#desc|strip|firstline|escape#</a></th>
- </tr>
- <tr>
-  <th class="revision">revision #filerev#:</td>
-  <td class="node">
-   <a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a>
-   <a href="#url#diff/#node|short#/#file|urlescape#{sessionvars%urlparameter}">(diff)</a>
-   <a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">(annotate)</a>
-  </td>
- </tr>
- #rename%filelogrename#
- <tr>
-  <th class="author">author:</th>
-  <td class="author">#author|obfuscate#</td>
- </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">#date|date#</td>
- </tr>
-</table>
-
-
--- a/templates/filerevision.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#header#
-<title>#repo|escape#:#file|escape#</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
-<a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a>
-<a href="#url#log/#node|short#/#file|urlescape#{sessionvars%urlparameter}">revisions</a>
-<a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">annotate</a>
-<a href="#url#raw-file/#node|short#/#file|urlescape#">raw</a>
-</div>
-
-<h2>#file|escape#</h2>
-
-<table>
-<tr>
- <td class="metatag">changeset #rev#:</td>
- <td><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>
-#parent%filerevparent#
-#child%filerevchild#
-<tr>
- <td class="metatag">author:</td>
- <td>#author|obfuscate#</td></tr>
-<tr>
- <td class="metatag">date:</td>
- <td>#date|date# (#date|age# ago)</td></tr>
-<tr>
- <td class="metatag">permissions:</td>
- <td>#permissions|permissions#</td></tr>
-<tr>
-  <td class="metatag">description:</td>
-  <td>{desc|strip|escape|addbreaks}</td>
-</tr>
-</table>
-
-<pre>
-#text%fileline#
-</pre>
-
-#footer#
--- a/templates/footer.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-#motd#
-<div class="logo">
-<a href="http://www.selenic.com/mercurial/">
-<img src="#staticurl#hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
-
-</body>
-</html>
--- a/templates/graph.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-#header#
-<title>#repo|escape#: graph</title>
-<link rel="alternate" type="application/atom+xml"
-   href="#url#atom-tags" title="Atom feed for #repo|escape#: tags">
-<link rel="alternate" type="application/rss+xml"
-   href="#url#rss-tags" title="RSS feed for #repo|escape#: tags">
-<!--[if IE]><script type="text/javascript" src="#staticurl#excanvas.js"></script><![endif]-->
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
-</div>
-
-<h2>graph</h2>
-
-<form action="#url#log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">#changenav%navgraphentry#</small>
-</p>
-</form>
-
-<noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
-
-<div id="wrapper">
-<ul id="nodebgs"></ul>
-<canvas id="graph" width="224" height="#canvasheight#"></canvas>
-<ul id="graphnodes"></ul>
-</div>
-
-<script type="text/javascript" src="#staticurl#graph.js"></script>
-<script type="text/javascript">
-<!-- hide script content
-
-var data = {jsdata|json};
-var graph = new Graph();
-graph.scale({bg_height});
-
-graph.edge = function(x0, y0, x1, y1, color) {
-	
-	this.setColor(color, 0.0, 0.65);
-	this.ctx.beginPath();
-	this.ctx.moveTo(x0, y0);
-	this.ctx.lineTo(x1, y1);
-	this.ctx.stroke();
-	
-}
-
-var revlink = '<li style="_STYLE"><span class="desc">';
-revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
-revlink += '</span><span class="info">_DATE ago, by _USER</span></li>';
-
-graph.vertex = function(x, y, color, parity, cur) {
-	
-	this.ctx.beginPath();
-	color = this.setColor(color, 0.25, 0.75);
-	this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
-	this.ctx.fill();
-	
-	var bg = '<li class="bg parity' + parity + '"></li>';
-	var left = (this.columns + 1) * this.bg_height;
-	var nstyle = 'padding-left: ' + left + 'px;';
-	var item = revlink.replace(/_STYLE/, nstyle);
-	item = item.replace(/_PARITY/, 'parity' + parity);
-	item = item.replace(/_NODEID/, cur[0]);
-	item = item.replace(/_NODEID/, cur[0]);
-	item = item.replace(/_DESC/, cur[3]);
-	item = item.replace(/_USER/, cur[4]);
-	item = item.replace(/_DATE/, cur[5]);
-	
-	return [bg, item];
-	
-}
-
-graph.render(data);
-
-// stop hiding script -->
-</script>
-
-<form action="#url#log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">#changenav%navgraphentry#</small>
-</p>
-</form>
-
-#footer#
--- a/templates/header.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<link rel="icon" href="#staticurl#hgicon.png" type="image/png">
-<meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="#staticurl#style.css" type="text/css" />
--- a/templates/index.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#header#
-<title>Mercurial repositories index</title>
-</head>
-<body>
-
-<h2>Mercurial Repositories</h2>
-
-<table>
-    <tr>
-        <td><a href="?sort=#sort_name#">Name</a></td>
-        <td><a href="?sort=#sort_description#">Description</a></td>
-        <td><a href="?sort=#sort_contact#">Contact</a></td>
-        <td><a href="?sort=#sort_lastchange#">Last change</a></td>
-        <td>&nbsp;</td>
-    </tr>
-    #entries%indexentry#
-</table>
-
-#footer#
--- a/templates/manifest.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#header#
-<title>#repo|escape#: files for changeset #node|short#</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
-#archives%archiveentry#
-</div>
-
-<h2>files for changeset #node|short#: #path|escape#</h2>
-
-<table cellpadding="0" cellspacing="0">
-<tr class="parity#upparity#">
-  <td><tt>drwxr-xr-x</tt>&nbsp;
-  <td>&nbsp;
-  <td>&nbsp;
-  <td><a href="#url#file/#node|short##up|urlescape#{sessionvars%urlparameter}">[up]</a>
-</tr>
-#dentries%direntry#
-#fentries%fileentry#
-</table>
-#footer#
--- a/templates/map	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-default = 'shortlog'
-mimetype = 'text/html; charset={encoding}'
-header = header.tmpl
-footer = footer.tmpl
-search = search.tmpl
-changelog = changelog.tmpl
-shortlog = shortlog.tmpl
-shortlogentry = shortlogentry.tmpl
-graph = graph.tmpl
-naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
-filedifflink = '<a href="#url#diff/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#file|escape#</a> '
-filenodelink = '<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#file|escape#</a> '
-filenolink = '{file|escape} '
-fileellipses = '...'
-changelogentry = changelogentry.tmpl
-searchentry = changelogentry.tmpl
-changeset = changeset.tmpl
-manifest = manifest.tmpl
-direntry = '<tr class="parity#parity#"><td><tt>drwxr-xr-x</tt>&nbsp;<td>&nbsp;<td>&nbsp;<td><a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">#basename|escape#/</a> <a href="#url#file/#node|short##path|urlescape#/#emptydirs|urlescape#{sessionvars%urlparameter}">#emptydirs|urlescape#</a>'
-fileentry = '<tr class="parity#parity#"><td><tt>#permissions|permissions#</tt>&nbsp;<td align=right><tt class="date">#date|isodate#</tt>&nbsp;<td align=right><tt>#size#</tt>&nbsp;<td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#basename|escape#</a>'
-filerevision = filerevision.tmpl
-fileannotate = fileannotate.tmpl
-filediff = filediff.tmpl
-filelog = filelog.tmpl
-fileline = '<div class="parity#parity#"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</div>'
-filelogentry = filelogentry.tmpl
-annotateline = '<tr class="parity#parity#"><td class="annotate"><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}#l{targetline}" title="{node|short}: {desc|escape|firstline}">#author|user#@#rev#</a></td><td><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a></td><td><pre>#line|escape#</pre></td></tr>'
-difflineplus = '<span class="plusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
-difflineminus = '<span class="minusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
-difflineat = '<span class="atline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
-diffline = '<a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#'
-changelogparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-changesetparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-filerevparent = '<tr><td class="metatag">parent:</td><td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a></td></tr>'
-filerename = '{file|escape}@'
-filelogrename = '<tr><th>base:</th><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#file|escape#@#node|short#</a></td></tr>'
-fileannotateparent = '<tr><td class="metatag">parent:</td><td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a></td></tr>'
-changesetchild = '<tr><th class="child">child #rev#:</th><td class="child"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-changelogchild = '<tr><th class="child">child #rev#:</th><td class="child"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-filerevchild = '<tr><td class="metatag">child:</td><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-fileannotatechild = '<tr><td class="metatag">child:</td><td><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-tags = tags.tmpl
-tagentry = '<li class="tagEntry parity#parity#"><tt class="node">#node#</tt> <a href="#url#rev/#node|short#{sessionvars%urlparameter}">#tag|escape#</a></li>'
-diffblock = '<pre class="parity#parity#">#lines#</pre>'
-changelogtag = '<tr><th class="tag">tag:</th><td class="tag">#tag|escape#</td></tr>'
-changesettag = '<tr><th class="tag">tag:</th><td class="tag">#tag|escape#</td></tr>'
-filediffparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-filelogparent = '<tr><th>parent #rev#:</th><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-filediffchild = '<tr><th class="child">child #rev#:</th><td class="child"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-filelogchild = '<tr><th>child #rev#:</th><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
-indexentry = '<tr class="parity#parity#"><td><a href="#url#{sessionvars%urlparameter}">#name|escape#</a></td><td>#description#</td><td>#contact|obfuscate#</td><td class="age">#lastchange|age# ago</td><td class="indexlinks"><a href="#url#rss-log">RSS</a> <a href="#url#atom-log">Atom</a> #archives%archiveentry#</td></tr>'
-index = index.tmpl
-archiveentry = '<a href="#url#archive/#node|short##extension|urlescape#">#type|escape#</a> '
-notfound = notfound.tmpl
-error = error.tmpl
-urlparameter = '#separator##name#=#value|urlescape#'
-hiddenformentry = '<input type="hidden" name="#name#" value="#value|escape#" />'
--- a/templates/notfound.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#header#
-<title>Mercurial repository not found</title>
-</head>
-<body>
-
-<h2>Mercurial repository not found</h2>
-
-The specified repository "#repo|escape#" is unknown, sorry.
-
-Please go back to the main repository list page.
-
-#footer#
--- a/templates/search.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#header#
-<title>#repo|escape#: searching for #query|escape#</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
-#archives%archiveentry#
-</div>
-
-<h2>searching for #query|escape#</h2>
-
-<form>
-{sessionvars%hiddenformentry}
-<p>
-search:
-<input name="rev" type="text" width="30" value="#query|escape#">
-</p>
-</form>
-
-#entries#
-
-<form>
-{sessionvars%hiddenformentry}
-<p>
-search:
-<input name="rev" type="text" width="30" value="#query|escape#">
-</p>
-</form>
-
-#footer#
--- a/templates/shortlog.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#header#
-<title>#repo|escape#: shortlog</title>
-<link rel="alternate" type="application/atom+xml"
-   href="#url#atom-log" title="Atom feed for #repo|escape#">
-<link rel="alternate" type="application/rss+xml"
-   href="#url#rss-log" title="RSS feed for #repo|escape#">
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#tags{sessionvars%urlparameter}">tags</a>
-<a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
-#archives%archiveentry#
-<a type="application/rss+xml" href="#url#rss-log">rss</a>
-<a type="application/rss+xml" href="#url#atom-log" title="Atom feed for #repo|escape#">atom</a>
-</div>
-
-<h2>shortlog for #repo|escape#</h2>
-
-<form action="#url#log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">#changenav%navshortentry#</small>
-</p>
-</form>
-
-#entries%shortlogentry#
-
-<form action="#url#log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search2">search:</label>
-<input name="rev" id="search2" type="text" size="30">
-navigate: <small class="navigate">#changenav%navshortentry#</small>
-</p>
-</form>
-
-#footer#
--- a/templates/shortlogentry.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<table class="slogEntry parity#parity#">
- <tr>
-  <td class="age">#date|age#</td>
-  <td class="author">#author|person#</td>
-  <td class="node"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#desc|strip|firstline|escape#</a></td>
- </tr>
-</table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/changelog.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,42 @@
+#header#
+<title>#repo|escape#: changelog</title>
+<link rel="alternate" type="application/atom+xml"
+   href="#url#atom-log" title="Atom feed for #repo|escape#">
+<link rel="alternate" type="application/rss+xml"
+   href="#url#rss-log" title="RSS feed for #repo|escape#">
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
+#archives%archiveentry#
+<a type="application/rss+xml" href="#url#rss-log">rss</a>
+<a type="application/atom+xml" href="#url#atom-log" title="Atom feed for #repo|escape#">atom</a>
+</div>
+
+<h2>changelog for #repo|escape#</h2>
+
+<form action="#url#log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">#changenav%naventry#</small>
+</p>
+</form>
+
+#entries%changelogentry#
+
+<form action="#url#log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search2">search:</label>
+<input name="rev" id="search2" type="text" size="30">
+navigate: <small class="navigate">#changenav%naventry#</small>
+</p>
+</form>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/changelogentry.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,25 @@
+<table class="logEntry parity#parity#">
+ <tr>
+  <th class="age">#date|age# ago:</th>
+  <th class="firstline">#desc|strip|firstline|escape#</th>
+ </tr>
+ <tr>
+  <th class="revision">changeset #rev#:</th>
+  <td class="node"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td>
+ </tr>
+ #parent%changelogparent#
+ #child%changelogchild#
+ #changelogtag#
+ <tr>
+  <th class="author">author:</th>
+  <td class="author">#author|obfuscate#</td>
+ </tr>
+ <tr>
+  <th class="date">date:</th>
+  <td class="date">#date|date#</td>
+ </tr>
+ <tr>
+  <th class="files"><a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>:</th>
+  <td class="files">#files#</td>
+ </tr>
+</table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/changeset.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,50 @@
+#header#
+<title>#repo|escape#: changeset #node|short#</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
+<a href="#url#raw-rev/#node|short#">raw</a>
+#archives%archiveentry#
+</div>
+
+<h2>changeset: #desc|strip|escape|firstline#</h2>
+
+<table id="changesetEntry">
+<tr>
+ <th class="changeset">changeset #rev#:</th>
+ <td class="changeset"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td>
+</tr>
+#parent%changesetparent#
+#child%changesetchild#
+#changesettag#
+<tr>
+ <th class="author">author:</th>
+ <td class="author">#author|obfuscate#</td>
+</tr>
+<tr>
+ <th class="date">date:</th>
+ <td class="date">#date|date# (#date|age# ago)</td>
+</tr>
+<tr>
+ <th class="files">files:</th>
+ <td class="files">#files#</td>
+</tr>
+<tr>
+ <th class="description">description:</th>
+ <td class="description">#desc|strip|escape|addbreaks#</td>
+</tr>
+</table>
+
+<div id="changesetDiff">
+#diff#
+</div>
+
+#footer#
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/error.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,15 @@
+#header#
+<title>Mercurial Error</title>
+</head>
+<body>
+
+<h2>Mercurial Error</h2>
+
+<p>
+An error occurred while processing your request:
+</p>
+<p>
+#error|escape#
+</p>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/fileannotate.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,49 @@
+#header#
+<title>#repo|escape#: #file|escape# annotate</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
+<a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a>
+<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
+<a href="#url#log/#node|short#/#file|urlescape#{sessionvars%urlparameter}">revisions</a>
+<a href="#url#raw-annotate/#node|short#/#file|urlescape#">raw</a>
+</div>
+
+<h2>Annotate #file|escape#</h2>
+
+<table>
+<tr>
+ <td class="metatag">changeset #rev#:</td>
+ <td><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>
+#parent%fileannotateparent#
+#child%fileannotatechild#
+<tr>
+ <td class="metatag">author:</td>
+ <td>#author|obfuscate#</td></tr>
+<tr>
+ <td class="metatag">date:</td>
+ <td>#date|date# (#date|age# ago)</td>
+</tr>
+<tr>
+ <td class="metatag">permissions:</td>
+ <td>#permissions|permissions#</td>
+</tr>
+<tr>
+  <td class="metatag">description:</td>
+  <td>{desc|strip|escape|addbreaks}</td>
+</tr>
+</table>
+
+<br/>
+
+<table cellspacing="0" cellpadding="0">
+#annotate%annotateline#
+</table>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/filediff.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,35 @@
+#header#
+<title>#repo|escape#: #file|escape# diff</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
+<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
+<a href="#url#log/#node|short#/#file|urlescape#{sessionvars%urlparameter}">revisions</a>
+<a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">annotate</a>
+<a href="#url#raw-diff/#node|short#/#file|urlescape#">raw</a>
+</div>
+
+<h2>#file|escape#</h2>
+
+<table id="filediffEntry">
+<tr>
+ <th class="revision">revision #rev#:</th>
+ <td class="revision"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td>
+</tr>
+#parent%filediffparent#
+#child%filediffchild#
+</table>
+
+<div id="fileDiff">
+#diff#
+</div>
+
+#footer#
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/filelog.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,27 @@
+#header#
+<title>#repo|escape#: #file|escape# history</title>
+<link rel="alternate" type="application/atom+xml"
+   href="#url#atom-log/tip/#file|urlescape#" title="Atom feed for #repo|escape#:#file#">
+<link rel="alternate" type="application/rss+xml"
+   href="#url#rss-log/tip/#file|urlescape#" title="RSS feed for #repo|escape#:#file#">
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
+<a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">annotate</a>
+<a type="application/rss+xml" href="#url#rss-log/tip/#file|urlescape#">rss</a>
+<a type="application/atom+xml" href="#url#atom-log/tip/#file|urlescape#" title="Atom feed for #repo|escape#:#file#">atom</a>
+</div>
+
+<h2>#file|escape# revision history</h2>
+
+<p>navigate: <small class="navigate">{nav%filenaventry}</small></p>
+
+#entries%filelogentry#
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/filelogentry.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,25 @@
+<table class="logEntry parity#parity#">
+ <tr>
+  <th class="age">#date|age# ago:</th>
+  <th class="firstline"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#desc|strip|firstline|escape#</a></th>
+ </tr>
+ <tr>
+  <th class="revision">revision #filerev#:</td>
+  <td class="node">
+   <a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a>
+   <a href="#url#diff/#node|short#/#file|urlescape#{sessionvars%urlparameter}">(diff)</a>
+   <a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">(annotate)</a>
+  </td>
+ </tr>
+ #rename%filelogrename#
+ <tr>
+  <th class="author">author:</th>
+  <td class="author">#author|obfuscate#</td>
+ </tr>
+ <tr>
+  <th class="date">date:</th>
+  <td class="date">#date|date#</td>
+ </tr>
+</table>
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/filerevision.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,45 @@
+#header#
+<title>#repo|escape#:#file|escape#</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
+<a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a>
+<a href="#url#log/#node|short#/#file|urlescape#{sessionvars%urlparameter}">revisions</a>
+<a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">annotate</a>
+<a href="#url#raw-file/#node|short#/#file|urlescape#">raw</a>
+</div>
+
+<h2>#file|escape#</h2>
+
+<table>
+<tr>
+ <td class="metatag">changeset #rev#:</td>
+ <td><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>
+#parent%filerevparent#
+#child%filerevchild#
+<tr>
+ <td class="metatag">author:</td>
+ <td>#author|obfuscate#</td></tr>
+<tr>
+ <td class="metatag">date:</td>
+ <td>#date|date# (#date|age# ago)</td></tr>
+<tr>
+ <td class="metatag">permissions:</td>
+ <td>#permissions|permissions#</td></tr>
+<tr>
+  <td class="metatag">description:</td>
+  <td>{desc|strip|escape|addbreaks}</td>
+</tr>
+</table>
+
+<pre>
+#text%fileline#
+</pre>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/footer.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,8 @@
+#motd#
+<div class="logo">
+<a href="http://www.selenic.com/mercurial/">
+<img src="#staticurl#hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/graph.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,95 @@
+#header#
+<title>#repo|escape#: graph</title>
+<link rel="alternate" type="application/atom+xml"
+   href="#url#atom-tags" title="Atom feed for #repo|escape#: tags">
+<link rel="alternate" type="application/rss+xml"
+   href="#url#rss-tags" title="RSS feed for #repo|escape#: tags">
+<!--[if IE]><script type="text/javascript" src="#staticurl#excanvas.js"></script><![endif]-->
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
+</div>
+
+<h2>graph</h2>
+
+<form action="#url#log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">#changenav%navgraphentry#</small>
+</p>
+</form>
+
+<noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
+
+<div id="wrapper">
+<ul id="nodebgs"></ul>
+<canvas id="graph" width="224" height="#canvasheight#"></canvas>
+<ul id="graphnodes"></ul>
+</div>
+
+<script type="text/javascript" src="#staticurl#graph.js"></script>
+<script type="text/javascript">
+<!-- hide script content
+
+var data = {jsdata|json};
+var graph = new Graph();
+graph.scale({bg_height});
+
+graph.edge = function(x0, y0, x1, y1, color) {
+	
+	this.setColor(color, 0.0, 0.65);
+	this.ctx.beginPath();
+	this.ctx.moveTo(x0, y0);
+	this.ctx.lineTo(x1, y1);
+	this.ctx.stroke();
+	
+}
+
+var revlink = '<li style="_STYLE"><span class="desc">';
+revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
+revlink += '</span><span class="info">_DATE ago, by _USER</span></li>';
+
+graph.vertex = function(x, y, color, parity, cur) {
+	
+	this.ctx.beginPath();
+	color = this.setColor(color, 0.25, 0.75);
+	this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
+	this.ctx.fill();
+	
+	var bg = '<li class="bg parity' + parity + '"></li>';
+	var left = (this.columns + 1) * this.bg_height;
+	var nstyle = 'padding-left: ' + left + 'px;';
+	var item = revlink.replace(/_STYLE/, nstyle);
+	item = item.replace(/_PARITY/, 'parity' + parity);
+	item = item.replace(/_NODEID/, cur[0]);
+	item = item.replace(/_NODEID/, cur[0]);
+	item = item.replace(/_DESC/, cur[3]);
+	item = item.replace(/_USER/, cur[4]);
+	item = item.replace(/_DATE/, cur[5]);
+	
+	return [bg, item];
+	
+}
+
+graph.render(data);
+
+// stop hiding script -->
+</script>
+
+<form action="#url#log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">#changenav%navgraphentry#</small>
+</p>
+</form>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/header.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,6 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="icon" href="#staticurl#hgicon.png" type="image/png">
+<meta name="robots" content="index, nofollow" />
+<link rel="stylesheet" href="#staticurl#style.css" type="text/css" />
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/index.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,19 @@
+#header#
+<title>Mercurial repositories index</title>
+</head>
+<body>
+
+<h2>Mercurial Repositories</h2>
+
+<table>
+    <tr>
+        <td><a href="?sort=#sort_name#">Name</a></td>
+        <td><a href="?sort=#sort_description#">Description</a></td>
+        <td><a href="?sort=#sort_contact#">Contact</a></td>
+        <td><a href="?sort=#sort_lastchange#">Last change</a></td>
+        <td>&nbsp;</td>
+    </tr>
+    #entries%indexentry#
+</table>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/manifest.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,27 @@
+#header#
+<title>#repo|escape#: files for changeset #node|short#</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
+#archives%archiveentry#
+</div>
+
+<h2>files for changeset #node|short#: #path|escape#</h2>
+
+<table cellpadding="0" cellspacing="0">
+<tr class="parity#upparity#">
+  <td><tt>drwxr-xr-x</tt>&nbsp;
+  <td>&nbsp;
+  <td>&nbsp;
+  <td><a href="#url#file/#node|short##up|urlescape#{sessionvars%urlparameter}">[up]</a>
+</tr>
+#dentries%direntry#
+#fentries%fileentry#
+</table>
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/map	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,60 @@
+default = 'shortlog'
+mimetype = 'text/html; charset={encoding}'
+header = header.tmpl
+footer = footer.tmpl
+search = search.tmpl
+changelog = changelog.tmpl
+shortlog = shortlog.tmpl
+shortlogentry = shortlogentry.tmpl
+graph = graph.tmpl
+naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
+filedifflink = '<a href="#url#diff/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#file|escape#</a> '
+filenodelink = '<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#file|escape#</a> '
+filenolink = '{file|escape} '
+fileellipses = '...'
+changelogentry = changelogentry.tmpl
+searchentry = changelogentry.tmpl
+changeset = changeset.tmpl
+manifest = manifest.tmpl
+direntry = '<tr class="parity#parity#"><td><tt>drwxr-xr-x</tt>&nbsp;<td>&nbsp;<td>&nbsp;<td><a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">#basename|escape#/</a> <a href="#url#file/#node|short##path|urlescape#/#emptydirs|urlescape#{sessionvars%urlparameter}">#emptydirs|urlescape#</a>'
+fileentry = '<tr class="parity#parity#"><td><tt>#permissions|permissions#</tt>&nbsp;<td align=right><tt class="date">#date|isodate#</tt>&nbsp;<td align=right><tt>#size#</tt>&nbsp;<td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#basename|escape#</a>'
+filerevision = filerevision.tmpl
+fileannotate = fileannotate.tmpl
+filediff = filediff.tmpl
+filelog = filelog.tmpl
+fileline = '<div class="parity#parity#"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</div>'
+filelogentry = filelogentry.tmpl
+annotateline = '<tr class="parity#parity#"><td class="annotate"><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}#l{targetline}" title="{node|short}: {desc|escape|firstline}">#author|user#@#rev#</a></td><td><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a></td><td><pre>#line|escape#</pre></td></tr>'
+difflineplus = '<span class="plusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
+difflineminus = '<span class="minusline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
+difflineat = '<span class="atline"><a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#</span>'
+diffline = '<a class="lineno" href="##lineid#" id="#lineid#">#linenumber#</a>#line|escape#'
+changelogparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+changesetparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+filerevparent = '<tr><td class="metatag">parent:</td><td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a></td></tr>'
+filerename = '{file|escape}@'
+filelogrename = '<tr><th>base:</th><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#file|escape#@#node|short#</a></td></tr>'
+fileannotateparent = '<tr><td class="metatag">parent:</td><td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a></td></tr>'
+changesetchild = '<tr><th class="child">child #rev#:</th><td class="child"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+changelogchild = '<tr><th class="child">child #rev#:</th><td class="child"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+filerevchild = '<tr><td class="metatag">child:</td><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+fileannotatechild = '<tr><td class="metatag">child:</td><td><a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+tags = tags.tmpl
+tagentry = '<li class="tagEntry parity#parity#"><tt class="node">#node#</tt> <a href="#url#rev/#node|short#{sessionvars%urlparameter}">#tag|escape#</a></li>'
+diffblock = '<pre class="parity#parity#">#lines#</pre>'
+changelogtag = '<tr><th class="tag">tag:</th><td class="tag">#tag|escape#</td></tr>'
+changesettag = '<tr><th class="tag">tag:</th><td class="tag">#tag|escape#</td></tr>'
+filediffparent = '<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+filelogparent = '<tr><th>parent #rev#:</th><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+filediffchild = '<tr><th class="child">child #rev#:</th><td class="child"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+filelogchild = '<tr><th>child #rev#:</th><td><a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
+indexentry = '<tr class="parity#parity#"><td><a href="#url#{sessionvars%urlparameter}">#name|escape#</a></td><td>#description#</td><td>#contact|obfuscate#</td><td class="age">#lastchange|age# ago</td><td class="indexlinks"><a href="#url#rss-log">RSS</a> <a href="#url#atom-log">Atom</a> #archives%archiveentry#</td></tr>'
+index = index.tmpl
+archiveentry = '<a href="#url#archive/#node|short##extension|urlescape#">#type|escape#</a> '
+notfound = notfound.tmpl
+error = error.tmpl
+urlparameter = '#separator##name#=#value|urlescape#'
+hiddenformentry = '<input type="hidden" name="#name#" value="#value|escape#" />'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/notfound.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,12 @@
+#header#
+<title>Mercurial repository not found</title>
+</head>
+<body>
+
+<h2>Mercurial repository not found</h2>
+
+The specified repository "#repo|escape#" is unknown, sorry.
+
+Please go back to the main repository list page.
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/search.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,35 @@
+#header#
+<title>#repo|escape#: searching for #query|escape#</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
+#archives%archiveentry#
+</div>
+
+<h2>searching for #query|escape#</h2>
+
+<form>
+{sessionvars%hiddenformentry}
+<p>
+search:
+<input name="rev" type="text" width="30" value="#query|escape#">
+</p>
+</form>
+
+#entries#
+
+<form>
+{sessionvars%hiddenformentry}
+<p>
+search:
+<input name="rev" type="text" width="30" value="#query|escape#">
+</p>
+</form>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/shortlog.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,42 @@
+#header#
+<title>#repo|escape#: shortlog</title>
+<link rel="alternate" type="application/atom+xml"
+   href="#url#atom-log" title="Atom feed for #repo|escape#">
+<link rel="alternate" type="application/rss+xml"
+   href="#url#rss-log" title="RSS feed for #repo|escape#">
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
+#archives%archiveentry#
+<a type="application/rss+xml" href="#url#rss-log">rss</a>
+<a type="application/rss+xml" href="#url#atom-log" title="Atom feed for #repo|escape#">atom</a>
+</div>
+
+<h2>shortlog for #repo|escape#</h2>
+
+<form action="#url#log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">#changenav%navshortentry#</small>
+</p>
+</form>
+
+#entries%shortlogentry#
+
+<form action="#url#log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search2">search:</label>
+<input name="rev" id="search2" type="text" size="30">
+navigate: <small class="navigate">#changenav%navshortentry#</small>
+</p>
+</form>
+
+#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/shortlogentry.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,7 @@
+<table class="slogEntry parity#parity#">
+ <tr>
+  <td class="age">#date|age#</td>
+  <td class="author">#author|person#</td>
+  <td class="node"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#desc|strip|firstline|escape#</a></td>
+ </tr>
+</table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/spartan/tags.tmpl	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,25 @@
+#header#
+<title>#repo|escape#: tags</title>
+<link rel="alternate" type="application/atom+xml"
+   href="#url#atom-tags" title="Atom feed for #repo|escape#: tags">
+<link rel="alternate" type="application/rss+xml"
+   href="#url#rss-tags" title="RSS feed for #repo|escape#: tags">
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
+<a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
+<a type="application/rss+xml" href="#url#rss-tags">rss</a>
+<a type="application/atom+xml" href="#url#atom-tags">atom</a>
+</div>
+
+<h2>tags:</h2>
+
+<ul id="tagEntries">
+#entries%tagentry#
+</ul>
+
+#footer#
--- a/templates/static/style-coal.css	Fri Nov 07 23:31:12 2008 +0100
+++ b/templates/static/style-coal.css	Sat Nov 08 00:29:04 2008 +0100
@@ -91,10 +91,10 @@
 .age { white-space:nowrap; }
 .date { white-space:nowrap; }
 .indexlinks { white-space:nowrap; }
-.parity0 { background-color: #f5f5f5; }
+.parity0 { background-color: #f0f0f0; }
 .parity1 { background-color: white; }
 .plusline { color: green; }
-.minusline { color: red; }
+.minusline { color: #dc143c; } /* crimson */
 .atline { color: purple; }
 
 .navigate {
--- a/templates/static/style-paper.css	Fri Nov 07 23:31:12 2008 +0100
+++ b/templates/static/style-paper.css	Sat Nov 08 00:29:04 2008 +0100
@@ -82,10 +82,10 @@
 .age { white-space:nowrap; }
 .date { white-space:nowrap; }
 .indexlinks { white-space:nowrap; }
-.parity0 { background-color: #f5f5f5; }
+.parity0 { background-color: #f0f0f0; }
 .parity1 { background-color: white; }
 .plusline { color: green; }
-.minusline { color: red; }
+.minusline { color: #dc143c; } /* crimson */
 .atline { color: purple; }
 
 .navigate {
--- a/templates/tags.tmpl	Fri Nov 07 23:31:12 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#header#
-<title>#repo|escape#: tags</title>
-<link rel="alternate" type="application/atom+xml"
-   href="#url#atom-tags" title="Atom feed for #repo|escape#: tags">
-<link rel="alternate" type="application/rss+xml"
-   href="#url#rss-tags" title="RSS feed for #repo|escape#: tags">
-</head>
-<body>
-
-<div class="buttons">
-<a href="#url#log{sessionvars%urlparameter}">changelog</a>
-<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="#url#graph{sessionvars%urlparameter}">graph</a>
-<a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
-<a type="application/rss+xml" href="#url#rss-tags">rss</a>
-<a type="application/atom+xml" href="#url#atom-tags">atom</a>
-</div>
-
-<h2>tags:</h2>
-
-<ul id="tagEntries">
-#entries%tagentry#
-</ul>
-
-#footer#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/killdaemons.py	Sat Nov 08 00:29:04 2008 +0100
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+
+import os, sys, time, errno, signal
+
+# Kill off any leftover daemon processes
+try:
+    fp = file(os.environ['DAEMON_PIDS'])
+    for line in fp:
+        try:
+            pid = int(line)
+        except ValueError:
+            continue
+        try:
+            os.kill(pid, 0)
+            os.kill(pid, signal.SIGTERM)
+            for i in range(10):
+                time.sleep(0.05)
+                os.kill(pid, 0)
+            os.kill(pid, signal.SIGKILL)
+        except OSError, err:
+            if err.errno != errno.ESRCH:
+                raise
+    fp.close()
+except IOError:
+    pass
--- a/tests/run-tests.py	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/run-tests.py	Sat Nov 08 00:29:04 2008 +0100
@@ -63,6 +63,8 @@
     help="run tests in the given temporary directory")
 parser.add_option("-v", "--verbose", action="store_true",
     help="output verbose messages")
+parser.add_option("-n", "--nodiff", action="store_true",
+    help="skip showing test changes")
 parser.add_option("--with-hg", type="string",
     help="test existing install at given location")
 
@@ -71,6 +73,7 @@
 parser.set_defaults(**defaults)
 (options, args) = parser.parse_args()
 verbose = options.verbose
+nodiff = options.nodiff
 coverage = options.cover or options.cover_stdlib or options.annotate
 python = sys.executable
 
@@ -308,7 +311,8 @@
 
     def fail(msg):
         fails.append((test, msg))
-        print "\nERROR: %s %s" % (test, msg)
+        if not nodiff:
+            print "\nERROR: %s %s" % (test, msg)
         return None
 
     vlog("# Test", test)
@@ -374,6 +378,8 @@
     if options.timeout > 0:
         signal.alarm(0)
 
+    mark = '.'
+
     skipped = (ret == SKIPPED_STATUS)
     # If reference output file exists, check test output against it
     if os.path.exists(ref):
@@ -383,22 +389,26 @@
     else:
         ref_out = []
     if skipped:
+        mark = 's'
         missing = extract_missing_features(out)
         if not missing:
             missing = ['irrelevant']
         skip(missing[-1])
     elif out != ref_out:
+        mark = '!'
         if ret:
             fail("output changed and returned error code %d" % ret)
         else:
             fail("output changed")
-        show_diff(ref_out, out)
+            if not nodiff:
+                show_diff(ref_out, out)
         ret = 1
     elif ret:
+        mark = '!'
         fail("returned error code %d" % ret)
 
     if not verbose:
-        sys.stdout.write(skipped and 's' or '.')
+        sys.stdout.write(mark)
         sys.stdout.flush()
 
     if ret != 0 and not skipped:
--- a/tests/test-archive	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-archive	Sat Nov 08 00:29:04 2008 +0100
@@ -24,7 +24,7 @@
     echo % $3 and $4 disallowed should both give 403
     "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.$3" | head -n 1
     "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.$4" | head -n 1
-    kill `cat hg.pid`
+    "$TESTDIR/killdaemons.py"
     cat errors.log
     cp .hg/hgrc-base .hg/hgrc
 }
@@ -63,6 +63,8 @@
 http_proxy= python getarchive.py "$TIP" zip > archive.zip
 unzip -t archive.zip | sed "s/$QTIP/TIP/"
 
+"$TESTDIR/killdaemons.py"
+
 hg archive -t tar test.tar
 tar tf test.tar
 
--- a/tests/test-fetch	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-fetch	Sat Nov 08 00:29:04 2008 +0100
@@ -37,6 +37,7 @@
 hg --cwd c fetch -d '4 0' -m 'automated merge' ../a
 ls c
 
+netstat -tnap 2>/dev/null | grep $HGPORT | grep LISTEN
 hg --cwd a serve -a localhost -p $HGPORT -d --pid-file=hg.pid
 cat a/hg.pid >> "$DAEMON_PIDS"
 
@@ -169,4 +170,6 @@
 hg -R n2 parents --template '{rev}\n'
 rm -fr n1 n2
 
+"$TESTDIR/killdaemons.py"
+
 true
--- a/tests/test-hgweb	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-hgweb	Sat Nov 08 00:29:04 2008 +0100
@@ -7,7 +7,7 @@
 echo foo > da/foo
 echo foo > foo
 hg ci -Ambase -d '0 0'
-hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
+hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
 cat hg.pid >> $DAEMON_PIDS
 echo % manifest
 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/?style=raw')
Binary file tests/test-hgweb-commands.out has changed
--- a/tests/test-hgweb-descend-empties.out	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-hgweb-descend-empties.out	Sat Nov 08 00:29:04 2008 +0100
@@ -7,43 +7,66 @@
 % manifest with descending
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
-<title>test: files for changeset 9087c84a0f5d</title>
+<title>test: 9087c84a0f5d /</title>
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log/0">changelog</a>
-<a href="/shortlog/0">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/rev/9087c84a0f5d">changeset</a>
-
-</div>
-
-<h2>files for changeset 9087c84a0f5d: /</h2>
-
-<table cellpadding="0" cellspacing="0">
-<tr class="parity0">
-  <td><tt>drwxr-xr-x</tt>&nbsp;
-  <td>&nbsp;
-  <td>&nbsp;
-  <td><a href="/file/9087c84a0f5d/">[up]</a>
-</tr>
-<tr class="parity1"><td><tt>drwxr-xr-x</tt>&nbsp;<td>&nbsp;<td>&nbsp;<td><a href="/file/9087c84a0f5d/a1">a1/</a> <a href="/file/9087c84a0f5d/a1/a2/a3/a4">a2/a3/a4</a><tr class="parity0"><td><tt>drwxr-xr-x</tt>&nbsp;<td>&nbsp;<td>&nbsp;<td><a href="/file/9087c84a0f5d/b1">b1/</a> <a href="/file/9087c84a0f5d/b1/b2">b2</a><tr class="parity1"><td><tt>drwxr-xr-x</tt>&nbsp;<td>&nbsp;<td>&nbsp;<td><a href="/file/9087c84a0f5d/d1">d1/</a> <a href="/file/9087c84a0f5d/d1/d2">d2</a>
-
-</table>
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/9087c84a0f5d">log</a></li>
+<li><a href="/graph/9087c84a0f5d">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/9087c84a0f5d">changeset</a></li>
+<li class="active">browse</li>
+</ul>
+<ul>
+
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>directory / @ 0:9087c84a0f5d <span class="tag">tip</span> </h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<table class="bigtable">
+<tr>
+  <th class="name">name</th>
+  <th class="size">size</th>
+  <th class="permissions">permissions</th>
+</tr>
+<tr class="fileline parity0">
+  <td class="name"><a href="/file/9087c84a0f5d/">[up]</a></td>
+  <td class="size"></td>
+  <td class="permissions">drwxr-xr-x</td>
+</tr>
+<tr class="fileline parity1"><td class="name"><a href="/file/9087c84a0f5d/a1"><img src="/static/coal-folder.png"> a1/</a> <a href="/file/9087c84a0f5d/a1/a2/a3/a4">a2/a3/a4</a><td class="size"></td><td class="permissions">drwxr-xr-x</td></tr><tr class="fileline parity0"><td class="name"><a href="/file/9087c84a0f5d/b1"><img src="/static/coal-folder.png"> b1/</a> <a href="/file/9087c84a0f5d/b1/b2">b2</a><td class="size"></td><td class="permissions">drwxr-xr-x</td></tr><tr class="fileline parity1"><td class="name"><a href="/file/9087c84a0f5d/d1"><img src="/static/coal-folder.png"> d1/</a> <a href="/file/9087c84a0f5d/d1/d2">d2</a><td class="size"></td><td class="permissions">drwxr-xr-x</td></tr>
+
+</table>
+</div>
+</div>
+
 
 </body>
 </html>
--- a/tests/test-hgweb-diffs.out	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-hgweb-diffs.out	Sat Nov 08 00:29:04 2008 +0100
@@ -6,267 +6,385 @@
 % revision
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
-<title>test: changeset 0cd96de13884</title>
+<title>test: 0cd96de13884</title>
 </head>
 <body>
-
-<div class="buttons">
-<a href="/log/0">changelog</a>
-<a href="/shortlog/0">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/file/0cd96de13884">files</a>
-<a href="/raw-rev/0cd96de13884">raw</a>
-
-</div>
-
-<h2>changeset: a</h2>
-
-<table id="changesetEntry">
-<tr>
- <th class="changeset">changeset 0:</th>
- <td class="changeset"><a href="/rev/0cd96de13884">0cd96de13884</a></td>
-</tr>
-
-<tr><th class="child">child 1:</th><td class="child"><a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td></tr>
-
-<tr>
- <th class="author">author:</th>
- <td class="author">&#116;&#101;&#115;&#116;</td>
-</tr>
-<tr>
- <th class="date">date:</th>
- <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
-</tr>
-<tr>
- <th class="files">files:</th>
- <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
-</tr>
-<tr>
- <th class="description">description:</th>
- <td class="description">a</td>
-</tr>
-</table>
-
-<div id="changesetDiff">
-<pre class="parity0"><span class="minusline"><a class="lineno" href="#l1.1" id="l1.1">     1.1</a>--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="plusline"><a class="lineno" href="#l1.2" id="l1.2">     1.2</a>+++ b/a	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="atline"><a class="lineno" href="#l1.3" id="l1.3">     1.3</a>@@ -0,0 +1,1 @@
-</span><span class="plusline"><a class="lineno" href="#l1.4" id="l1.4">     1.4</a>+a
-</span></pre><pre class="parity1"><span class="minusline"><a class="lineno" href="#l2.1" id="l2.1">     2.1</a>--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="plusline"><a class="lineno" href="#l2.2" id="l2.2">     2.2</a>+++ b/b	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="atline"><a class="lineno" href="#l2.3" id="l2.3">     2.3</a>@@ -0,0 +1,1 @@
-</span><span class="plusline"><a class="lineno" href="#l2.4" id="l2.4">     2.4</a>+b
-</span></pre>
-</div>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+ <li><a href="/shortlog/0cd96de13884">log</a></li>
+ <li><a href="/graph/0cd96de13884">graph</a></li>
+ <li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+ <li class="active">changeset</li>
+ <li><a href="/raw-rev/0cd96de13884">raw</a></li>
+ <li><a href="/file/0cd96de13884">browse</a></li>
+</ul>
+<ul>
+ 
+</ul>
+</div>
+
+<div class="main">
+
+<h2><a href="/">test</a></h2>
+<h3>changeset 0:0cd96de13884 </h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">a</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td></tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author"></td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author"><a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
+</tr>
+<tr>
+ <th class="files">files</th>
+ <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
+</tr>
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">diff</th>
+</tr>
+</table>
+<table class="bigtable parity0"><tr><td class="lineno"><a href="#l1.1" id="l1.1">     1.1</a></td><td class="source minusline">--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.2" id="l1.2">     1.2</a></td><td class="source plusline">+++ b/a	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.3" id="l1.3">     1.3</a></td><td class="source atline">@@ -0,0 +1,1 @@
+</td></tr><tr><td class="lineno"><a href="#l1.4" id="l1.4">     1.4</a></td><td class="source plusline">+a
+</td></tr></table><table class="bigtable parity1"><tr><td class="lineno"><a href="#l2.1" id="l2.1">     2.1</a></td><td class="source minusline">--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l2.2" id="l2.2">     2.2</a></td><td class="source plusline">+++ b/b	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l2.3" id="l2.3">     2.3</a></td><td class="source atline">@@ -0,0 +1,1 @@
+</td></tr><tr><td class="lineno"><a href="#l2.4" id="l2.4">     2.4</a></td><td class="source plusline">+b
+</td></tr></table>
+</div>
+
+</div>
+</div>
+
 
 </body>
 </html>
 
-
-
 % diff removed file
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <title>test: a diff</title>
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log/1">changelog</a>
-<a href="/shortlog/1">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/rev/78e4ebad7cdf">changeset</a>
-<a href="/file/78e4ebad7cdf/a">file</a>
-<a href="/log/78e4ebad7cdf/a">revisions</a>
-<a href="/annotate/78e4ebad7cdf/a">annotate</a>
-<a href="/raw-diff/78e4ebad7cdf/a">raw</a>
-</div>
-
-<h2>a</h2>
-
-<table id="filediffEntry">
-<tr>
- <th class="revision">revision 1:</th>
- <td class="revision"><a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
-</tr>
-
-
-</table>
-
-<div id="fileDiff">
-<pre class="parity0"><span class="minusline"><a class="lineno" href="#l1.1" id="l1.1">     1.1</a>--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="plusline"><a class="lineno" href="#l1.2" id="l1.2">     1.2</a>+++ b/a	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="atline"><a class="lineno" href="#l1.3" id="l1.3">     1.3</a>@@ -0,0 +1,1 @@
-</span><span class="plusline"><a class="lineno" href="#l1.4" id="l1.4">     1.4</a>+a
-</span></pre>
-</div>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/78e4ebad7cdf">log</a></li>
+<li><a href="/graph/78e4ebad7cdf">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/78e4ebad7cdf">changeset</a></li>
+<li><a href="/file/78e4ebad7cdf">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/78e4ebad7cdf/a">file</a></li>
+<li class="active">diff</li>
+<li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
+<li><a href="/log/78e4ebad7cdf/a">file log</a></li>
+<li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>diff a @ 1:78e4ebad7cdf</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">b</div>
+
+<table id="changesetEntry">
+<tr>
+ <th>author</th>
+ <td>&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th>date</th>
+ <td>Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
+</tr>
+<tr>
+ <th>parents</th>
+ <td></td>
+</tr>
+<tr>
+ <th>children</th>
+ <td></td>
+</tr>
+
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">diff</th>
+</tr>
+</table>
+
+<table class="bigtable parity0"><tr><td class="lineno"><a href="#l1.1" id="l1.1">     1.1</a></td><td class="source minusline">--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.2" id="l1.2">     1.2</a></td><td class="source plusline">+++ b/a	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.3" id="l1.3">     1.3</a></td><td class="source atline">@@ -0,0 +1,1 @@
+</td></tr><tr><td class="lineno"><a href="#l1.4" id="l1.4">     1.4</a></td><td class="source plusline">+a
+</td></tr></table>
+</div>
+</div>
+</div>
+
+
 
 </body>
 </html>
 
-
-
 % set up hgweb with git diffs
 % revision
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
-<title>test: changeset 0cd96de13884</title>
+<title>test: 0cd96de13884</title>
 </head>
 <body>
-
-<div class="buttons">
-<a href="/log/0">changelog</a>
-<a href="/shortlog/0">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/file/0cd96de13884">files</a>
-<a href="/raw-rev/0cd96de13884">raw</a>
-
-</div>
-
-<h2>changeset: a</h2>
-
-<table id="changesetEntry">
-<tr>
- <th class="changeset">changeset 0:</th>
- <td class="changeset"><a href="/rev/0cd96de13884">0cd96de13884</a></td>
-</tr>
-
-<tr><th class="child">child 1:</th><td class="child"><a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td></tr>
-
-<tr>
- <th class="author">author:</th>
- <td class="author">&#116;&#101;&#115;&#116;</td>
-</tr>
-<tr>
- <th class="date">date:</th>
- <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
-</tr>
-<tr>
- <th class="files">files:</th>
- <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
-</tr>
-<tr>
- <th class="description">description:</th>
- <td class="description">a</td>
-</tr>
-</table>
-
-<div id="changesetDiff">
-<pre class="parity0"><a class="lineno" href="#l1.1" id="l1.1">     1.1</a>new file mode 100644
-<span class="minusline"><a class="lineno" href="#l1.2" id="l1.2">     1.2</a>--- /dev/null
-</span><span class="plusline"><a class="lineno" href="#l1.3" id="l1.3">     1.3</a>+++ b/a
-</span><span class="atline"><a class="lineno" href="#l1.4" id="l1.4">     1.4</a>@@ -0,0 +1,1 @@
-</span><span class="plusline"><a class="lineno" href="#l1.5" id="l1.5">     1.5</a>+a
-</span></pre><pre class="parity1"><a class="lineno" href="#l2.1" id="l2.1">     2.1</a>new file mode 100644
-<span class="minusline"><a class="lineno" href="#l2.2" id="l2.2">     2.2</a>--- /dev/null
-</span><span class="plusline"><a class="lineno" href="#l2.3" id="l2.3">     2.3</a>+++ b/b
-</span><span class="atline"><a class="lineno" href="#l2.4" id="l2.4">     2.4</a>@@ -0,0 +1,1 @@
-</span><span class="plusline"><a class="lineno" href="#l2.5" id="l2.5">     2.5</a>+b
-</span></pre>
-</div>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+ <li><a href="/shortlog/0cd96de13884">log</a></li>
+ <li><a href="/graph/0cd96de13884">graph</a></li>
+ <li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+ <li class="active">changeset</li>
+ <li><a href="/raw-rev/0cd96de13884">raw</a></li>
+ <li><a href="/file/0cd96de13884">browse</a></li>
+</ul>
+<ul>
+ 
+</ul>
+</div>
+
+<div class="main">
+
+<h2><a href="/">test</a></h2>
+<h3>changeset 0:0cd96de13884 </h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">a</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td></tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author"></td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author"><a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
+</tr>
+<tr>
+ <th class="files">files</th>
+ <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
+</tr>
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">diff</th>
+</tr>
+</table>
+<table class="bigtable parity0"><tr><td class="lineno"><a href="#l1.1" id="l1.1">     1.1</a></td><td class="source">new file mode 100644
+</td></tr><tr><td class="lineno"><a href="#l1.2" id="l1.2">     1.2</a></td><td class="source minusline">--- /dev/null
+</td></tr><tr><td class="lineno"><a href="#l1.3" id="l1.3">     1.3</a></td><td class="source plusline">+++ b/a
+</td></tr><tr><td class="lineno"><a href="#l1.4" id="l1.4">     1.4</a></td><td class="source atline">@@ -0,0 +1,1 @@
+</td></tr><tr><td class="lineno"><a href="#l1.5" id="l1.5">     1.5</a></td><td class="source plusline">+a
+</td></tr></table><table class="bigtable parity1"><tr><td class="lineno"><a href="#l2.1" id="l2.1">     2.1</a></td><td class="source">new file mode 100644
+</td></tr><tr><td class="lineno"><a href="#l2.2" id="l2.2">     2.2</a></td><td class="source minusline">--- /dev/null
+</td></tr><tr><td class="lineno"><a href="#l2.3" id="l2.3">     2.3</a></td><td class="source plusline">+++ b/b
+</td></tr><tr><td class="lineno"><a href="#l2.4" id="l2.4">     2.4</a></td><td class="source atline">@@ -0,0 +1,1 @@
+</td></tr><tr><td class="lineno"><a href="#l2.5" id="l2.5">     2.5</a></td><td class="source plusline">+b
+</td></tr></table>
+</div>
+
+</div>
+</div>
+
 
 </body>
 </html>
 
-
-
 % diff removed file
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <title>test: a diff</title>
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log/1">changelog</a>
-<a href="/shortlog/1">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/rev/78e4ebad7cdf">changeset</a>
-<a href="/file/78e4ebad7cdf/a">file</a>
-<a href="/log/78e4ebad7cdf/a">revisions</a>
-<a href="/annotate/78e4ebad7cdf/a">annotate</a>
-<a href="/raw-diff/78e4ebad7cdf/a">raw</a>
-</div>
-
-<h2>a</h2>
-
-<table id="filediffEntry">
-<tr>
- <th class="revision">revision 1:</th>
- <td class="revision"><a href="/rev/78e4ebad7cdf">78e4ebad7cdf</a></td>
-</tr>
-
-
-</table>
-
-<div id="fileDiff">
-<pre class="parity0"><a class="lineno" href="#l1.1" id="l1.1">     1.1</a>new file mode 100755
-<span class="minusline"><a class="lineno" href="#l1.2" id="l1.2">     1.2</a>--- /dev/null
-</span><span class="plusline"><a class="lineno" href="#l1.3" id="l1.3">     1.3</a>+++ b/a
-</span><span class="atline"><a class="lineno" href="#l1.4" id="l1.4">     1.4</a>@@ -0,0 +1,1 @@
-</span><span class="plusline"><a class="lineno" href="#l1.5" id="l1.5">     1.5</a>+a
-</span></pre>
-</div>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/78e4ebad7cdf">log</a></li>
+<li><a href="/graph/78e4ebad7cdf">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/78e4ebad7cdf">changeset</a></li>
+<li><a href="/file/78e4ebad7cdf">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/78e4ebad7cdf/a">file</a></li>
+<li class="active">diff</li>
+<li><a href="/annotate/78e4ebad7cdf/a">annotate</a></li>
+<li><a href="/log/78e4ebad7cdf/a">file log</a></li>
+<li><a href="/raw-file/78e4ebad7cdf/a">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>diff a @ 1:78e4ebad7cdf</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">b</div>
+
+<table id="changesetEntry">
+<tr>
+ <th>author</th>
+ <td>&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th>date</th>
+ <td>Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
+</tr>
+<tr>
+ <th>parents</th>
+ <td></td>
+</tr>
+<tr>
+ <th>children</th>
+ <td></td>
+</tr>
+
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">diff</th>
+</tr>
+</table>
+
+<table class="bigtable parity0"><tr><td class="lineno"><a href="#l1.1" id="l1.1">     1.1</a></td><td class="source">new file mode 100755
+</td></tr><tr><td class="lineno"><a href="#l1.2" id="l1.2">     1.2</a></td><td class="source minusline">--- /dev/null
+</td></tr><tr><td class="lineno"><a href="#l1.3" id="l1.3">     1.3</a></td><td class="source plusline">+++ b/a
+</td></tr><tr><td class="lineno"><a href="#l1.4" id="l1.4">     1.4</a></td><td class="source atline">@@ -0,0 +1,1 @@
+</td></tr><tr><td class="lineno"><a href="#l1.5" id="l1.5">     1.5</a></td><td class="source plusline">+a
+</td></tr></table>
+</div>
+</div>
+</div>
+
+
 
 </body>
 </html>
 
-
-
 % errors
--- a/tests/test-hgweb-filelog.out	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-hgweb-filelog.out	Sat Nov 08 00:29:04 2008 +0100
@@ -60,12 +60,13 @@
 % tip - two revisions
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <title>test: a history</title>
 <link rel="alternate" type="application/atom+xml"
@@ -75,78 +76,66 @@
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log">changelog</a>
-<a href="/shortlog">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/file/01de2d66a28d/a">file</a>
-<a href="/annotate/01de2d66a28d/a">annotate</a>
-<a type="application/rss+xml" href="/rss-log/tip/a">rss</a>
-<a type="application/atom+xml" href="/atom-log/tip/a" title="Atom feed for test:a">atom</a>
-</div>
-
-<h2>a revision history</h2>
-
-<p>navigate: <small class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </small></p>
-
-<table class="logEntry parity0">
- <tr>
-  <th class="age">38 years ago:</th>
-  <th class="firstline"><a href="/rev/01de2d66a28d">second a</a></th>
- </tr>
- <tr>
-  <th class="revision">revision 1:</td>
-  <td class="node">
-   <a href="/file/01de2d66a28d/a">01de2d66a28d</a>
-   <a href="/diff/01de2d66a28d/a">(diff)</a>
-   <a href="/annotate/01de2d66a28d/a">(annotate)</a>
-  </td>
- </tr>
- 
- <tr>
-  <th class="author">author:</th>
-  <td class="author">&#116;&#101;&#115;&#116;</td>
- </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
- </tr>
-</table>
-
-
-<table class="logEntry parity1">
- <tr>
-  <th class="age">38 years ago:</th>
-  <th class="firstline"><a href="/rev/5ed941583260">first a</a></th>
- </tr>
- <tr>
-  <th class="revision">revision 0:</td>
-  <td class="node">
-   <a href="/file/5ed941583260/a">5ed941583260</a>
-   <a href="/diff/5ed941583260/a">(diff)</a>
-   <a href="/annotate/5ed941583260/a">(annotate)</a>
-  </td>
- </tr>
- 
- <tr>
-  <th class="author">author:</th>
-  <td class="author">&#116;&#101;&#115;&#116;</td>
- </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
- </tr>
-</table>
-
-
-
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/01de2d66a28d">log</a></li>
+<li><a href="/graph/01de2d66a28d">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/01de2d66a28d">changeset</a></li>
+<li><a href="/file/01de2d66a28d">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/01de2d66a28d/a">file</a></li>
+<li><a href="/diff/01de2d66a28d/a">diff</a></li>
+<li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
+<li class="active">file log</li>
+<li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>log a</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
+
+<table class="bigtable">
+ <tr>
+  <th class="age">age</th>
+  <th class="author">author</th>
+  <th class="description">description</th>
+ </tr>
+ <tr class="parity0">
+  <td class="age">38 years</td>
+  <td class="author">test</td>
+  <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
+ </tr>
+ <tr class="parity1">
+  <td class="age">38 years</td>
+  <td class="author">test</td>
+  <td class="description"><a href="/rev/5ed941583260">first a</a></td>
+ </tr>
+
+</table>
+
+</div>
+</div>
+
+
 
 </body>
 </html>
@@ -154,12 +143,96 @@
 % second version - two revisions
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+
+<title>test: a history</title>
+<link rel="alternate" type="application/atom+xml"
+   href="/atom-log/tip/a" title="Atom feed for test:a">
+<link rel="alternate" type="application/rss+xml"
+   href="/rss-log/tip/a" title="RSS feed for test:a">
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://www.selenic.com/mercurial/">
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+<ul>
+<li><a href="/shortlog/01de2d66a28d">log</a></li>
+<li><a href="/graph/01de2d66a28d">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/01de2d66a28d">changeset</a></li>
+<li><a href="/file/01de2d66a28d">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/01de2d66a28d/a">file</a></li>
+<li><a href="/diff/01de2d66a28d/a">diff</a></li>
+<li><a href="/annotate/01de2d66a28d/a">annotate</a></li>
+<li class="active">file log</li>
+<li><a href="/raw-file/01de2d66a28d/a">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>log a</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
+
+<table class="bigtable">
+ <tr>
+  <th class="age">age</th>
+  <th class="author">author</th>
+  <th class="description">description</th>
+ </tr>
+ <tr class="parity0">
+  <td class="age">38 years</td>
+  <td class="author">test</td>
+  <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
+ </tr>
+ <tr class="parity1">
+  <td class="age">38 years</td>
+  <td class="author">test</td>
+  <td class="description"><a href="/rev/5ed941583260">first a</a></td>
+ </tr>
+
+</table>
+
+</div>
+</div>
+
+
+
+</body>
+</html>
+
+% first deleted - one revision
+200 Script output follows
+
+<!-- quirksmode -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="icon" href="/static/hgicon.png" type="image/png">
+<meta name="robots" content="index, nofollow" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <title>test: a history</title>
 <link rel="alternate" type="application/atom+xml"
@@ -169,91 +242,75 @@
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log">changelog</a>
-<a href="/shortlog">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/file/01de2d66a28d/a">file</a>
-<a href="/annotate/01de2d66a28d/a">annotate</a>
-<a type="application/rss+xml" href="/rss-log/tip/a">rss</a>
-<a type="application/atom+xml" href="/atom-log/tip/a" title="Atom feed for test:a">atom</a>
-</div>
-
-<h2>a revision history</h2>
-
-<p>navigate: <small class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </small></p>
-
-<table class="logEntry parity0">
- <tr>
-  <th class="age">38 years ago:</th>
-  <th class="firstline"><a href="/rev/01de2d66a28d">second a</a></th>
- </tr>
- <tr>
-  <th class="revision">revision 1:</td>
-  <td class="node">
-   <a href="/file/01de2d66a28d/a">01de2d66a28d</a>
-   <a href="/diff/01de2d66a28d/a">(diff)</a>
-   <a href="/annotate/01de2d66a28d/a">(annotate)</a>
-  </td>
- </tr>
- 
- <tr>
-  <th class="author">author:</th>
-  <td class="author">&#116;&#101;&#115;&#116;</td>
- </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
- </tr>
-</table>
-
-
-<table class="logEntry parity1">
- <tr>
-  <th class="age">38 years ago:</th>
-  <th class="firstline"><a href="/rev/5ed941583260">first a</a></th>
- </tr>
- <tr>
-  <th class="revision">revision 0:</td>
-  <td class="node">
-   <a href="/file/5ed941583260/a">5ed941583260</a>
-   <a href="/diff/5ed941583260/a">(diff)</a>
-   <a href="/annotate/5ed941583260/a">(annotate)</a>
-  </td>
- </tr>
- 
- <tr>
-  <th class="author">author:</th>
-  <td class="author">&#116;&#101;&#115;&#116;</td>
- </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
- </tr>
-</table>
-
-
-
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/5ed941583260">log</a></li>
+<li><a href="/graph/5ed941583260">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/5ed941583260">changeset</a></li>
+<li><a href="/file/5ed941583260">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/5ed941583260/a">file</a></li>
+<li><a href="/diff/5ed941583260/a">diff</a></li>
+<li><a href="/annotate/5ed941583260/a">annotate</a></li>
+<li class="active">file log</li>
+<li><a href="/raw-file/5ed941583260/a">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>log a</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
+
+<table class="bigtable">
+ <tr>
+  <th class="age">age</th>
+  <th class="author">author</th>
+  <th class="description">description</th>
+ </tr>
+ <tr class="parity0">
+  <td class="age">38 years</td>
+  <td class="author">test</td>
+  <td class="description"><a href="/rev/5ed941583260">first a</a></td>
+ </tr>
+
+</table>
+
+</div>
+</div>
+
+
 
 </body>
 </html>
 
-% first deleted - one revision
+% first version - one revision
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <title>test: a history</title>
 <link rel="alternate" type="application/atom+xml"
@@ -263,122 +320,61 @@
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log">changelog</a>
-<a href="/shortlog">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/file/5ed941583260/a">file</a>
-<a href="/annotate/5ed941583260/a">annotate</a>
-<a type="application/rss+xml" href="/rss-log/tip/a">rss</a>
-<a type="application/atom+xml" href="/atom-log/tip/a" title="Atom feed for test:a">atom</a>
-</div>
-
-<h2>a revision history</h2>
-
-<p>navigate: <small class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </small></p>
-
-<table class="logEntry parity0">
- <tr>
-  <th class="age">38 years ago:</th>
-  <th class="firstline"><a href="/rev/5ed941583260">first a</a></th>
- </tr>
- <tr>
-  <th class="revision">revision 0:</td>
-  <td class="node">
-   <a href="/file/5ed941583260/a">5ed941583260</a>
-   <a href="/diff/5ed941583260/a">(diff)</a>
-   <a href="/annotate/5ed941583260/a">(annotate)</a>
-  </td>
- </tr>
- 
- <tr>
-  <th class="author">author:</th>
-  <td class="author">&#116;&#101;&#115;&#116;</td>
- </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
- </tr>
-</table>
-
-
-
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
-
-</body>
-</html>
-
-% first version - one revision
-200 Script output follows
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<link rel="icon" href="/static/hgicon.png" type="image/png">
-<meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
-
-<title>test: a history</title>
-<link rel="alternate" type="application/atom+xml"
-   href="/atom-log/tip/a" title="Atom feed for test:a">
-<link rel="alternate" type="application/rss+xml"
-   href="/rss-log/tip/a" title="RSS feed for test:a">
-</head>
-<body>
-
-<div class="buttons">
-<a href="/log">changelog</a>
-<a href="/shortlog">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/file/5ed941583260/a">file</a>
-<a href="/annotate/5ed941583260/a">annotate</a>
-<a type="application/rss+xml" href="/rss-log/tip/a">rss</a>
-<a type="application/atom+xml" href="/atom-log/tip/a" title="Atom feed for test:a">atom</a>
+<ul>
+<li><a href="/shortlog/5ed941583260">log</a></li>
+<li><a href="/graph/5ed941583260">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/5ed941583260">changeset</a></li>
+<li><a href="/file/5ed941583260">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/5ed941583260/a">file</a></li>
+<li><a href="/diff/5ed941583260/a">diff</a></li>
+<li><a href="/annotate/5ed941583260/a">annotate</a></li>
+<li class="active">file log</li>
+<li><a href="/raw-file/5ed941583260/a">raw</a></li>
+</ul>
 </div>
 
-<h2>a revision history</h2>
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>log a</h3>
 
-<p>navigate: <small class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </small></p>
+<form class="search" action="/log">
 
-<table class="logEntry parity0">
- <tr>
-  <th class="age">38 years ago:</th>
-  <th class="firstline"><a href="/rev/5ed941583260">first a</a></th>
- </tr>
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="navigate"><a href="/log/5ed941583260/a">(0)</a> <a href="/log/tip/a">tip</a> </div>
+
+<table class="bigtable">
  <tr>
-  <th class="revision">revision 0:</td>
-  <td class="node">
-   <a href="/file/5ed941583260/a">5ed941583260</a>
-   <a href="/diff/5ed941583260/a">(diff)</a>
-   <a href="/annotate/5ed941583260/a">(annotate)</a>
-  </td>
+  <th class="age">age</th>
+  <th class="author">author</th>
+  <th class="description">description</th>
  </tr>
- 
- <tr>
-  <th class="author">author:</th>
-  <td class="author">&#116;&#101;&#115;&#116;</td>
+ <tr class="parity0">
+  <td class="age">38 years</td>
+  <td class="author">test</td>
+  <td class="description"><a href="/rev/5ed941583260">first a</a></td>
  </tr>
- <tr>
-  <th class="date">date:</th>
-  <td class="date">Thu Jan 01 00:00:00 1970 +0000</td>
- </tr>
+
 </table>
 
-
-
+</div>
+</div>
 
 
-<div class="logo">
-<a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
 
 </body>
 </html>
@@ -386,31 +382,55 @@
 % before addition - error
 404 Not Found
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
-<title>Mercurial Error</title>
+<title>test: error</title>
 </head>
 <body>
 
-<h2>Mercurial Error</h2>
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://www.selenic.com/mercurial/">
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+<ul>
+<li><a href="/log">log</a></li>
+<li><a href="/graph">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+</div>
 
+<div class="main">
+
+<h2><a href="/">test</a></h2>
+<h3>error</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">
 <p>
 An error occurred while processing your request:
 </p>
 <p>
 a@6563da9dcf87: not found in manifest
 </p>
+</div>
+</div>
+</div>
 
 
-<div class="logo">
-<a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
 
 </body>
 </html>
--- a/tests/test-hgweb-removed.out	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-hgweb-removed.out	Sat Nov 08 00:29:04 2008 +0100
@@ -4,127 +4,186 @@
 % revision
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
-<title>test: changeset c78f6c5cbea9</title>
+<title>test: c78f6c5cbea9</title>
 </head>
 <body>
-
-<div class="buttons">
-<a href="/log/1">changelog</a>
-<a href="/shortlog/1">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/file/c78f6c5cbea9">files</a>
-<a href="/raw-rev/c78f6c5cbea9">raw</a>
-
-</div>
-
-<h2>changeset: del</h2>
-
-<table id="changesetEntry">
-<tr>
- <th class="changeset">changeset 1:</th>
- <td class="changeset"><a href="/rev/c78f6c5cbea9">c78f6c5cbea9</a></td>
-</tr>
-<tr><th class="parent">parent 0:</th><td class="parent"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a></td></tr>
-
-<tr><th class="tag">tag:</th><td class="tag">tip</td></tr>
-<tr>
- <th class="author">author:</th>
- <td class="author">&#116;&#101;&#115;&#116;</td>
-</tr>
-<tr>
- <th class="date">date:</th>
- <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
-</tr>
-<tr>
- <th class="files">files:</th>
- <td class="files">a </td>
-</tr>
-<tr>
- <th class="description">description:</th>
- <td class="description">del</td>
-</tr>
-</table>
-
-<div id="changesetDiff">
-<pre class="parity0"><span class="minusline"><a class="lineno" href="#l1.1" id="l1.1">     1.1</a>--- a/a	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="plusline"><a class="lineno" href="#l1.2" id="l1.2">     1.2</a>+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="atline"><a class="lineno" href="#l1.3" id="l1.3">     1.3</a>@@ -1,1 +0,0 @@
-</span><span class="minusline"><a class="lineno" href="#l1.4" id="l1.4">     1.4</a>-a
-</span></pre>
-</div>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+ <li><a href="/shortlog/c78f6c5cbea9">log</a></li>
+ <li><a href="/graph/c78f6c5cbea9">graph</a></li>
+ <li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+ <li class="active">changeset</li>
+ <li><a href="/raw-rev/c78f6c5cbea9">raw</a></li>
+ <li><a href="/file/c78f6c5cbea9">browse</a></li>
+</ul>
+<ul>
+ 
+</ul>
+</div>
+
+<div class="main">
+
+<h2><a href="/">test</a></h2>
+<h3>changeset 1:c78f6c5cbea9 <span class="tag">tip</span> </h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">del</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td></tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author"></td>
+</tr>
+<tr>
+ <th class="files">files</th>
+ <td class="files">a </td>
+</tr>
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">diff</th>
+</tr>
+</table>
+<table class="bigtable parity0"><tr><td class="lineno"><a href="#l1.1" id="l1.1">     1.1</a></td><td class="source minusline">--- a/a	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.2" id="l1.2">     1.2</a></td><td class="source plusline">+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.3" id="l1.3">     1.3</a></td><td class="source atline">@@ -1,1 +0,0 @@
+</td></tr><tr><td class="lineno"><a href="#l1.4" id="l1.4">     1.4</a></td><td class="source minusline">-a
+</td></tr></table>
+</div>
+
+</div>
+</div>
+
 
 </body>
 </html>
 
-
-
 % diff removed file
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <title>test: a diff</title>
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log/1">changelog</a>
-<a href="/shortlog/1">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/rev/c78f6c5cbea9">changeset</a>
-<a href="/file/c78f6c5cbea9/a">file</a>
-<a href="/log/c78f6c5cbea9/a">revisions</a>
-<a href="/annotate/c78f6c5cbea9/a">annotate</a>
-<a href="/raw-diff/c78f6c5cbea9/a">raw</a>
-</div>
-
-<h2>a</h2>
-
-<table id="filediffEntry">
-<tr>
- <th class="revision">revision 1:</th>
- <td class="revision"><a href="/rev/c78f6c5cbea9">c78f6c5cbea9</a></td>
-</tr>
-<tr><th class="parent">parent 0:</th><td class="parent"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a></td></tr>
-
-</table>
-
-<div id="fileDiff">
-<pre class="parity0"><span class="minusline"><a class="lineno" href="#l1.1" id="l1.1">     1.1</a>--- a/a	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="plusline"><a class="lineno" href="#l1.2" id="l1.2">     1.2</a>+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
-</span><span class="atline"><a class="lineno" href="#l1.3" id="l1.3">     1.3</a>@@ -1,1 +0,0 @@
-</span><span class="minusline"><a class="lineno" href="#l1.4" id="l1.4">     1.4</a>-a
-</span></pre>
-</div>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/c78f6c5cbea9">log</a></li>
+<li><a href="/graph/c78f6c5cbea9">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/c78f6c5cbea9">changeset</a></li>
+<li><a href="/file/c78f6c5cbea9">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/c78f6c5cbea9/a">file</a></li>
+<li class="active">diff</li>
+<li><a href="/annotate/c78f6c5cbea9/a">annotate</a></li>
+<li><a href="/log/c78f6c5cbea9/a">file log</a></li>
+<li><a href="/raw-file/c78f6c5cbea9/a">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>diff a @ 1:c78f6c5cbea9</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">del</div>
+
+<table id="changesetEntry">
+<tr>
+ <th>author</th>
+ <td>&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th>date</th>
+ <td>Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
+</tr>
+<tr>
+ <th>parents</th>
+ <td><a href="/file/cb9a9f314b8b/a">cb9a9f314b8b</a> </td>
+</tr>
+<tr>
+ <th>children</th>
+ <td></td>
+</tr>
+
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">diff</th>
+</tr>
+</table>
+
+<table class="bigtable parity0"><tr><td class="lineno"><a href="#l1.1" id="l1.1">     1.1</a></td><td class="source minusline">--- a/a	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.2" id="l1.2">     1.2</a></td><td class="source plusline">+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+</td></tr><tr><td class="lineno"><a href="#l1.3" id="l1.3">     1.3</a></td><td class="source atline">@@ -1,1 +0,0 @@
+</td></tr><tr><td class="lineno"><a href="#l1.4" id="l1.4">     1.4</a></td><td class="source minusline">-a
+</td></tr></table>
+</div>
+</div>
+</div>
+
+
 
 </body>
 </html>
 
-
-
--- a/tests/test-hgweb.out	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-hgweb.out	Sat Nov 08 00:29:04 2008 +0100
@@ -21,31 +21,55 @@
 % should give a 404 - static file that does not exist
 404 Not Found
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
-<title>Mercurial Error</title>
+<title>test: error</title>
 </head>
 <body>
 
-<h2>Mercurial Error</h2>
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://www.selenic.com/mercurial/">
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+<ul>
+<li><a href="/log">log</a></li>
+<li><a href="/graph">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+</div>
 
+<div class="main">
+
+<h2><a href="/">test</a></h2>
+<h3>error</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">
 <p>
 An error occurred while processing your request:
 </p>
 <p>
 Not Found
 </p>
+</div>
+</div>
+</div>
 
 
-<div class="logo">
-<a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
 
 </body>
 </html>
@@ -67,31 +91,55 @@
 error: bork@2ef0ac749a14: not found in manifest
 404 Not Found
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
-<title>Mercurial Error</title>
+<title>test: error</title>
 </head>
 <body>
 
-<h2>Mercurial Error</h2>
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://www.selenic.com/mercurial/">
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+<ul>
+<li><a href="/log">log</a></li>
+<li><a href="/graph">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+</div>
 
+<div class="main">
+
+<h2><a href="/">test</a></h2>
+<h3>error</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">
 <p>
 An error occurred while processing your request:
 </p>
 <p>
 bork@2ef0ac749a14: not found in manifest
 </p>
+</div>
+</div>
+</div>
 
 
-<div class="logo">
-<a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
 
 </body>
 </html>
--- a/tests/test-highlight.out	Fri Nov 07 23:31:12 2008 +0100
+++ b/tests/test-highlight.out	Sat Nov 08 00:29:04 2008 +0100
@@ -4,62 +4,89 @@
 % hgweb filerevision, html
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <link rel="stylesheet" href="/highlightcss" type="text/css" />
-<title>test:get-with-headers.py</title>
+<title>test: 7697c52ca9b0 get-with-headers.py</title>
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log/0">changelog</a>
-<a href="/shortlog/0">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/rev/7697c52ca9b0">changeset</a>
-<a href="/file/7697c52ca9b0/">files</a>
-<a href="/log/7697c52ca9b0/get-with-headers.py">revisions</a>
-<a href="/annotate/7697c52ca9b0/get-with-headers.py">annotate</a>
-<a href="/raw-file/7697c52ca9b0/get-with-headers.py">raw</a>
-</div>
-
-<h2>get-with-headers.py</h2>
-
-<table>
-<tr>
- <td class="metatag">changeset 0:</td>
- <td><a href="/rev/7697c52ca9b0">7697c52ca9b0</a></td></tr>
-
-
-<tr>
- <td class="metatag">author:</td>
- <td>&#116;&#101;&#115;&#116;</td></tr>
-<tr>
- <td class="metatag">date:</td>
- <td>Thu Jan 01 00:00:00 1970 +0000 (long ago)</td></tr>
-<tr>
- <td class="metatag">permissions:</td>
- <td>-rwxr-xr-x</td></tr>
-<tr>
-  <td class="metatag">description:</td>
-  <td>a</td>
-</tr>
-</table>
-
-<pre>
-<div class="parity0"><a class="lineno" href="#l1" id="l1">     1</a><span class="c">#!/usr/bin/env python</span></div><div class="parity1"><a class="lineno" href="#l2" id="l2">     2</a></div><div class="parity0"><a class="lineno" href="#l3" id="l3">     3</a><span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></div><div class="parity1"><a class="lineno" href="#l4" id="l4">     4</a><span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></div><div class="parity0"><a class="lineno" href="#l5" id="l5">     5</a></div><div class="parity1"><a class="lineno" href="#l6" id="l6">     6</a><span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span></div><div class="parity0"><a class="lineno" href="#l7" id="l7">     7</a></div><div class="parity1"><a class="lineno" href="#l8" id="l8">     8</a><span class="kn">try</span><span class="p">:</span></div><div class="parity0"><a class="lineno" href="#l9" id="l9">     9</a>    <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></div><div class="parity1"><a class="lineno" href="#l10" id="l10">    10</a>    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity0"><a class="lineno" href="#l11" id="l11">    11</a>    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity1"><a class="lineno" href="#l12" id="l12">    12</a><span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></div><div class="parity0"><a class="lineno" href="#l13" id="l13">    13</a>    <span class="kn">pass</span></div><div class="parity1"><a class="lineno" href="#l14" id="l14">    14</a></div><div class="parity0"><a class="lineno" href="#l15" id="l15">    15</a><span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></div><div class="parity1"><a class="lineno" href="#l16" id="l16">    16</a><span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></div><div class="parity0"><a class="lineno" href="#l17" id="l17">    17</a><span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></div><div class="parity1"><a class="lineno" href="#l18" id="l18">    18</a><span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></div><div class="parity0"><a class="lineno" href="#l19" id="l19">    19</a><span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></div><div class="parity1"><a class="lineno" href="#l20" id="l20">    20</a><span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></div><div class="parity0"><a class="lineno" href="#l21" id="l21">    21</a>    <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></div><div class="parity1"><a class="lineno" href="#l22" id="l22">    22</a>        <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></div><div class="parity0"><a class="lineno" href="#l23" id="l23">    23</a><span class="kn">print</span></div><div class="parity1"><a class="lineno" href="#l24" id="l24">    24</a><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">())</span></div><div class="parity0"><a class="lineno" href="#l25" id="l25">    25</a></div><div class="parity1"><a class="lineno" href="#l26" id="l26">    26</a><span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></div><div class="parity0"><a class="lineno" href="#l27" id="l27">    27</a>    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></div><div class="parity1"><a class="lineno" href="#l28" id="l28">    28</a><span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></div>
-</pre>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/7697c52ca9b0">log</a></li>
+<li><a href="/graph/7697c52ca9b0">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/7697c52ca9b0">changeset</a></li>
+<li><a href="/file/7697c52ca9b0/">browse</a></li>
+</ul>
+<ul>
+<li class="active">file</li>
+<li><a href="/diff/7697c52ca9b0/get-with-headers.py">diff</a></li>
+<li><a href="/annotate/7697c52ca9b0/get-with-headers.py">annotate</a></li>
+<li><a href="/log/7697c52ca9b0/get-with-headers.py">file log</a></li>
+<li><a href="/raw-file/7697c52ca9b0/get-with-headers.py">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>view get-with-headers.py @ 0:7697c52ca9b0</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">a</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">Thu Jan 01 00:00:00 1970 +0000 (long ago)</td>
+</tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author"></td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author"></td>
+</tr>
+
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">source</th>
+</tr>
+<tr class="parity0"><td class="lineno"><a href="#l1" id="l1">     1</a></td><td class="source"><span class="c">#!/usr/bin/env python</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l2" id="l2">     2</a></td><td class="source"></td></tr><tr class="parity0"><td class="lineno"><a href="#l3" id="l3">     3</a></td><td class="source"><span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l4" id="l4">     4</a></td><td class="source"><span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l5" id="l5">     5</a></td><td class="source"></td></tr><tr class="parity1"><td class="lineno"><a href="#l6" id="l6">     6</a></td><td class="source"><span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l7" id="l7">     7</a></td><td class="source"></td></tr><tr class="parity1"><td class="lineno"><a href="#l8" id="l8">     8</a></td><td class="source"><span class="kn">try</span><span class="p">:</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l9" id="l9">     9</a></td><td class="source">    <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l10" id="l10">    10</a></td><td class="source">    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l11" id="l11">    11</a></td><td class="source">    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l12" id="l12">    12</a></td><td class="source"><span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l13" id="l13">    13</a></td><td class="source">    <span class="kn">pass</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l14" id="l14">    14</a></td><td class="source"></td></tr><tr class="parity0"><td class="lineno"><a href="#l15" id="l15">    15</a></td><td class="source"><span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l16" id="l16">    16</a></td><td class="source"><span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l17" id="l17">    17</a></td><td class="source"><span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l18" id="l18">    18</a></td><td class="source"><span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l19" id="l19">    19</a></td><td class="source"><span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l20" id="l20">    20</a></td><td class="source"><span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l21" id="l21">    21</a></td><td class="source">    <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l22" id="l22">    22</a></td><td class="source">        <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l23" id="l23">    23</a></td><td class="source"><span class="kn">print</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l24" id="l24">    24</a></td><td class="source"><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">())</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l25" id="l25">    25</a></td><td class="source"></td></tr><tr class="parity1"><td class="lineno"><a href="#l26" id="l26">    26</a></td><td class="source"><span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></td></tr><tr class="parity0"><td class="lineno"><a href="#l27" id="l27">    27</a></td><td class="source">    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></td></tr><tr class="parity1"><td class="lineno"><a href="#l28" id="l28">    28</a></td><td class="source"><span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></td></tr>
+</table>
+</div>
+</div>
+</div>
+
+
 
 </body>
 </html>
@@ -67,62 +94,89 @@
 % hgweb filerevision, html
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <link rel="stylesheet" href="/highlightcss" type="text/css" />
-<title>test:isolatin</title>
+<title>test: 7697c52ca9b0 isolatin</title>
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log/0">changelog</a>
-<a href="/shortlog/0">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/rev/7697c52ca9b0">changeset</a>
-<a href="/file/7697c52ca9b0/">files</a>
-<a href="/log/7697c52ca9b0/isolatin">revisions</a>
-<a href="/annotate/7697c52ca9b0/isolatin">annotate</a>
-<a href="/raw-file/7697c52ca9b0/isolatin">raw</a>
-</div>
-
-<h2>isolatin</h2>
-
-<table>
-<tr>
- <td class="metatag">changeset 0:</td>
- <td><a href="/rev/7697c52ca9b0">7697c52ca9b0</a></td></tr>
-
-
-<tr>
- <td class="metatag">author:</td>
- <td>&#116;&#101;&#115;&#116;</td></tr>
-<tr>
- <td class="metatag">date:</td>
- <td>Thu Jan 01 00:00:00 1970 +0000 (long ago)</td></tr>
-<tr>
- <td class="metatag">permissions:</td>
- <td>-rw-r--r--</td></tr>
-<tr>
-  <td class="metatag">description:</td>
-  <td>a</td>
-</tr>
-</table>
-
-<pre>
-<div class="parity0"><a class="lineno" href="#l1" id="l1">     1</a>h?bsch</div>
-</pre>
-
-
+<div class="container">
+<div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
+<ul>
+<li><a href="/shortlog/7697c52ca9b0">log</a></li>
+<li><a href="/graph/7697c52ca9b0">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+<ul>
+<li><a href="/rev/7697c52ca9b0">changeset</a></li>
+<li><a href="/file/7697c52ca9b0/">browse</a></li>
+</ul>
+<ul>
+<li class="active">file</li>
+<li><a href="/diff/7697c52ca9b0/isolatin">diff</a></li>
+<li><a href="/annotate/7697c52ca9b0/isolatin">annotate</a></li>
+<li><a href="/log/7697c52ca9b0/isolatin">file log</a></li>
+<li><a href="/raw-file/7697c52ca9b0/isolatin">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>view isolatin @ 0:7697c52ca9b0</h3>
+
+<form class="search" action="/log">
+
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
+
+<div class="description">a</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">&#116;&#101;&#115;&#116;</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">Thu Jan 01 00:00:00 1970 +0000 (long ago)</td>
+</tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author"></td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author"></td>
+</tr>
+
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="lineno">line</th>
+ <th class="source">source</th>
+</tr>
+<tr class="parity0"><td class="lineno"><a href="#l1" id="l1">     1</a></td><td class="source">h?bsch</td></tr>
+</table>
+</div>
+</div>
+</div>
+
+
 
 </body>
 </html>
@@ -130,66 +184,93 @@
 % hgweb fileannotate, html
 200 Script output follows
 
+<!-- quirksmode -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <link rel="icon" href="/static/hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="/static/style.css" type="text/css" />
+<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <link rel="stylesheet" href="/highlightcss" type="text/css" />
 <title>test: get-with-headers.py annotate</title>
 </head>
 <body>
 
-<div class="buttons">
-<a href="/log/0">changelog</a>
-<a href="/shortlog/0">shortlog</a>
-<a href="/graph">graph</a>
-<a href="/tags">tags</a>
-<a href="/rev/7697c52ca9b0">changeset</a>
-<a href="/file/7697c52ca9b0/">files</a>
-<a href="/file/7697c52ca9b0/get-with-headers.py">file</a>
-<a href="/log/7697c52ca9b0/get-with-headers.py">revisions</a>
-<a href="/raw-annotate/7697c52ca9b0/get-with-headers.py">raw</a>
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://www.selenic.com/mercurial/">
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+<ul>
+<li><a href="/shortlog/7697c52ca9b0">log</a></li>
+<li><a href="/graph/7697c52ca9b0">graph</a></li>
+<li><a href="/tags">tags</a></li>
+</ul>
+
+<ul>
+<li><a href="/rev/7697c52ca9b0">changeset</a></li>
+<li><a href="/file/7697c52ca9b0/">browse</a></li>
+</ul>
+<ul>
+<li><a href="/file/7697c52ca9b0/get-with-headers.py">file</a></li>
+<li><a href="/diff/7697c52ca9b0/get-with-headers.py">diff</a></li>
+<li class="active">annotate</li>
+<li><a href="/log/7697c52ca9b0/get-with-headers.py">file log</a></li>
+<li><a href="/raw-annotate/7697c52ca9b0/get-with-headers.py">raw</a></li>
+</ul>
 </div>
 
-<h2>Annotate get-with-headers.py</h2>
+<div class="main">
+<h2><a href="/">test</a></h2>
+<h3>annotate get-with-headers.py @ 0:7697c52ca9b0</h3>
 
-<table>
-<tr>
- <td class="metatag">changeset 0:</td>
- <td><a href="/rev/7697c52ca9b0">7697c52ca9b0</a></td></tr>
+<form class="search" action="/log">
 
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<span>find changesets by author, revision,
+files, or words in the commit message</span>
+</form>
 
+<div class="description">a</div>
+
+<table id="changesetEntry">
 <tr>
- <td class="metatag">author:</td>
- <td>&#116;&#101;&#115;&#116;</td></tr>
-<tr>
- <td class="metatag">date:</td>
- <td>Thu Jan 01 00:00:00 1970 +0000 (long ago)</td>
+ <th class="author">author</th>
+ <td class="author">&#116;&#101;&#115;&#116;</td>
 </tr>
 <tr>
- <td class="metatag">permissions:</td>
- <td>-rwxr-xr-x</td>
+ <th class="date">date</th>
+ <td class="date">Thu Jan 01 00:00:00 1970 +0000 (long ago)</td>
 </tr>
 <tr>
-  <td class="metatag">description:</td>
-  <td>a</td>
+ <th class="author">parents</th>
+ <td class="author"></td>
 </tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author"></td>
+</tr>
+
 </table>
 
 <br/>
 
-<table cellspacing="0" cellpadding="0">
-<tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l1" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l1" id="l1">     1</a></td><td><pre><span class="c">#!/usr/bin/env python</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l2" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l2" id="l2">     2</a></td><td><pre></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l3" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l3" id="l3">     3</a></td><td><pre><span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l4" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l4" id="l4">     4</a></td><td><pre><span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l5" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l5" id="l5">     5</a></td><td><pre></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l6" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l6" id="l6">     6</a></td><td><pre><span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l7" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l7" id="l7">     7</a></td><td><pre></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l8" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l8" id="l8">     8</a></td><td><pre><span class="kn">try</span><span class="p">:</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l9" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l9" id="l9">     9</a></td><td><pre>    <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l10" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l10" id="l10">    10</a></td><td><pre>    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l11" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l11" id="l11">    11</a></td><td><pre>    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l12" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l12" id="l12">    12</a></td><td><pre><span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l13" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l13" id="l13">    13</a></td><td><pre>    <span class="kn">pass</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l14" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l14" id="l14">    14</a></td><td><pre></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l15" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l15" id="l15">    15</a></td><td><pre><span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l16" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l16" id="l16">    16</a></td><td><pre><span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l17" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l17" id="l17">    17</a></td><td><pre><span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l18" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l18" id="l18">    18</a></td><td><pre><span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l19" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l19" id="l19">    19</a></td><td><pre><span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l20" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l20" id="l20">    20</a></td><td><pre><span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l21" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l21" id="l21">    21</a></td><td><pre>    <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l22" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l22" id="l22">    22</a></td><td><pre>        <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l23" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l23" id="l23">    23</a></td><td><pre><span class="kn">print</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l24" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l24" id="l24">    24</a></td><td><pre><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">())</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l25" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l25" id="l25">    25</a></td><td><pre></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l26" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l26" id="l26">    26</a></td><td><pre><span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></pre></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l27" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l27" id="l27">    27</a></td><td><pre>    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></pre></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#l28" title="7697c52ca9b0: a">test@0</a></td><td><a class="lineno" href="#l28" id="l28">    28</a></td><td><pre><span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></pre></td></tr>
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="annotate">rev</th>
+ <th class="lineno">line</th>
+ <th class="line">source</th>
+</tr>
+<tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#1" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l1" id="l1">     1</a></td><td class="source"><span class="c">#!/usr/bin/env python</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#2" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l2" id="l2">     2</a></td><td class="source"></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#3" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l3" id="l3">     3</a></td><td class="source"><span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#4" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l4" id="l4">     4</a></td><td class="source"><span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#5" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l5" id="l5">     5</a></td><td class="source"></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#6" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l6" id="l6">     6</a></td><td class="source"><span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#7" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l7" id="l7">     7</a></td><td class="source"></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#8" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l8" id="l8">     8</a></td><td class="source"><span class="kn">try</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#9" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l9" id="l9">     9</a></td><td class="source">    <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#10" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l10" id="l10">    10</a></td><td class="source">    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#11" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l11" id="l11">    11</a></td><td class="source">    <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#12" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l12" id="l12">    12</a></td><td class="source"><span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#13" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l13" id="l13">    13</a></td><td class="source">    <span class="kn">pass</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#14" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l14" id="l14">    14</a></td><td class="source"></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#15" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l15" id="l15">    15</a></td><td class="source"><span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#16" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l16" id="l16">    16</a></td><td class="source"><span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#17" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l17" id="l17">    17</a></td><td class="source"><span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#18" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l18" id="l18">    18</a></td><td class="source"><span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#19" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l19" id="l19">    19</a></td><td class="source"><span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#20" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l20" id="l20">    20</a></td><td class="source"><span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#21" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l21" id="l21">    21</a></td><td class="source">    <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#22" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l22" id="l22">    22</a></td><td class="source">        <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#23" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l23" id="l23">    23</a></td><td class="source"><span class="kn">print</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#24" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l24" id="l24">    24</a></td><td class="source"><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">())</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#25" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l25" id="l25">    25</a></td><td class="source"></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#26" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l26" id="l26">    26</a></td><td class="source"><span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#27" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l27" id="l27">    27</a></td><td class="source">    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#28" title="7697c52ca9b0: a">test@0</a></td><td class="lineno"><a href="#l28" id="l28">    28</a></td><td class="source"><span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></td></tr>
 </table>
+</div>
+</div>
+</div>
 
 
-<div class="logo">
-<a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
 
 </body>
 </html>