# HG changeset patch # User Chris Cannam # Date 1501842294 -3600 # Node ID d1de6986e42916259a29e5203f1c130561eb37c0 # Parent 42618fc5ab46a87f1f28587123bebb82547ee151 Scripts to run the Hg repos diff -r 42618fc5ab46 -r d1de6986e429 extra/soundsoftware/dockertest/Dockerfile --- a/extra/soundsoftware/dockertest/Dockerfile Fri Aug 04 10:51:31 2017 +0100 +++ b/extra/soundsoftware/dockertest/Dockerfile Fri Aug 04 11:24:54 2017 +0100 @@ -62,6 +62,16 @@ RUN find /var/www/code -type d -exec chmod g+s \{\} \; +# Initialise /var/hg (in reality this would be mounted from somewhere) + +RUN mkdir -p /var/hg +RUN chown code.www-data /var/hg +RUN chmod g+s /var/hg +COPY extra/soundsoftware/dockertest/index.cgi /var/hg/ +COPY extra/soundsoftware/dockertest/hgweb.config /var/hg/ +RUN chmod +x /var/hg/index.cgi + + # We're based in the code webapp directory from here on WORKDIR /var/www/code diff -r 42618fc5ab46 -r d1de6986e429 extra/soundsoftware/dockertest/code.conf --- a/extra/soundsoftware/dockertest/code.conf Fri Aug 04 10:51:31 2017 +0100 +++ b/extra/soundsoftware/dockertest/code.conf Fri Aug 04 11:24:54 2017 +0100 @@ -61,7 +61,8 @@ SoundSoftwareDbUser "code" SoundSoftwareDbPass "INSERT_POSTGRES_PASSWORD_HERE" SoundSoftwareRepoPrefix "/var/hg/" - SoundSoftwareSslRequired "on" + #!!! "on" in production please!: + SoundSoftwareSslRequired "off" Options +ExecCGI AddHandler cgi-script .cgi ExpiresDefault now diff -r 42618fc5ab46 -r d1de6986e429 extra/soundsoftware/dockertest/hgweb.config --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/soundsoftware/dockertest/hgweb.config Fri Aug 04 11:24:54 2017 +0100 @@ -0,0 +1,6 @@ +[paths] +/ = /var/hg/* + +[web] +allow_archive = gz, zip, bz2 +allow_push = * diff -r 42618fc5ab46 -r d1de6986e429 extra/soundsoftware/dockertest/index.cgi --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/soundsoftware/dockertest/index.cgi Fri Aug 04 11:24:54 2017 +0100 @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# +# An example CGI script to export multiple hgweb repos, edit as necessary + +# adjust python path if not a system-wide install: +#import sys +#sys.path.insert(0, "/path/to/python/lib") + +# enable importing on demand to reduce startup time +from mercurial import demandimport; demandimport.enable() + +# 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 +import mercurial.hgweb.wsgicgi as wsgicgi + +# 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/* +# virtual/root2 = /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 mounts every mercurial repository found in '/real/root' +# in 'virtual/root'. This format is preferred over the [collections] one, +# since using absolute paths as configuration keys is not supported on every +# platform (especially on Windows). +# +# * The fourth entry is a special case mounting all repositories in +# /'real/root2' in the root of the virtual directory. +# +# * The fifth entry recursively finds all repositories under the real root, +# and mounts them using their relative path (to given real root) under the +# virtual root. +# +# 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') +wsgicgi.launch(application)