Tengo un nuevo servidor de Fedora 12 en el que estoy intentando configurar Mercurial. Tengo yum install
ed mercurial, y la mayoría de las cosas parecen funcionar bien. Sin embargo, después de configurar hgwebdir.cgi a través de apache, no puedo hacer un hg push
al único repositorio que se está hospedando actualmente. El error que se obtiene es:HgWebDir push permission denied error
searching for changes
abort: HTTP Error 500: Permission denied: .hg/store/lock
httpd se ejecuta como usuario 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
y establecer permisos para que el usuario apache dueño de todo el repositorio y todo. En un último intento, incluso hice el repositorio globalmente modificable.
[[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
Tengo un clon del repositorio en otro lugar de la máquina que se ejecuta como un usuario diferente. Si configuro el valor default
en la sección [paths]
del archivo clones hgrc en la ruta de archivo local en el servidor, la inserción funciona bien, pero si la cambio para usar la url, siempre aparece el error.
Algunas posibles peculiaridades en la forma en que he puesto esto ... hgwebdir.cgi está sentado en /var/www/cgi-bin
y el repositorio es un hijo de /opt/hg
. Apagué Suexec también, y esto no parece aclarar el problema. La única línea añadí en la configuración de Apache para obtener hgwebdir correr es:
ScriptAlias /hg "/var/www/cgi-bin/hgwebdir.cgi"
la hgweb.config también está en /var/www/cgi-bin
y su contenido son:
[collections]
/opt/hg = /opt/hg
[trusted]
users = *
[web]
baseurl = /hg
push_ssl = false
allow_push = *
El navegador de repositorios está trabajando muy bien, es solo empuje eso no funciona. Apache error_log no tiene nada sobre este error en absoluto.
No me gusta tanto dar 777 permisos a los archivos, pero resolvió mi problema en el primer intento.Ahora intentaré comprender qué permisos estaban equivocados. Por cierto, +1 para mí. –
+1 de mi parte. funciona como se describe. gracias rossmcf –
También tuve este problema, pero en lugar de dar 777, investigué que ciertos archivos/carpetas en .hg/AND en el directorio de trabajo eran propiedad de otro usuario que 'www-data'. Así que los cambié a 'www-data' porque ese es el usuario que hgweb.cgi está ejecutando como. –