[PATCH 1 of 2] hgweb: fallback to checking wsgireq.env for REPO_NAME for 3rd party hosting
Gregory Szorc
gregory.szorc at gmail.com
Thu Apr 12 20:26:22 EDT 2018
On Fri, Apr 6, 2018 at 3:18 PM, Matt Harbison <mharbison72 at gmail.com> wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1522957360 14400
> # Thu Apr 05 15:42:40 2018 -0400
> # Node ID d2fd52e2e5e0ce6369c551e7e00c06d36c21658f
> # Parent d3286dd2ca2f9f9e2b332e00c4b25b21729c54f5
> hgweb: fallback to checking wsgireq.env for REPO_NAME for 3rd party hosting
>
Queued this series.
>
> Starting with d7fd203e36cc, SCM Manager began to 404 any repository access.
> What's happening is that it is generating a python script that creates an
> hgweb
> application (not hgwebdir), and launches hgweb via wsgicgi. It must be
> setting
> REPO_NAME in the process environment before launching this script, which
> gets
> picked up and put into wsgireq.env when wsgicgi launches the hgweb
> application.
> From there, other variables (notably 'apppath' and 'dispatchpath') are
> constructed differently.
>
> d7fd203e36cc^ (working):
>
> apppath: /hg/eng/devsetup
> dispatchpath:
> pathinfo: /eng/devsetup
> reponame: eng/devsetup
>
> d7fd203e36cc:
>
> apppath: /hg
> dispatchpath: eng/devsetup
> pathinfo: /eng/devsetup
> reponame: None
> REPO_NAME: eng/devsetup
>
> Rather than having an existing installation break when Mercurial is
> upgraded,
> just resume checking the environment. I have no idea how many other
> hosting
> solutions would break without restoring this.
>
I was worried about someone relying on REPO_NAME. I was hoping we could get
away with that BC bustage. But I guess people in the wild are setting it.
Oh well. No big deal.
>
> diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py
> --- a/mercurial/hgweb/request.py
> +++ b/mercurial/hgweb/request.py
> @@ -162,6 +162,12 @@ def parserequestfromenv(env, reponame=No
> env = {k: v.encode('latin-1') if isinstance(v, str) else v
> for k, v in env.iteritems()}
>
> + # Some hosting solutions are emulating hgwebdir, and dispatching
> directly
> + # to an hgweb instance using this environment variable. This was
> always
> + # checked prior to d7fd203e36cc; keep doing so to avoid breaking them.
> + if not reponame:
> + reponame = env.get('REPO_NAME')
> +
> if altbaseurl:
> altbaseurl = util.url(altbaseurl)
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20180412/6e363a94/attachment.html>
More information about the Mercurial-devel
mailing list