changeset 4079:40c9710e8182

Pass a ui from create_server to hgwebdir and a repo from hgwebdir to hgweb This allows repo pages to respect hg serve --webdir-conf <file> --style=gitweb (part of issue253). Since we're creating a ui object anyway, use it as the parentui of the ui objects created for every repo entry. This has the unintended side-effect that --name=foo on the command line will set the name of all repos. If one of the repos being served has a .hg/hgrc owned by a user that is not trusted, hg will now print the "Not trusting file..." warning when reading it. This is consistent with the behaviour from a hg serve from inside the repo.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Tue, 13 Feb 2007 10:01:44 -0200
parents ff08cebcd116
children ef14fdb675da
files mercurial/hgweb/hgwebdir_mod.py mercurial/hgweb/server.py
diffstat 2 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hgweb/hgwebdir_mod.py	Tue Feb 13 10:00:17 2007 -0200
+++ b/mercurial/hgweb/hgwebdir_mod.py	Tue Feb 13 10:01:44 2007 -0200
@@ -16,10 +16,11 @@
 
 # This is a stopgap
 class hgwebdir(object):
-    def __init__(self, config):
+    def __init__(self, config, parentui=None):
         def cleannames(items):
             return [(name.strip(os.sep), path) for name, path in items]
 
+        self.parentui = parentui
         self.motd = ""
         self.style = ""
         self.repos_sorted = ('name', False)
@@ -73,6 +74,8 @@
         def motd(**map):
             yield self.motd
 
+        parentui = self.parentui or ui.ui(report_untrusted=False)
+
         url = req.env['REQUEST_URI'].split('?')[0]
         if not url.endswith('/'):
             url += '/'
@@ -111,7 +114,7 @@
             rows = []
             parity = 0
             for name, path in self.repos:
-                u = ui.ui(report_untrusted=False)
+                u = ui.ui(parentui=parentui)
                 try:
                     u.readconfig(os.path.join(path, '.hg', 'hgrc'))
                 except IOError:
@@ -179,7 +182,8 @@
             if real:
                 req.env['REPO_NAME'] = virtual
                 try:
-                    hgweb(real).run_wsgi(req)
+                    repo = hg.repository(parentui, real)
+                    hgweb(repo).run_wsgi(req)
                 except IOError, inst:
                     req.write(tmpl("error", error=inst.strerror))
                 except hg.RepoError, inst:
--- a/mercurial/hgweb/server.py	Tue Feb 13 10:00:17 2007 -0200
+++ b/mercurial/hgweb/server.py	Tue Feb 13 10:01:44 2007 -0200
@@ -220,7 +220,7 @@
 
         def make_handler(self):
             if self.webdir_conf:
-                hgwebobj = self.webdirmaker(self.webdir_conf)
+                hgwebobj = self.webdirmaker(self.webdir_conf, ui)
             elif self.repo is not None:
                 hgwebobj = self.repoviewmaker(repo.__class__(repo.ui,
                                                              repo.origroot))