[PATCH 23 of 23 Series-D] hgweb: run with "unserved" filter

Mads Kiilerich mads at kiilerich.com
Sat Jan 12 07:58:42 CST 2013


Pierre-Yves David wrote, On 01/11/2013 01:24 AM:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at logilab.fr>
> # Date 1357863817 -3600
> # Node ID 90ab0b86f7ea316c50248c4d5a1e306140adecc6
> # Parent  e1cdae2adebfbf5dcbf401d70ebd69d129f63195
> hgweb: run with "unserved" filter
>
> This changeset enable the "unserved" filter on all repo used by hgweb.
>
> Hgweb misbehave in a lot of when filtering changeset are present but I do not
> expect normal people to have secret of obsolete changeset on they server.
> Misbehavior will be gradually fixed later.
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -5276,10 +5276,15 @@ def serve(ui, repo, **opts):
>       def checkrepo():
>           if repo is None:
>               raise error.RepoError(_("there is no Mercurial repository here"
>                                 " (.hg not found)"))
>   
> +

(No bonus points for extra blank lines.)

> +    if not opts["cmdserver"]:
> +        if repo is not None:
> +            repo = repo.filtered('unserved')
> +

hgweb will create its own repo instances anyway and presumably get the 
setting there, so I assume this sshserver only and should be moved to 
the stdio case below?

>       if opts["stdio"]:
>           checkrepo()
>           s = sshserver.sshserver(ui, repo)
>           s.serve_forever()
>   
> diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py
> --- a/mercurial/hgweb/hgweb_mod.py
> +++ b/mercurial/hgweb/hgweb_mod.py
> @@ -57,10 +57,11 @@ class hgweb(object):
>                   u = ui.ui()
>               self.repo = hg.repository(u, repo)
>           else:
>               self.repo = repo
>   
> +        self.repo =  self.repo.filtered('unserved')

+1 to keeping self.repo as the repo that actually is used and to avoid 
assigning temporary values of other "types" to it. That would also 
remove a couple of lines.

>           self.repo.ui.setconfig('ui', 'report_untrusted', 'off')
>           self.repo.ui.setconfig('ui', 'nontty', 'true')
>           hook.redirect(True)
>           self.mtime = -1
>           self.size = -1
> @@ -93,10 +94,11 @@ class hgweb(object):
>           # rollbacks made less than a second ago
>           if st.st_mtime != self.mtime or st.st_size != self.size:
>               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('unserved')

check-code should have said hi to extra spaces ...

/Mads


More information about the Mercurial-devel mailing list