Make sure the repository names don't have slashes at the at or else in some
cases env[path_info] will not find an defined repository.
REQUEST_URI can contain a query_string appending the repository name would
lead to corrupt urls.
--- a/mercurial/hgweb.py Tue Aug 30 18:23:39 2005 +0200
+++ b/mercurial/hgweb.py Tue Aug 30 21:58:44 2005 +0200
@@ -927,15 +927,18 @@
# This is a stopgap
class hgwebdir:
def __init__(self, config):
+ def cleannames(items):
+ return [(name.strip('/'), path) for name, path in items]
+
if type(config) == type([]):
- self.repos = config
+ self.repos = cleannames(config)
elif type(config) == type({}):
- self.repos = config.items()
+ self.repos = cleannames(config.items())
self.repos.sort()
else:
cp = ConfigParser.SafeConfigParser()
cp.read(config)
- self.repos = cp.items("paths")
+ self.repos = cleannames(cp.items("paths"))
self.repos.sort()
def run(self, req=hgrequest()):
@@ -956,7 +959,7 @@
u.readconfig(file(os.path.join(path, '.hg', 'hgrc')))
get = u.config
- url = ('/'.join([req.env["REQUEST_URI"], name])
+ url = ('/'.join([req.env["REQUEST_URI"].split('?')[0], name])
.replace("//", "/"))
yield dict(contact=get("web", "contact") or