我们有一个网页应用程序的临时版本(基本上是没有人使用的svn工作副本),位于“/apps/software”文件夹下。每个开发者都有自己的工作副本,位于“~/apps/software”文件夹下。我想利用一个简单的提交后钩子脚本,在开发者提交修改到代码库时,更新临时版本。
听起来很简单对吧?但我已经在这个问题上纠结了比我应该花的时间更长。钩子脚本(名为“post-commit”,位于/svn/software/hooks文件夹下,权限=777,用户:组=apache:dev)如下所示(现在先忽略注释掉的部分):
听起来很简单对吧?但我已经在这个问题上纠结了比我应该花的时间更长。钩子脚本(名为“post-commit”,位于/svn/software/hooks文件夹下,权限=777,用户:组=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子版本控制扩展)也在apache:dev下运行。我知道钩子正在执行,因为上面被注释掉的发送电子邮件的内容正常工作 - 只有更新命令没有。
我还可以使用以下方法执行不带环境变量的提交后挂钩脚本:
$ env - /svn/software/hooks/post-commit /svn/software <changeset>
它运行得很好,执行“svn update”没有问题。我甚至尝试删除“>>”到日志文件的内容,但是这没有任何区别。
如果您能提供帮助,将不胜感激...