私はこのような最初のシェルスクリプトを書きました
#!/bin/bash
#
# This is a custom post-commit for sending email
# when an svn repo is changed.
#
repodir=$1
revision=$2
author=`/usr/bin/svnlook author -r $revision $repodir`
date=`/usr/bin/svnlook date -r $revision $repodir`
log=`/usr/bin/svnlook log -r $revision $repodir`
info=`/usr/bin/svnlook changed -r $revision $repodir`
url="http://www.mydomain.net/svn/filesystem/$repo"
echo 'To: me@googlemail.com' > commit-message **<<LINE17**
echo 'From: me@mydomain.net' >> commit-message
echo 'Subject: SVN Commit' >> commit-message
echo '' >> commit-message
echo 'repository - $url' >> commit-message
echo 'date - $date' >> commit-message
echo 'username - $author' >> commit-message
echo 'revision - $revision' >> commit-message
echo 'comment - $log' >> commit-message
echo 'test email' >> commit-message
echo '$info' >> commit-message
ssmtp me@googlemail.com < commit-message
rm commit-message
テストを実行すると (svn vars が取り除かれます)、サーバーに自分としてログインします: ./post-commit
スクリプトは正常に実行され、コミット ファイルがディスクに書き込まれ、sSMTP と組み合わせて使用され、メールが届きます。 gmailで。
ただし、svn でファイルをコミットすると、アクセス許可エラーが発生します。
問題は、親ディレクトリを 777 に chmod したことです。
post-commit hook failed (exit code 1) with output:
/home/svn/filesystem/hooks/post-commit: line 17: commit-message: Permission denied
コミット後のスクリプトをワイプして、コミットを実行しているユーザーを確認しようとすると、次のようになります。
echo $USER
何も返しません。