# HG changeset patch # User mpm@selenic.com # Date 1124330257 28800 # Node ID 54b2a42e501e9c2462ec4bb152c13ef8625f40c4 # Parent e4f1b76831b2034eb65d53f350cf34a0dca1fcce hgweb: add [web] section to hgrc This makes almost all of the hgweb settings available in hgrc. diff -r e4f1b76831b2 -r 54b2a42e501e doc/hgrc.5.txt --- a/doc/hgrc.5.txt Wed Aug 17 16:37:04 2005 -0800 +++ b/doc/hgrc.5.txt Wed Aug 17 17:57:37 2005 -0800 @@ -110,6 +110,24 @@ verbose;; Increase the amount of output printed. True or False. Default is False. +web:: + Web interface configuration. + name;; + Repository name to use in the web interface. Default is current + working directory. + address;; + Interface address to bind to. Default is all. + port;; + Port to listen on. Default is 8000. + ipv6;; + Whether to use IPv6. Default is false. + accesslog;; + Where to output the access log. Default is stdout. + errorlog;; + Where to output the error log. Default is stderr. + templates;; + Where to find the HTML templates. Default is install path. + AUTHOR ------ Bryan O'Sullivan . diff -r e4f1b76831b2 -r 54b2a42e501e mercurial/commands.py --- a/mercurial/commands.py Wed Aug 17 16:37:04 2005 -0800 +++ b/mercurial/commands.py Wed Aug 17 17:57:37 2005 -0800 @@ -1087,16 +1087,9 @@ r = repo.addchangegroup(fin) respond("") - def openlog(opt, default): - if opts[opt] and opts[opt] != '-': - return open(opts[opt], 'w') - else: - return default - httpd = hgweb.create_server(repo.root, opts["name"], opts["templates"], opts["address"], opts["port"], opts["ipv6"], - openlog('accesslog', sys.stdout), - openlog('errorlog', sys.stderr)) + opts['accesslog'], opts['errorlog']) if ui.verbose: addr, port = httpd.socket.getsockname() if addr == '0.0.0.0': @@ -1368,9 +1361,9 @@ (serve, [('A', 'accesslog', '', 'access log file'), ('E', 'errorlog', '', 'error log file'), - ('p', 'port', 8000, 'listen port'), + ('p', 'port', 0, 'listen port'), ('a', 'address', '', 'interface address'), - ('n', 'name', os.getcwd(), 'repository name'), + ('n', 'name', "", 'repository name'), ('', 'stdio', None, 'for remote clients'), ('t', 'templates', "", 'template map'), ('6', 'ipv6', None, 'use IPv6 in addition to IPv4')], diff -r e4f1b76831b2 -r 54b2a42e501e mercurial/hgweb.py --- a/mercurial/hgweb.py Wed Aug 17 16:37:04 2005 -0800 +++ b/mercurial/hgweb.py Wed Aug 17 17:57:37 2005 -0800 @@ -119,7 +119,7 @@ maxfiles = 10 def __init__(self, path, name, templates = ""): - self.templates = templates or templatepath() + self.templates = templates self.reponame = name self.path = path self.mtime = -1 @@ -603,7 +603,9 @@ self.refresh() args = cgi.parse() - m = os.path.join(self.templates, "map") + t = self.templates or self.repo.ui.config("web", "templates", + templatepath()) + m = os.path.join(t, "map") if args.has_key('style'): b = os.path.basename("map-" + args['style'][0]) p = os.path.join(self.templates, b) @@ -615,9 +617,11 @@ if "?" in uri: uri = uri.split("?")[0] url = "http://%s%s%s" % (os.environ["SERVER_NAME"], port, uri) + name = self.reponame or self.repo.ui.config("web", "name", os.getcwd()) + self.t = templater(m, self.filters, {"url":url, - "repo":self.reponame, + "repo":name, "header":header, "footer":footer, }) @@ -705,6 +709,26 @@ def create_server(path, name, templates, address, port, use_ipv6 = False, accesslog = sys.stdout, errorlog = sys.stderr): + def openlog(opt, default): + if opt and opt != '-': + return open(opt, 'w') + return default + + u = ui() + repo = repository(u, path) + if not address: + address = u.config("web", "address", "") + if not port: + print port + port = int(u.config("web", "port", 8000)) + if not use_ipv6: + use_ipv6 = u.configbool("web", "ipv6") + + accesslog = openlog(accesslog or u.config("web", "accesslog", "-"), + sys.stdout) + errorlog = openlog(errorlog or u.config("web", "errorlog", "-"), + sys.stderr) + import BaseHTTPServer class IPv6HTTPServer(BaseHTTPServer.HTTPServer):