Note:
This page appears to contain material that is no longer relevant. Please help improve this page by updating its content.
This page describes how to setup the hgwebdir.cgi script on a Unix server to which you only have FTP access. See also HgWebDirStepByStep.
The multiple repository CGI server is now described in the Publishing Repositories document together with other related information. However, this guide gives some additional useful details for publishing repositories.
Starting with version 1.6 of Mercurial, the hgwebdir.cgi script has been unified with the hgweb.cgi script. Wherever hgwebdir.cgi is referred to in these directions, you can substitute the hgweb.cgi script instead.
Prerequisites
FTP access, Python, and a cgi-bin directory
Consider using a webshell like PHP Shell
How to do it
Make a directory /path/to/repos to which the webserver may write
- Ensure that the directory is writable
Upload test.sh
echo test > /path/to/repos/test
to your cgi-bin/ and make it executable: 'chmod a+x test.sh'.
Open http://yourdomain/cgi-bin/test.sh - you'll get an server error, but that's okay
Now there should be a file /path/to/repos/test
Delete the file and test.sh
Upload a recent version of Mercurial to the server (e.g. the whole /usr/lib/python2.4/site-packages/mercurial/) into /path/to/private_python_libs/mercurial. It must be compiled for the architecture of the server (you may try to extract a precompiled version from a deb or rpm). It was reported that deleting the *.pyc files helped.
Make a new subdir cgi-bin/hg/
Change hgwebdir.cgi locally to load Mercurial on the server:
# Uncomment to send python tracebacks to the browser if an error occurs: import cgitb cgitb.enable() # adjust python path if not a system-wide install: import sys sys.path.insert(0, "/path/to/private_python_libs/") #note that this is one dir up from Mercurial
and upload it into cgi-bin/hg/. Make it executable.
Make a hgweb.config:
[collections] /path/to/repos/ = /path/to/repos/
and upload it to cgi-bin/hg/.
Upload an existing repository myrep into /path/to/repos/myrep and make it writable by the server.
You should now be able to access it at http://yourdomain/cgi-bin/hg/hgwebdir.cgi
You will probably want to change /path/to/repos/myrep/.hg/hgrc to contain something like:
[web] contact = John Doe description = This my rep push_ssl = false allow_archive = gz zip bz2 style = gitweb #everybody may change it! allow_push = *