現在、Subversion リポジトリの post-commit フックを設定して、電子メール通知を送信しようとしています。サブバージョン 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 ファイルに関連していないと思わせます。
このエラーの原因は何ですか?
ありがとう、ジェイミー。
修正:
root の下で svnserve を実行するとローカルで問題が解決したと思いましたが、さらに実験を重ねた結果、これは間違っていることがわかりました。post-commit は、プロジェクトが file:// 構文を使用してチェックアウトされた場合はローカル マシンで機能しますが、svn:// 構文を使用してチェックアウトされた場合は失敗します。
したがって、svnserve が root の下で実行されているかどうか、またはクライアントが同じマシン上にあるか別のマシン上にあるかに関係なく、svnserve が post-commit を実行しようとした場合にのみ問題が発生します。