Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/request.py @ 37616:5e81cf9651c1
hgweb: fallback to checking wsgireq.env for REPO_NAME for 3rd party hosting
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.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 05 Apr 2018 15:42:40 -0400 |
parents | da84e26d85ed |
children | 877185de62cf |
comparison
equal
deleted
inserted
replaced
37615:f3dc8239e3a9 | 37616:5e81cf9651c1 |
---|---|
159 if pycompat.ispy3: | 159 if pycompat.ispy3: |
160 env = {k.encode('latin-1'): v for k, v in env.iteritems()} | 160 env = {k.encode('latin-1'): v for k, v in env.iteritems()} |
161 env = {k: v.encode('latin-1') if isinstance(v, str) else v | 161 env = {k: v.encode('latin-1') if isinstance(v, str) else v |
162 for k, v in env.iteritems()} | 162 for k, v in env.iteritems()} |
163 | 163 |
164 # Some hosting solutions are emulating hgwebdir, and dispatching directly | |
165 # to an hgweb instance using this environment variable. This was always | |
166 # checked prior to d7fd203e36cc; keep doing so to avoid breaking them. | |
167 if not reponame: | |
168 reponame = env.get('REPO_NAME') | |
169 | |
164 if altbaseurl: | 170 if altbaseurl: |
165 altbaseurl = util.url(altbaseurl) | 171 altbaseurl = util.url(altbaseurl) |
166 | 172 |
167 # https://www.python.org/dev/peps/pep-0333/#environ-variables defines | 173 # https://www.python.org/dev/peps/pep-0333/#environ-variables defines |
168 # the environment variables. | 174 # the environment variables. |