У меня есть новый сервер Fedora 12, на котором я пытаюсь настроить Mercurial. У меня есть yum install
ed mercurial, и большинство вещей, похоже, работают нормально. Однако, после настройки hgwebdir.cgi через apache, я не могу сделать hg push
для единственного репо, которое в настоящее время размещается. Ошибка, которую я возвращаю:
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 владел всем репо и всем. В последней попытке я даже сделал репо всемирно доступным для записи.
[[email protected] .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
[[email protected] .hg]# cd store
[[email protected] 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
У меня есть клон репо в другом месте на машине, работающей как другой пользователь. Если я установил значение default
в разделе [paths]
файла hons clones в локальный путь к файлу на сервере, то нажатие будет прекрасным, но если я переключу его на использование 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 вообще ничего не знает об этой ошибке.