#!/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.hgweb.hgwebdir_mod import hgwebdir from mercurial.hgweb.request import wsgiapplication import mercurial.hgweb.wsgicgi as wsgicgi # The config file looks like this. You can have paths to individual # repos, collections of repos in a directory tree, or both. # # [paths] # virtual/path = /real/path # virtual/path = /real/path # # [collections] # /prefix/to/strip/off = /root/of/tree/full/of/repos # # collections example: say directory tree /foo contains repos /foo/bar, # /foo/quux/baz. Give this config section: # [collections] # /foo = /foo # Then repos will list as bar and quux/baz. # Alternatively you can pass a list of ('virtual/path', '/real/path') tuples # or use a dictionary with entries like 'virtual/path': '/real/path' class unicode_hgwebdir(hgwebdir): def __init__(self, object): hgwebdir.__init__(self, object) def check_header(self, headers = [('Content-type', 'text/html')]): checked_headers = [] for item in headers: if str(item[1]).lower().find('text/html') != -1: checked_headers.append((item[0], 'text/html; charset=utf-8')) else: checked_headers.append(item) self.req_header(checked_headers) def run_wsgi(self, req): self.req_header = req.header req.header = self.check_header hgwebdir.run_wsgi(self, req) def make_web_app(): return unicode_hgwebdir("hgweb.config") wsgicgi.launch(wsgiapplication(make_web_app))