diff --git a/mercurial/hgweb.py b/mercurial/hgweb.py --- a/mercurial/hgweb.py +++ b/mercurial/hgweb.py @@ -10,6 +10,7 @@ import os, cgi, sys from demandload import demandload demandload(globals(), "mdiff time re socket zlib errno ui hg ConfigParser") demandload(globals(), "zipfile tempfile StringIO tarfile BaseHTTPServer util") +demandload(globals(), "mimetypes") from node import * from i18n import gettext as _ @@ -466,6 +467,11 @@ class hgweb: cs = cl.read(cn) mfn = cs[0] + mt = mimetypes.guess_type(f)[0] + rawtext = text + if util.binary(text): + text = "(binary:%s)" % mt + def lines(): for l, t in enumerate(text.splitlines(1)): yield {"line": t, @@ -477,6 +483,8 @@ class hgweb: filenode=node, path=up(f), text=lines(), + raw=rawtext, + mimetype=mt, rev=changerev, node=hex(cn), manifest=hex(mfn), diff --git a/templates/filerevision-raw.tmpl b/templates/filerevision-raw.tmpl --- a/templates/filerevision-raw.tmpl +++ b/templates/filerevision-raw.tmpl @@ -1,3 +1,4 @@ -#header# -#text%fileline# -#footer# +Context-type: #mimetype# +Content-disposition: filename=#file# + +#raw# diff --git a/templates/filerevision.tmpl b/templates/filerevision.tmpl --- a/templates/filerevision.tmpl +++ b/templates/filerevision.tmpl @@ -10,7 +10,7 @@ manifest revisions annotate -raw +raw

#file#