我编写了第一个shell脚本,如下所示
#!/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。
post-commit hook failed (exit code 1) with output:
/home/svn/filesystem/hooks/post-commit: line 17: commit-message: Permission denied当我试图通过删除后提交脚本来查看哪个用户正在运行提交时:
echo $USER它什么都不回。
发布于 2013-09-19 20:16:10
不要使用临时文件,只需使用这里的文档即可。此外,使用单引号也不允许展开变量:
ssmtp me@googlemail.com <<EOF
To: me@googlemail.com
From: me@mydomain.net
Subject: SVN Commit
repository - $url
date - $date
username - $author
revision - $revision
comment - $log
test email
$info
EOF顺便说一下,这个问题是因为svn用户没有对当前目录的写访问权,或者运行时的另一个目录。
这里有更多关于文档这里的信息,以及关于引用这里的更多信息。
这里串实际上是另一种类似的解决方案,但我认为这里的文档更合适。
https://stackoverflow.com/questions/18904039
复制相似问题