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.
#!/usr/bin/env python
#
# An example CGI script to export multiple hgweb repos, edit as necessary
import cgitb, sys
cgitb.enable()
# sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install
from mercurial import hgweb
# The config file looks like this:
# [paths]
# virtual/path = /real/path
# virtual/path = /real/path
# Alternatively you can pass a list of ('virtual/path', '/real/path') tuples
# or use a dictionary with entries like 'virtual/path': '/real/path'
h = hgweb.hgwebdir("hgweb.config")
h.run()