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.