hgweb: make viewing of non-text work in hgweb
We use mimetypes.guess_type to guess file types and util.binary to determine
whether a file is displayable as text.
This lets us display displayable text files in our normal source view.
Files that appear to be binary will be displayed as something like
"(binary:image/gif)".
Clicking on raw view will send the raw file with an appropriate MIME
type. Thus things like GIFs will now be viewable inside hgweb without
making a mess. Further, things like postscript files that are text
should show source in the normal view and a browser can launch a
postscript viewer for the raw view.
#header#
<title>#repo|escape#:#file#</title>
</head>
<body>
<div class="buttons">
<a href="?cl=#rev#">changelog</a>
<a href="?tags=">tags</a>
<a href="?cs=#node|short#">changeset</a>
<a href="?mf=#manifest|short#;path=#path#">manifest</a>
<a href="?fl=#filenode|short#;file=#file#">revisions</a>
<a href="?fa=#filenode|short#;file=#file#">annotate</a>
<a href="?f=#filenode|short#;file=#file#;style=raw">raw</a>
</div>
<h2>#file#</h2>
<table>
<tr>
<td class="metatag">changeset #rev#:</td>
<td><a href="?cs=#node|short#">#node|short#</a></td></tr>
#parent#
<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>
</table>
<pre>
#text%fileline#
</pre>
#footer#