hak post-commit powoduje błąd w zatwierdzeniu svn, ale działa, gdy jest uruchamiany ręcznie w linii poleceń
Obecnie próbuję skonfigurować hak post-commit dla mojego repozytorium subversion, aby wysłać powiadomienia e-mail. Używam subversion 1.7.8. Mój skrypt hakowy po zatwierdzeniu wygląda następująco:
#!/bin/sh
REPOS="$1"
REV="$2"
"$REPOS"/hooks/mailer.py commit $REPOS $REV "$REPOS"/mailer.conf
Po zatwierdzeniu generowany jest następujący komunikat o błędzie:
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)
Osobliwą rzeczą w tym błędzie jest to, że gdy uruchomię post-commit siebie w wierszu poleceń (z odpowiednimi argumentami), nie są generowane żadne błędy i otrzymuję żądane powiadomienie e-mail. To sprawia, że myślę, że błąd nie jest związany z moim plikiem mailer.conf.
Czy ktoś ma jakiś pomysł, co może powodować ten błąd?
Dzięki, Jamie.
KOREKTA:
Pomyślałem, że uruchomienie svnserve pod rootem rozwiązało problem lokalnie, ale po dalszych eksperymentach zdaję sobie sprawę, że to jest złe. post-commit działa na lokalnej maszynie, jeśli projekt został wyewidencjonowany przy użyciu składni file: //, ale nie powiedzie się, jeśli zostanie pobrany przy użyciu składni svn: //.
Dlatego problem pojawia się tylko wtedy, gdy svnserve próbuje uruchomić post-commit, bez względu na to, czy działa pod rootem, czy też jest na tym samym lub innym komputerze.