Post-Commit-Hook erzeugt einen Fehler bei SVN-Commit, funktioniert jedoch, wenn er manuell in der Befehlszeile ausgeführt wird
Ich versuche derzeit, den Post-Commit-Hook für mein Subversion-Repository einzurichten, um E-Mail-Benachrichtigungen zu senden. Ich benutze Subversion 1.7.8. Mein Post-Commit-Hook-Skript lautet wie folgt:
#!/bin/sh
REPOS="$1"
REV="$2"
"$REPOS"/hooks/mailer.py commit $REPOS $REV "$REPOS"/mailer.conf
Wenn ich einen Commit durchführe, wird die folgende Fehlermeldung ausgegeben:
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)
Das Besondere an diesem Fehler ist, dass beim Ausführen von Post-Commit in der Befehlszeile (mit den entsprechenden Argumenten) keine Fehler auftreten und ich die gewünschte E-Mail-Benachrichtigung erhalte. Das lässt mich glauben, dass der Fehler nicht mit meiner mailer.conf-Datei zusammenhängt.
Hat jemand eine Ahnung, was diesen Fehler verursachen könnte?
Danke, Jamie.
KORREKTUR:
Ich dachte, dass das Ausführen von svnserve unter root das Problem lokal behebt, aber nach weiteren Experimenten stelle ich fest, dass dies falsch ist. post-commit funktioniert auf dem lokalen Computer, wenn das Projekt mit der Syntax file: // ausgecheckt wurde, schlägt jedoch fehl, wenn es mit der Syntax svn: // ausgecheckt wurde.
Daher tritt das Problem nur dann auf, wenn svnserve versucht, das Post-Commit auszuführen, unabhängig davon, ob es unter root ausgeführt wird oder nicht oder ob sich der Client auf demselben oder einem anderen Computer befindet.