我有一个新的Fedora 12服务器,我正在尝试设置Mercurial.我有很多变化yum install
,大多数事情似乎都很好.但是,在通过apache设置hgwebdir.cgi之后,我无法对hg push
当前正在托管的唯一repo 执行操作.我得到的错误是:
searching for changes abort: HTTP Error 500: Permission denied: .hg/store/lock
httpd作为用户apache运行
UID PID PPID C STIME TTY TIME CMD root 1691 1 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1694 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1695 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1696 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1697 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1698 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1699 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1700 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd apache 1701 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
并设置权限,以便apache用户拥有整个repo和所有内容.在最后的尝试中,我甚至让回购全球可写.
[root@builds .hg]# ll total 424K drwxrwxrwx. 3 apache apache 4.0K 2010-04-19 14:43 . drwxrwxrwx. 19 apache apache 4.0K 2010-04-15 13:33 .. -rw-rw-rw-. 2 apache apache 57 2010-04-13 11:42 00changelog.i -rw-rw-rw-. 1 apache apache 93 2010-04-16 15:33 branchheads.cache -rw-rw-rw-. 1 apache apache 192K 2010-04-15 13:33 dirstate -rw-r--r--. 1 apache apache 156 2010-04-19 14:43 hgrc -rw-rw-rw-. 1 apache apache 42 2010-04-15 13:33 last-message.txt -rw-rw-rw-. 2 apache apache 23 2010-04-13 11:42 requires drwxrwxrwx. 4 apache apache 4.0K 2010-04-19 11:26 store -rw-rw-rw-. 1 apache apache 45 2010-04-14 14:08 tags.cache -rw-rw-rw-. 1 apache apache 7 2010-04-16 15:33 undo.branch -rw-rw-rw-. 1 apache apache 192K 2010-04-16 15:33 undo.dirstate [root@builds .hg]# cd store [root@builds store]# ll total 308K drwxrwxrwx. 4 apache apache 4.0K 2010-04-19 11:26 . drwxrwxrwx. 3 apache apache 4.0K 2010-04-19 14:43 .. -rw-rw-rw-. 1 apache apache 20K 2010-04-16 15:33 00changelog.i -rw-rw-rw-. 1 apache apache 81K 2010-04-16 15:33 00manifest.i drwxrwxrwx. 17 apache apache 4.0K 2010-04-13 11:47 data drwxrwxrwx. 3 apache apache 4.0K 2010-04-13 11:43 dh -rw-rw-rw-. 2 apache apache 177K 2010-04-15 11:03 fncache -rw-rw-rw-. 1 apache apache 67 2010-04-16 15:33 undo
我在机器上的其他地方克隆了repo,作为不同的用户运行.如果我将克隆hgrc文件default
的[paths]
部分中的值设置为服务器上的本地文件路径,则推送工作正常,但如果我将其切换为使用URL,则每次都会出现错误.
我如何设置它的一些可能的怪癖... hgwebdir.cgi坐在里面,/var/www/cgi-bin
回购是一个孩子/opt/hg
.我也关闭了suexec,这似乎没有解决问题.我在apache配置中添加的唯一一行来运行hgwebdir是:
ScriptAlias /hg "/var/www/cgi-bin/hgwebdir.cgi"
hgweb.config也在/var/www/cgi-bin
,它的内容是:
[collections] /opt/hg = /opt/hg [trusted] users = * [web] baseurl = /hg push_ssl = false allow_push = *
repo浏览器工作正常,它只是推动不起作用.Apache error_log根本没有关于此错误的任何内容.
对我来说,服务器上的权限设置错误.A chown -R www-data /path/to/repo
(在服务器上)为我修好了......也许这对你来说是不同的.祝好运.
我在Ubuntu上遇到了类似的问题.当我松开.hg
目录的权限时,问题就停止了.
我chmod -R 777 .hg
从repo目录做了一个.之后,一切正常.我仍然需要四处寻找允许推送的最小允许选项,但这适用于我们的内部开发服务器.