Хук post-commit вызывает ошибку при svn commit, но работает при запуске вручную в командной строке
В настоящее время я пытаюсь настроить ловушку post-commit для моего хранилища subversion для отправки уведомлений по электронной почте. Я использую Subversion 1.7.8. Мой скрипт перехвата после фиксации выглядит следующим образом:
#!/bin/sh
REPOS="$1"
REV="$2"
"$REPOS"/hooks/mailer.py commit $REPOS $REV "$REPOS"/mailer.conf
Когда я делаю коммит, появляется следующее сообщение об ошибке:
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)
Особенность этой ошибки в том, что когда я запускаю post-commit самостоятельно в командной строке (с соответствующими аргументами), никаких ошибок не возникает, и я получаю желаемое уведомление по электронной почте. Это заставляет меня думать, что ошибка не связана с моим файлом mailer.conf.
Кто-нибудь есть идеи, что может быть причиной этой ошибки?
Спасибо, Джейми.
ИСПРАВЛЕНИЕ:
Я думал, что запуск svnserve под root устраняет проблему локально, но после дальнейших экспериментов я понимаю, что это неправильно. post-commit работает на локальной машине, если проект был извлечен с использованием синтаксиса file: //, но завершился неудачей, если был извлечен с использованием синтаксиса svn: //.
Поэтому проблема возникает только тогда, когда svnserve пытается запустить post-commit, независимо от того, работает он под root или нет, или клиент находится на том же или на другом компьютере.