过去几天我一直在努力争取在我的SVN服务器(在Ubuntu 9.10上通过HTTP与Apache2运行)上工作后提交电子邮件通知。 SVN提交工作正常,但由于某种原因,钩子没有正确执行。
这里是configuration设置: – 用户通过HTTP访问repo与apache dav_svn模块(我创build用户/密码通过dav_svn.passwd文件中的htpasswd)。
dav_svn.conf:
<Location /svn/repos> DAV svn SVNPath /home/svn/repos AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location>
/家庭/ SVN /回购/挂钩/后提交:
#!/bin/sh REPOS="$1" REV="$2" /bin/echo 'worked' > ${REPOS}/postcommit.log
我将整个资源库设置为由www-data(apache用户)拥有,并为后提交脚本分配了755个权限
当我在空的环境中使用www-data用户testingpost-commit脚本时,它是有效的:
sudo -u www-data env - /home/svn/repos/hooks/post-commit /home/svn/repos 7
但是当我在客户端机器上提交时,提交是成功的,但后提交脚本似乎并没有被执行。
我也试着为pre-commit钩子运行一个简单的脚本,即使有一个空的pre-commit脚本,我也会得到一个错误:
“提交失败(详情如下):不能为hook'/ home / svn / repos / hooks / pre-commit'创buildnull stdout:Permission denied”
我在Google上做了一些search,发现这个错误,我认为这是apache用户(www-data)没有足够权限的问题,特别是执行/ dev / null。 我还读了post-commit之所以失败的原因是因为它没有用stdout报告。
无论如何,我也尝试给整个存储库的Apache用户(万维网数据)的所有权,并编辑的Apache虚拟主机,以允许在服务器根操作,我仍然获得权限被拒绝
/etc/apache2/sites-available/primarydomain.conf
<Directory /> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
任何想法/build议将不胜感激! 谢谢
所以,在有史以来最好的主机提供商RailsPlayground的一个非常有用的系统pipe理员讨论这个问题之后,他们能够通过在/ dev / null上设置权限来解决这个问题
crw-rw-rw- 1 root root 1, 3
现在,所有SVN挂钩按预期工作。