diff -r 0af2fe7b3274 -r 36549fa712da mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py Thu Jan 31 22:30:52 2013 +0100 +++ b/mercurial/hgweb/hgweb_mod.py Thu Jan 31 19:56:55 2013 +0100 @@ -7,7 +7,7 @@ # GNU General Public License version 2 or any later version. import os -from mercurial import ui, hg, hook, error, encoding, templater, util +from mercurial import ui, hg, hook, error, encoding, templater, util, repoview from common import get_stat, ErrorResponse, permhooks, caching from common import HTTP_OK, HTTP_NOT_MODIFIED, HTTP_BAD_REQUEST from common import HTTP_NOT_FOUND, HTTP_SERVER_ERROR @@ -61,7 +61,7 @@ else: self.repo = repo - self.repo = self.repo.filtered('served') + self.repo = self._getview(self.repo) self.repo.ui.setconfig('ui', 'report_untrusted', 'off') self.repo.ui.setconfig('ui', 'nontty', 'true') hook.redirect(True) @@ -88,6 +88,15 @@ return self.repo.ui.configlist(section, name, default, untrusted=untrusted) + def _getview(self, repo): + viewconfig = self.config('web', 'view', 'served') + if viewconfig == 'all': + return repo.unfiltered() + elif viewconfig in repoview.filtertable: + return repo.filtered(viewconfig) + else: + return repo.filtered('served') + def refresh(self, request=None): if request: self.repo.ui.environ = request.env @@ -98,7 +107,7 @@ self.mtime = st.st_mtime self.size = st.st_size self.repo = hg.repository(self.repo.ui, self.repo.root) - self.repo = self.repo.filtered('served') + self.repo = self._getview(self.repo) self.maxchanges = int(self.config("web", "maxchanges", 10)) self.stripecount = int(self.config("web", "stripes", 1)) self.maxshortchanges = int(self.config("web", "maxshortchanges",