「ステージング」バージョンを更新するSubversionのコミット後フックが機能しない

StackOverflow https://stackoverflow.com/questions/1409791

質問

「/ 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}

それだけです。ログファイルには、コミット後スクリプトと同じ権限とユーザー:グループがあり、ステージングコピーにも同じユーザー:グループと権限があります。 Apache自体(apache subversion拡張を使用しています)もapache:devの下で実行されています。メールを送信する上でコメントアウトされているものは正常に動作するため、フックが実行されていることはわかっています-更新コマンドではないのです。

次を使用して、環境変数なしでコミット後フックスクリプトを実行することもできます。

$ env - /svn/software/hooks/post-commit /svn/software <changeset>

それは問題なく実行され、「svn update」を問題なく実行します。私も '&gt;&gt;'を削除しようとしました。ファイルをログに記録しますが、違いはありません。

これに関するヘルプをいただければ幸いです...

役に立ちましたか?

解決

ここでは、エラー出力ではなく、標準出力のみをログに送信します:

/usr/bin/svn update /apps/software >> /var/log/svn/software.log

代わりにこれを実行して、問題の原因を確認します。

/usr/bin/svn update /apps/software >> /var/log/svn/software.log 2>&1
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top