I am trying to setup a central repository with shared hosting. I read all the way through this tutorial https://www.mercurial-scm.org/wiki/PublishingRepositories to no avail. Here are the steps I took.
1. Copy hgwebdir.cgi file to directory at http://url.com/central_repository/hgwebdir.cgi
2. Added the following information to the hgweb.config file and copied it to same place.
[paths]
projectname = /home/username/central_repository/projectname
[web]
baseurl = /hg
3. Added the following to an htaccess file and copied it to the same place
# Taken from http://www.pmwiki.org/wiki/Cookbook/CleanUrls#samedir
# Used at http://ggap.sf.net/hg/
Options +ExecCGI
RewriteEngine On
#write base depending on where the base url lives
RewriteBase /hg
RewriteRule ^$ hgwebdir.cgi [L]
# Send requests for files that exist to those files.
RewriteCond %{REQUEST_FILENAME} !-f
# Send requests for directories that exist to those directories.
RewriteCond %{REQUEST_FILENAME} !-d
# Send requests to hgwebdir.cgi, appending the rest of url.
RewriteRule (.*) hgwebdir.cgi/$1 [QSA,L]
4. Uploaded the repository without the working directory to /home/user/central_repository/projectname
5. Tried to clone the repository to my computer using the folloing destination path: http://url.com/hg/projectname
After going through these steps I get a 404: Not Found error.
However if I change the destination path to http://url.com/central_repository/projectname It acts like it found the repository, It tells me it found the changesets, and it was adding the changesets and manifests, but then it says "transaction abort! HTTP Error 500: Internal Server Error.
Thanks for any help! Metropolis
EDIT
Also whenever I try to put the ScriptAlias, Alias, the previous content, or the following content into an htaccess file, I get a 500 internal server error.
<Directory "/home/username/central_repository/projectname">
DirectoryIndex index.cgi
AddHandler cgi-script .cgi
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
In fact, if I take everything out of the hgwebdir.cgi file except for the following, I get a 500 error.
#!/usr/bin/env python
#
# An example CGI script to export multiple hgweb repos, edit as necessary
I even tried putting this file in the cgi-bin directory and I am still getting the error. I also was sure to put the file permissions to 755. Is it possible I can not run python files on this server?
If the .cgi extension isn't already mapped to the cgi handler in your host's Apache config you either need a ScriptAlias or AddHandler line for your hgwebdir.cgi script. Actually you can get rid of all that unnecessary RewriteCond and RewriteRule stuff if you just do a single ScriptAlias:
Also the repo has a /home/user/central_repository/projectname/.hg directory, right? Putting the contents of the .hg directly into projectname would be wrong.
Lastly, try visiting it with your browser, not using clone. What do you see at http://ggap.sf.net/hg/ ? What is in the apache access and error logs? Hopefully you have access to the error log because that always has the best output for debugging this stuff.
This could also be a permission error.
I just encountered a similar situation where I had created a repository in my usual place where apache picks it up via hgwebcgi. I could clone that repository locally (not going via webserver), but not from a remote client, so I knew it was not a hg error as such.
Turned out the problem was that my repository was owned by the user I created it with, with no read/write access given to apache.
Running
did the trick. (I exclusive access these repositories via the web, so this seems ok, otherwise come up with a solution that will allow apache access without owning it)
http://wiki.dreamhost.com/Mercurial
This has worked for me in the past.
I had the same problem. I needed to set up a Mercurial server on a shared host to which I do not have root/shell access. I followed this guide and with surprisingly little frustration, got it to work: http://javadocs.wordpress.com/2010/04/27/set-up-mercurial-1-5-1-on-a-shared-host-simplified/