tags:

views:

635

answers:

4

I have a new Fedora 12 server that I am attempting to set up Mercurial on. I have yum installed mercurial, and most things seem to work fine. However, after setting up hgwebdir.cgi through apache, I am unable to do an hg push to the only repo currently being hosted. The error I get back is:

searching for changes
abort: HTTP Error 500: Permission denied: .hg/store/lock

httpd is running as user 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

and I set permissions so that the apache user owns the whole repo and everything. In a last ditch attempt, I even made the repo globally writable.

[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

I have a clone of the repo elsewhere on the machine running as a different user. If I set the the default value in the [paths] section of the clones hgrc file to the local filepath on the server, the push works fine, but if I switch it to use the url, I get the error every time.

Some possible quirks in how I've set this up... hgwebdir.cgi is sitting in /var/www/cgi-bin and the repo is a child of /opt/hg. I turned off suexec as well, and this doesn't seem to clear up the issue. The only line I added in the apache config to get hgwebdir running is:

ScriptAlias /hg "/var/www/cgi-bin/hgwebdir.cgi"

The hgweb.config is also in /var/www/cgi-bin and it's contents are:

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

[trusted]
users = *

[web]
baseurl = /hg
push_ssl = false
allow_push = *

The repo browser is working fine, it's just push that doesn't work. Apache error_log doesn't have anything in about this error at all.

A: 

Exactly what command line are you using to push? Can you try it with --verbose and --debug?

Ry4an
Updated the question with some more info
Gregg
A: 

Hi

Got to this thread trying to solve a similar error, on a slightly different setup (ubuntu, cgi file in the repositry base). Long story short I had 2 major issues: - I ended up removing the baseurl option - options in hgrc and in hgweb.config do not seem to be always handled the same way.

Philippe
A: 

It would appear to me that the repo is locked from the first auth, in wich it gets the changesets. After getting the chagesets hg tries to authenticate again while, i suppose, the repo is still locked Hg autehticates 3 times before failing (autenticação http: usuário goolic, senha ******)

hg push https://versoes.solidarp.com.br/hgweb.wsgi/home/solidarp/public_repos/profile_andre --verbose --debug
using https://versoes.solidarp.com.br/hgweb.wsgi/home/solidarp/public_repos/profile_andre
sending between command
autorização http requerida
domínio: soliDARP
usuário: goolic
senha: 
autenticação http: usuário goolic, senha **************
enviando revisões para https://versoes.solidarp.com.br/hgweb.wsgi/home/solidarp/public_repos/profile_andre
sending capabilities command
autenticação http: usuário goolic, senha **************
capabilities: changegroupsubset lookup pushkey unbundle=HG10GZ,HG10BZ,HG10UN stream=65537 branchmap
sending heads command
autenticação http: usuário goolic, senha **************
procurando por mudanças
common changesets up to 000000000000
7 revisões encontradas
list of changesets:
3d58879c5dcc778704134804de35b0441412cb0f
a3e6697fa72c9a4e06030b61a84bd2a00427f26f
481ce6a7f0c58ed5b838fc86d1b93af6b857eaf1
afed11efb8e2716675a7a39baf3b8b57c8740f44
ba4d9574fd84311d3b894aea39e8338ad3b242cd
aea9b49b6a933a11d4801d0dbab0e5b07d70b2d2
9c1757572d3bac793332999e6966b1135bfaf844
empacotando mudanças: 0 trechos
empacotando mudanças: 1 trechos
empacotando mudanças: 2 trechos
empacotando mudanças: 3 trechos
empacotando mudanças: 4 trechos
empacotando mudanças: 5 trechos
empacotando mudanças: 6 trechos
empacotando mudanças: 7 trechos
empacotando mudanças: 8 trechos
empacotando mudanças: 9 trechos
empacotando mudanças: 10 trechos
empacotando mudanças: 11 trechos
empacotando mudanças: 12 trechos
empacotando mudanças: 13 trechos
empacotando mudanças: 14 trechos
empacotando mudanças: 15 trechos
empacotando mudanças: 16 trechos
empacotando mudanças: 17 trechos
empacotando mudanças: 18 trechos
empacotando mudanças: 19 trechos
empacotando mudanças: 20 trechos
empacotando mudanças: 21 trechos
empacotando manifestos: 0 trechos
empacotando manifestos: 1 trechos
empacotando manifestos: 2 trechos
empacotando manifestos: 3 trechos
empacotando manifestos: 4 trechos
empacotando manifestos: 5 trechos
empacotando manifestos: 6 trechos
empacotando manifestos: 7 trechos
empacotando manifestos: 8 trechos
empacotando manifestos: 9 trechos
empacotando manifestos: 10 trechos
empacotando manifestos: 11 trechos
empacotando manifestos: 12 trechos
empacotando manifestos: 13 trechos
empacotando manifestos: 14 trechos
empacotando manifestos: 15 trechos
empacotando manifestos: 16 trechos
empacotando manifestos: 17 trechos
empacotando manifestos: 18 trechos
empacotando manifestos: 19 trechos
empacotando manifestos: 20 trechos
empacotando manifestos: 21 trechos
empacotando arquivos: .project 0 trechos
empacotando arquivos: .project 1 trechos
empacotando arquivos: .project 2 trechos
empacotando arquivos: .project 3 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 4 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 5 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 6 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 7 trechos
empacotando arquivos: src/Transporte/Busao.java 8 trechos
empacotando arquivos: src/Transporte/Busao.java 9 trechos
empacotando arquivos: src/Transporte/Busao.java 10 trechos
empacotando arquivos: src/Transporte/Busao.java 11 trechos
empacotando arquivos: src/Transporte/Busao.java 12 trechos
empacotando arquivos: src/Transporte/Busao.java 13 trechos
empacotando arquivos: src/Transporte/Busao.java 14 trechos
empacotando arquivos: src/Transporte/Busao.java 15 trechos
empacotando arquivos: src/Transporte/Busao.java 16 trechos
empacotando arquivos: src/Transporte/Busao.java 17 trechos
empacotando arquivos: src/Transporte/Cidade.java 18 trechos
empacotando arquivos: src/Transporte/Cidade.java 19 trechos
empacotando arquivos: src/Transporte/Cidade.java 20 trechos
empacotando arquivos: src/Transporte/Cidade.java 21 trechos
empacotando arquivos: src/Transporte/Cidade.java 22 trechos
empacotando arquivos: src/Transporte/Cidade.java 23 trechos
empacotando arquivos: src/Transporte/Cidade.java 24 trechos
empacotando arquivos: src/Transporte/Cidade.java 25 trechos
empacotando arquivos: src/Transporte/Cidade.java 26 trechos
empacotando arquivos: src/Transporte/Cidade.java 27 trechos
empacotando arquivos: src/Transporte/Cidades.java 28 trechos
empacotando arquivos: src/Transporte/Cidades.java 29 trechos
empacotando arquivos: src/Transporte/Cidades.java 30 trechos
empacotando arquivos: src/Transporte/Cidades.java 31 trechos
empacotando arquivos: src/Transporte/Controle.java 32 trechos
empacotando arquivos: src/Transporte/Controle.java 33 trechos
empacotando arquivos: src/Transporte/Controle.java 34 trechos
empacotando arquivos: src/Transporte/Controle.java 35 trechos
empacotando arquivos: src/Transporte/Controle.java 36 trechos
empacotando arquivos: src/Transporte/Controle.java 37 trechos
empacotando arquivos: src/Transporte/Controle.java 38 trechos
empacotando arquivos: src/Transporte/Controle.java 39 trechos
empacotando arquivos: src/Transporte/Controle.java 40 trechos
empacotando arquivos: src/Transporte/Controle.java 41 trechos
empacotando arquivos: src/Transporte/Controle.java 42 trechos
empacotando arquivos: src/Transporte/Controle.java 43 trechos
empacotando arquivos: src/Transporte/Controle.java 44 trechos
empacotando arquivos: src/Transporte/Controle.java 45 trechos
empacotando arquivos: src/Transporte/Controle.java 46 trechos
empacotando arquivos: src/Transporte/Controle.java 47 trechos
empacotando arquivos: src/Transporte/Controle.java 48 trechos
empacotando arquivos: src/Transporte/Controle.java 49 trechos
empacotando arquivos: src/Transporte/Controle.java 50 trechos
empacotando arquivos: src/Transporte/Controle.java 51 trechos
empacotando arquivos: src/Transporte/Controle.java 52 trechos
empacotando arquivos: src/Transporte/Controle.java 53 trechos
empacotando arquivos: src/Transporte/Interface.java 54 trechos
empacotando arquivos: src/Transporte/Interface.java 55 trechos
empacotando arquivos: src/Transporte/Interface.java 56 trechos
empacotando arquivos: src/Transporte/Interface.java 57 trechos
empacotando arquivos: src/Transporte/Interface.java 58 trechos
empacotando arquivos: src/Transporte/Interface.java 59 trechos
empacotando arquivos: src/Transporte/Interface.java 60 trechos
empacotando arquivos: src/Transporte/Interface.java 61 trechos
empacotando arquivos: src/Transporte/Interface.java 62 trechos
empacotando arquivos: src/Transporte/Interface.java 63 trechos
empacotando arquivos: src/Transporte/Interface.java 64 trechos
empacotando arquivos: src/Transporte/Interface.java 65 trechos
empacotando arquivos: src/Transporte/Interface.java 66 trechos
empacotando arquivos: src/Transporte/Linha.java 67 trechos
empacotando arquivos: src/Transporte/Linha.java 68 trechos
empacotando arquivos: src/Transporte/Linha.java 69 trechos
empacotando arquivos: src/Transporte/Linha.java 70 trechos
empacotando arquivos: src/Transporte/Linha.java 71 trechos
empacotando arquivos: src/Transporte/Linha.java 72 trechos
empacotando arquivos: src/Transporte/Linha.java 73 trechos
empacotando arquivos: src/Transporte/Linha.java 74 trechos
empacotando arquivos: src/Transporte/Linha.java 75 trechos
empacotando arquivos: src/Transporte/Linha.java 76 trechos
empacotando arquivos: src/Transporte/Passagem.java 77 trechos
empacotando arquivos: src/Transporte/Passagem.java 78 trechos
empacotando arquivos: src/Transporte/Passagem.java 79 trechos
empacotando arquivos: src/Transporte/Passagem.java 80 trechos
empacotando arquivos: src/Transporte/Passagem.java 81 trechos
empacotando arquivos: src/Transporte/Passagem.java 82 trechos
empacotando arquivos: src/Transporte/Passagem.java 83 trechos
empacotando arquivos: src/Transporte/Passagem.java 84 trechos
empacotando arquivos: src/Transporte/Passagem.java 85 trechos
empacotando arquivos: src/Transporte/Passagem.java 86 trechos
empacotando arquivos: src/Transporte/Passagem.java 87 trechos
empacotando arquivos: src/Transporte/Passagem.java 88 trechos
empacotando arquivos: src/Transporte/Passagem.java 89 trechos
empacotando arquivos: src/Transporte/Viagem.java 90 trechos
empacotando arquivos: src/Transporte/Viagem.java 91 trechos
empacotando arquivos: src/Transporte/Viagem.java 92 trechos
empacotando arquivos: src/Transporte/Viagem.java 93 trechos
empacotando arquivos: src/Transporte/Viagem.java 94 trechos
empacotando arquivos: src/Transporte/Viagem.java 95 trechos
empacotando arquivos: src/Transporte/Viagem.java 96 trechos
sending unbundle command
sending 6254 bytes
autenticação http: usuário goolic, senha **************
abortado: HTTP Error 500: Permission denied: .hg/store/lock
André Villar