我正在尝试使用共享主机设置中央存储库。我一直阅读本教程https://www.mercurial-scm.org/wiki/PublishingRepositories一直无济于事。以下是我采取的步骤。
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
完成这些步骤后,我收到404:Not Found错误。
但是,如果我将目标路径更改为http://url.com/central_repository/projectname它就像它找到了存储库一样,它告诉我它找到了变更集,并且它添加了变更集和清单,但随后它说“事务中止!HTTP错误500:内部服务器错误。
感谢您的帮助!大都市
修改
每当我尝试将ScriptAlias,Alias,以前的内容或以下内容放入htaccess文件时,我都会收到500内部服务器错误。
<Directory "/home/username/central_repository/projectname">
DirectoryIndex index.cgi
AddHandler cgi-script .cgi
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
事实上,如果我从hgwebdir.cgi文件中取出所有内容,除了以下内容,我会收到500错误。
#!/usr/bin/env python
#
# An example CGI script to export multiple hgweb repos, edit as necessary
我甚至尝试将此文件放在cgi-bin目录中,但我仍然收到错误消息。我也确定将文件权限设置为755.是否有可能我无法在此服务器上运行python文件?
答案 0 :(得分:1)
如果.cgi扩展名尚未映射到主机Apache配置中的cgi处理程序,则需要为hgwebdir.cgi脚本提供ScriptAlias或AddHandler行。实际上,如果你只做一个ScriptAlias,你可以摆脱所有不必要的RewriteCond和RewriteRule:
ScriptAlias /hg /home/username/central_repository/hgwebdir.cgi
repo还有一个/home/user/central_repository/projectname/.hg目录,对吧?将.hg的内容直接放入projectname是错误的。
最后,尝试使用浏览器访问它,而不是使用克隆。您在http://ggap.sf.net/hg/看到了什么? apache访问和错误日志中有什么?希望您可以访问错误日志,因为它始终具有调试此内容的最佳输出。
答案 1 :(得分:0)
http://wiki.dreamhost.com/Mercurial
过去这对我有用。
答案 2 :(得分:0)
这也可能是权限错误。
我刚遇到类似的情况,我在通常的地方创建了一个存储库,apache通过hgwebcgi来获取它。我可以在本地克隆该存储库(不是通过网络服务器),而不是从远程客户端克隆,所以我知道这不是一个hg错误。
原来问题是我的存储库由我创建它的用户拥有,没有给apache的读/写访问权限。
运行
chown -R apache:apache <repo>
做了这个伎俩。 (我独家通过网络访问这些存储库,所以这似乎没问题,否则会提出一个解决方案,允许apache访问而不拥有它)
答案 3 :(得分:0)
我遇到了同样的问题。我需要在共享主机上设置一个Mercurial服务器,我没有root / shell访问权限。我遵循了这个指南,令人惊讶的是很少受挫,让它起作用: http://javadocs.wordpress.com/2010/04/27/set-up-mercurial-1-5-1-on-a-shared-host-simplified/