'/ apps / software'にあるWebアプリケーションのステージングバージョン(基本的には誰も作業しないSubversion作業コピー)があります。各開発者は、「〜/ apps/software」に独自の作業コピーを持っています。開発者がリポジトリに変更をコミットするたびに、単純なコミット後フックスクリプトを使用してステージングコピーを更新したいと思います。
簡単そうに聞こえますか?さて、私はこれでレンガの壁に頭をぶつけてきました。フックスクリプト(「post-commit」と呼ばれ、/ svn / software / hooks、permissions = 777、user:group = apache:devにあります)は次のとおりです(コメントアウトされたビットは今のところ無視してください)。
#!/bin/sh
/usr/bin/svn update /apps/software >> /var/log/svn/software.log
# REPOS="$1"
# REV="$2"
# AUTHOR=`/usr/bin/svnlook author -r "$REV" "$REPOS"`
# LOG=`/usr/bin/svnlook log -r "$REV" "$REPOS"`
# EMAIL="test@example.com"
# echo "Commit log message as follows:-
#
# \"${LOG}\"
#
# The staging version has automatically been updated.
#
# See http://trac/projects/software/changeset/${REV} for more details." | /bin/mail -s "SVN : software : revision ${REV} committed by ${AUTHOR}" ${EMAIL}
それでおしまい。ログファイルには、コミット後のスクリプトと同じ権限とuser:groupがあり、ステージングコピーにも同じuser:groupと権限を与えています。Apache自体(apache subversion拡張機能を使用しています)もapache:devで実行されています。メールの送信の上でコメントアウトされたものは正常に機能するため、フックが実行されていることはわかっています。そうでないのはupdateコマンドだけです。
次を使用して、環境変数なしでコミット後のフックスクリプトを実行することもできます。
$ env - /svn/software/hooks/post-commit /svn/software <changeset>
正常に動作し、「svnupdate」を問題なく実行します。ログファイルの「>>」を削除しようとしましたが、違いはありません。
これに関する助けをいただければ幸いです...