# HG changeset patch # User Matt Mackall # Date 2010-04-26 16:03:40 # Node ID b1739ebb9f3f0ef8b19c87e1ebd2a36aac980e1e # Parent 264f69315002ea6fb8919918a9b345499e89e536 hgweb: synchronize fcgi and wsgi scripts diff --git a/contrib/hgwebdir.fcgi b/contrib/hgweb.fcgi rename from contrib/hgwebdir.fcgi rename to contrib/hgweb.fcgi --- a/contrib/hgwebdir.fcgi +++ b/contrib/hgweb.fcgi @@ -1,62 +1,18 @@ #!/usr/bin/env python # -# An example CGI script to export multiple hgweb repos, edit as necessary +# An example FastCGI script for use with flup, edit as necessary -# adjust python path if not a system-wide install: -#import sys -#sys.path.insert(0, "/path/to/python/lib") +# Path to repo or hgweb config to serve (see 'hg help hgweb') +config = "/path/to/repo/or/config" -# enable demandloading to reduce startup time -from mercurial import demandimport; demandimport.enable() +# Uncomment and adjust if Mercurial is not installed system-wide: +#import sys; sys.path.insert(0, "/path/to/python/lib") # Uncomment to send python tracebacks to the browser if an error occurs: -#import cgitb -#cgitb.enable() - -# If you'd like to serve pages with UTF-8 instead of your default -# locale charset, you can do so by uncommenting the following lines. -# Note that this will cause your .hgrc files to be interpreted in -# UTF-8 and all your repo files to be displayed using UTF-8. -# -#import os -#os.environ["HGENCODING"] = "UTF-8" - -from mercurial.hgweb.hgwebdir_mod import hgwebdir -from flup.server.fcgi import WSGIServer +#import cgitb; cgitb.enable() -# The config file looks like this. You can have paths to individual -# repos, collections of repos in a directory tree, or both. -# -# [paths] -# virtual/path1 = /real/path1 -# virtual/path2 = /real/path2 -# virtual/root = /real/root/* -# / = /real/root2/* -# -# [collections] -# /prefix/to/strip/off = /root/of/tree/full/of/repos -# -# paths example: -# -# * First two lines mount one repository into one virtual path, like -# '/real/path1' into 'virtual/path1'. -# -# * The third entry tells every mercurial repository found in -# '/real/root', recursively, should be mounted in 'virtual/root'. This -# format is preferred over the [collections] one, using absolute paths -# as configuration keys is not supported on every platform (including -# Windows). -# -# * The last entry is a special case mounting all repositories in -# '/real/root2' in the root of the virtual directory. -# -# collections example: say directory tree /foo contains repos /foo/bar, -# /foo/quux/baz. Give this config section: -# [collections] -# /foo = /foo -# Then repos will list as bar and quux/baz. -# -# Alternatively you can pass a list of ('virtual/path', '/real/path') tuples -# or use a dictionary with entries like 'virtual/path': '/real/path' - -WSGIServer(hgwebdir('hgweb.config')).run() +from mercurial import demandimport; demandimport.enable() +from mercurial.hgweb import hgweb +from flup.server.fcgi import WSGIServer +application = hgweb(config) +WSGIServer(application).run() diff --git a/contrib/hgwebdir.wsgi b/contrib/hgweb.wsgi rename from contrib/hgwebdir.wsgi rename to contrib/hgweb.wsgi --- a/contrib/hgwebdir.wsgi +++ b/contrib/hgweb.wsgi @@ -1,51 +1,16 @@ -# An example WSGI (use with mod_wsgi) script to export multiple hgweb repos +# An example WSGI for use with mod_wsgi, edit as necessary + +# Path to repo or hgweb config to serve (see 'hg help hgweb') +config = "/path/to/repo/or/config" -# adjust python path if not a system-wide install: -#import sys -#sys.path.insert(0, "/path/to/python/lib") +# Uncomment and adjust if Mercurial is not installed system-wide: +#import sys; sys.path.insert(0, "/path/to/python/lib") + +# Uncomment to send python tracebacks to the browser if an error occurs: +#import cgitb; cgitb.enable() # enable demandloading to reduce startup time from mercurial import demandimport; demandimport.enable() -from mercurial.hgweb.hgwebdir_mod import hgwebdir -# If you'd like to serve pages with UTF-8 instead of your default -# locale charset, you can do so by uncommenting the following lines. -# Note that this will cause your .hgrc files to be interpreted in -# UTF-8 and all your repo files to be displayed using UTF-8. -# -#import os -#os.environ["HGENCODING"] = "UTF-8" - -# The config file looks like this. You can have paths to individual -# repos, collections of repos in a directory tree, or both. -# -# [paths] -# virtual/path1 = /real/path1 -# virtual/path2 = /real/path2 -# virtual/root = /real/root/* -# / = /real/root2/* -# -# paths example: -# -# * First two lines mount one repository into one virtual path, like -# '/real/path1' into 'virtual/path1'. -# -# * The third entry tells every mercurial repository found in -# '/real/root', recursively, should be mounted in 'virtual/root'. This -# format is preferred over the [collections] one, using absolute paths -# as configuration keys is not supported on every platform (including -# Windows). -# -# * The last entry is a special case mounting all repositories in -# '/real/root2' in the root of the virtual directory. -# -# collections example: say directory tree /foo contains repos /foo/bar, -# /foo/quux/baz. Give this config section: -# [collections] -# /foo = /foo -# Then repos will list as bar and quux/baz. -# -# Alternatively you can pass a list of ('virtual/path', '/real/path') tuples -# or use a dictionary with entries like 'virtual/path': '/real/path' - -application = hgwebdir('hgweb.config') +from mercurial.hgweb import hgweb +application = hgweb(config)