adding "prefix" option to "hg serve" (command line and [web] section)
allows "hg serve" to serve from a different path than '/' (server root)
--- a/mercurial/commands.py Tue Jan 08 21:12:30 2008 -0600
+++ b/mercurial/commands.py Wed Jan 09 11:15:00 2008 +0100
@@ -2393,7 +2393,7 @@
s.serve_forever()
parentui = ui.parentui or ui
- optlist = ("name templates style address port ipv6"
+ optlist = ("name templates style address port prefix ipv6"
" accesslog errorlog webdir_conf certificate")
for o in optlist.split():
if opts[o]:
@@ -3024,6 +3024,7 @@
('E', 'errorlog', '', _('name of error log file to write to')),
('p', 'port', 0, _('port to use (default: 8000)')),
('a', 'address', '', _('address to use')),
+ ('', 'prefix', '', _('prefix path to serve from (default: server root)')),
('n', 'name', '',
_('name to show in web pages (default: working dir)')),
('', 'webdir-conf', '', _('name of the webdir config file'
--- a/mercurial/hgweb/server.py Tue Jan 08 21:12:30 2008 -0600
+++ b/mercurial/hgweb/server.py Wed Jan 09 11:15:00 2008 +0100
@@ -76,7 +76,7 @@
self.do_POST()
def do_hgweb(self):
- path_info, query = _splitURI(self.path)
+ path, query = _splitURI(self.path)
env = {}
env['GATEWAY_INTERFACE'] = 'CGI/1.1'
@@ -84,8 +84,8 @@
env['SERVER_NAME'] = self.server.server_name
env['SERVER_PORT'] = str(self.server.server_port)
env['REQUEST_URI'] = self.path
- env['SCRIPT_NAME'] = ''
- env['PATH_INFO'] = path_info
+ env['SCRIPT_NAME'] = self.server.prefix
+ env['PATH_INFO'] = path[len(self.server.prefix):]
env['REMOTE_HOST'] = self.client_address[0]
env['REMOTE_ADDR'] = self.client_address[0]
if query:
@@ -206,6 +206,7 @@
myui = repo.ui
address = myui.config("web", "address", "")
port = int(myui.config("web", "port", 8000))
+ prefix = myui.config("web", "prefix", "").rstrip("/")
use_ipv6 = myui.configbool("web", "ipv6")
webdir_conf = myui.config("web", "webdir_conf")
ssl_cert = myui.config("web", "certificate")
@@ -254,6 +255,7 @@
addr = socket.gethostname()
self.addr, self.port = addr, port
+ self.prefix = prefix
if ssl_cert:
try:
--- a/tests/test-debugcomplete.out Tue Jan 08 21:12:30 2008 -0600
+++ b/tests/test-debugcomplete.out Wed Jan 09 11:15:00 2008 +0100
@@ -129,6 +129,7 @@
--noninteractive
--pid-file
--port
+--prefix
--profile
--quiet
--repository