HgWebDir推送权限被拒绝错误

Gre*_*egg 11 mercurial

我有一个新的Fedora 12服务器,我正在尝试设置Mercurial.我有很多变化yum install,大多数事情似乎都很好.但是,在通过apache设置hgwebdir.cgi之后,我无法对hg push当前正在托管的唯一repo 执行操作.我得到的错误是:

searching for changes
abort: HTTP Error 500: Permission denied: .hg/store/lock
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

并设置权限,以便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
Run Code Online (Sandbox Code Playgroud)

我在机器上的其他地方克隆了repo,作为不同的用户运行.如果我将克隆hgrc文件default[paths]部分中的值设置为服务器上的本地文件路径,则推送工作正常,但如果我将其切换为使用URL,则每次都会出现错误.

我如何设置它的一些可能的怪癖... hgwebdir.cgi坐在里面,/var/www/cgi-bin回购是一个孩子/opt/hg.我也关闭了suexec,这似乎没有解决问题.我在apache配置中添加的唯一一行来运行hgwebdir是:

ScriptAlias /hg "/var/www/cgi-bin/hgwebdir.cgi"
Run Code Online (Sandbox Code Playgroud)

hgweb.config也在/var/www/cgi-bin,它的内容是:

[collections]
/opt/hg = /opt/hg

[trusted]
users = *

[web]
baseurl = /hg
push_ssl = false
allow_push = *
Run Code Online (Sandbox Code Playgroud)

repo浏览器工作正常,它只是推动不起作用.Apache error_log根本没有关于此错误的任何内容.

小智 15

对我来说,服务器上的权限设置错误.A chown -R www-data /path/to/repo(在服务器上)为我修好了......也许这对你来说是不同的.祝好运.

  • 这是正确的答案.没必要做777. (3认同)

Ros*_*ane 11

我在Ubuntu上遇到了类似的问题.当我松开.hg目录的权限时,问题就停止了.

chmod -R 777 .hg从repo目录做了一个.之后,一切正常.我仍然需要四处寻找允许推送的最小允许选项,但这适用于我们的内部开发服务器.

  • 我不喜欢给文件777权限,但它在第一次尝试时解决了我的问题.现在我将尝试了解哪些权限是错误的.顺便说一句,给我+1. (2认同)

小智 0

进入此线程试图解决类似的错误,但设置略有不同(ubuntu,存储库中的 cgi 文件)。长话短说,我有两个主要问题:

  • 我最终删除了 baseurl 选项
  • hgrc 和 hgweb.config 中的选项似乎并不总是以相同的方式处理。