##// END OF EJS Templates
uncommit: simplify condition for keeping commit...
uncommit: simplify condition for keeping commit We used to keep the commit if it would have become empty and --keep was not passed. Since we just changed it so we also keep it if any patterns were passed on the command line, the only remaining case where we prune the commit is when no arguments were passed and --keep was not passed either, we can simplify the "not files and not allowempty" to just "not allowempty". Let's also rename "allowempty" to "keepcommit" since it's no longer about allowing an empty commit. Differential Revision: https://phab.mercurial-scm.org/D2891

File last commit:

r34513:482d6f6d default
r36992:435b8b05 default
Show More
wsgicgi.py
90 lines | 2.8 KiB | text/x-python | PythonLexer
Eric Hopper
This patch make several WSGI related alterations....
r2506 # hgweb/wsgicgi.py - CGI->WSGI translator
#
# Copyright 2006 Eric Hopper <hopper@omnifarious.org>
#
Martin Geisler
updated license to be explicit about GPL version 2
r8225 # This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
Eric Hopper
This patch make several WSGI related alterations....
r2506 #
# This was originally copied from the public domain code at
# http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side
Yuya Nishihara
hgweb: use absolute_import
r27046 from __future__ import absolute_import
from .. import (
Pulkit Goyal
py3: replace os.environ with encoding.environ (part 3 of 5)
r30636 encoding,
Yuya Nishihara
hgweb: use absolute_import
r27046 util,
)
from . import (
common,
)
Eric Hopper
This patch make several WSGI related alterations....
r2506
def launch(application):
Yuya Nishihara
py3: bulk replace sys.stdin/out/err by util's...
r30473 util.setbinary(util.stdin)
util.setbinary(util.stdout)
Eric Hopper
This patch make several WSGI related alterations....
r2506
Pulkit Goyal
py3: replace os.environ with encoding.environ (part 3 of 5)
r30636 environ = dict(encoding.environ.iteritems())
Augie Fackler
hgweb: when constructing or adding to a wsgi environ dict, use native strs...
r34513 environ.setdefault(r'PATH_INFO', '')
if environ.get(r'SERVER_SOFTWARE', r'').startswith(r'Microsoft-IIS'):
Mads Kiilerich
fix trivial spelling errors
r17424 # IIS includes script_name in PATH_INFO
Augie Fackler
hgweb: when constructing or adding to a wsgi environ dict, use native strs...
r34513 scriptname = environ[r'SCRIPT_NAME']
if environ[r'PATH_INFO'].startswith(scriptname):
environ[r'PATH_INFO'] = environ[r'PATH_INFO'][len(scriptname):]
Dirkjan Ochtman
hgweb: support broken IIS 5 behavior with .cgi in PATH_INFO
r7406
Yuya Nishihara
py3: bulk replace sys.stdin/out/err by util's...
r30473 stdin = util.stdin
Augie Fackler
hgweb: when constructing or adding to a wsgi environ dict, use native strs...
r34513 if environ.get(r'HTTP_EXPECT', r'').lower() == r'100-continue':
Yuya Nishihara
py3: bulk replace sys.stdin/out/err by util's...
r30473 stdin = common.continuereader(stdin, util.stdout.write)
Augie Fackler
hgweb: add support for 100-continue as recommended by PEP 333.
r13570
Augie Fackler
hgweb: when constructing or adding to a wsgi environ dict, use native strs...
r34513 environ[r'wsgi.input'] = stdin
environ[r'wsgi.errors'] = util.stderr
environ[r'wsgi.version'] = (1, 0)
environ[r'wsgi.multithread'] = False
environ[r'wsgi.multiprocess'] = True
environ[r'wsgi.run_once'] = True
Eric Hopper
This patch make several WSGI related alterations....
r2506
Augie Fackler
hgweb: when constructing or adding to a wsgi environ dict, use native strs...
r34513 if environ.get(r'HTTPS', r'off').lower() in (r'on', r'1', r'yes'):
environ[r'wsgi.url_scheme'] = r'https'
Eric Hopper
This patch make several WSGI related alterations....
r2506 else:
Augie Fackler
hgweb: when constructing or adding to a wsgi environ dict, use native strs...
r34513 environ[r'wsgi.url_scheme'] = r'http'
Eric Hopper
This patch make several WSGI related alterations....
r2506
headers_set = []
headers_sent = []
Yuya Nishihara
py3: bulk replace sys.stdin/out/err by util's...
r30473 out = util.stdout
Eric Hopper
This patch make several WSGI related alterations....
r2506
def write(data):
if not headers_set:
Thomas Arendsen Hein
white space and line break cleanups
r3673 raise AssertionError("write() before start_response()")
Eric Hopper
This patch make several WSGI related alterations....
r2506
elif not headers_sent:
Thomas Arendsen Hein
white space and line break cleanups
r3673 # Before the first output, send the stored headers
status, response_headers = headers_sent[:] = headers_set
out.write('Status: %s\r\n' % status)
for header in response_headers:
out.write('%s: %s\r\n' % header)
out.write('\r\n')
Eric Hopper
This patch make several WSGI related alterations....
r2506
Alexis S. L. Carvalho
hgweb: fix unbundle....
r2558 out.write(data)
out.flush()
Eric Hopper
This patch make several WSGI related alterations....
r2506
Thomas Arendsen Hein
white space and line break cleanups
r3673 def start_response(status, response_headers, exc_info=None):
Eric Hopper
This patch make several WSGI related alterations....
r2506 if exc_info:
try:
if headers_sent:
# Re-raise original exception if headers sent
Peter Ruibal
use Exception(args)-style raising consistently (py3k compatibility)
r7008 raise exc_info[0](exc_info[1], exc_info[2])
Eric Hopper
This patch make several WSGI related alterations....
r2506 finally:
exc_info = None # avoid dangling circular ref
elif headers_set:
raise AssertionError("Headers already set!")
Thomas Arendsen Hein
white space and line break cleanups
r3673 headers_set[:] = [status, response_headers]
Eric Hopper
This patch make several WSGI related alterations....
r2506 return write
Dirkjan Ochtman
hgweb: fix WSGI iterators handling in CGI adapter (issue1254)
r6922 content = application(environ, start_response)
Konstantin Zemlyak
wsgicgi: call close() on iterable to avoid resource leaks...
r10753 try:
for chunk in content:
write(chunk)
Mads Kiilerich
hgweb.cgi: fix internal WSGI emulation (issue3804)...
r18552 if not headers_sent:
write('') # send headers now if body was empty
Konstantin Zemlyak
wsgicgi: call close() on iterable to avoid resource leaks...
r10753 finally:
Alex Gaynor
style: never use a space before a colon or comma...
r34487 getattr(content, 'close', lambda: None)()