post-commit hook produz erro no svn commit mas funciona quando executado manualmente na linha de comando
No momento, estou tentando configurar o gancho post-commit para meu repositório do subversion para enviar notificações por e-mail. Eu estou usando o subversion 1.7.8. Meu script de gancho post-commit é o seguinte:
#!/bin/sh
REPOS="$1"
REV="$2"
"$REPOS"/hooks/mailer.py commit $REPOS $REV "$REPOS"/mailer.conf
Quando eu faço um commit, a seguinte mensagem de erro é produzida:
Traceback (most recent call last):
File "/lib/python2.7/site.py", line 563, in <module>
main()
File "/lib/python2.7/site.py", line 545, in main
known_paths = addusersitepackages(known_paths)
File "/lib/python2.7/site.py", line 278, in addusersitepackages
user_site = getusersitepackages()
File "/lib/python2.7/site.py", line 253, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/lib/python2.7/site.py", line 243, in getuserbase
USER_BASE = get_config_var('userbase')
File "/lib/python2.7/sysconfig.py", line 521, in get_config_var
return get_config_vars().get(name)
File "/lib/python2.7/sysconfig.py", line 420, in get_config_vars
_init_posix(_CONFIG_VARS)
File "/lib/python2.7/sysconfig.py", line 299, in _init_posix
raise IOError(msg)
IOError: invalid Python installation: unable to open //include/python2.7/pyconfig-32.h (No such file or directory)
A coisa peculiar sobre este erro é que quando eu corro pós-me comprometo na linha de comando (com os argumentos apropriados), nenhum erro é produzido, e recebo a notificação de e-mail desejada. Isso me faz pensar que o erro não está relacionado ao meu arquivo mailer.conf.
Alguém tem alguma idéia do que poderia estar causando esse erro?
Obrigado, Jamie.
CORREÇÃO:
Eu pensei que rodar o svnserve sob o root corrigia o problema localmente, mas depois de mais experimentos eu percebi que isso está errado. post-commit trabalha na máquina local se o projeto foi retirado usando a sintaxe file: //, mas falha se for verificado usando a sintaxe svn: //.
Portanto, o problema surge apenas quando o svnserve tenta executar o post-commit, independentemente de estar rodando sob a raiz ou não, ou o cliente está na mesma máquina ou em uma máquina diferente.