Svn预提交挂钩没有被执行

时间:2015-01-30 22:34:42

标签: svn pre-commit

我有一个Centos 7虚拟机(VirtualBox guest)作为我的svn服务器,已经配置了svn - mod_dav_svn并且一切正常:可以结账并做提交。问题是,当添加预提交钩子然后尝试从Windows机器(VirtualBox主机)提交时,TortoiseSVN会因此错误而失败

提交被预先提交挂钩(退出代码255)阻止而没有输出。

来自我得到的httpd日志

[client xx.xx.xx.xxx:57]无法将资源“/ svn / testrepo /!svn / txn / 5-2f”合并到“/ svn / testrepo / trunk”中。 [500,#0]

所有权限都设置正确,我甚至尝试777,除非我删除钩子,否则它无法正常工作。

这是我设置的参考: http://www.unixmen.com/install-subversion-centos-7/

我想知道我的10-subversion.conf文件中是否缺少某些东西......

我正在使用默认的预提交,它已经设置为可执行文件,并且所有者是apache用户。我做的另一个测试是删除预提交脚本中的所有代码,只留下“退出0”指令。

这就是我的10-subversion.conf文件的样子:

    LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module   modules/mod_authz_svn.so
    LoadModule dontdothat_module  modules/mod_dontdothat.so

    <Location /svn>
       DAV svn
       SVNParentPath /var/www/svn
       AuthType Basic
       AuthName "Subversion repositories"
       AuthUserFile /etc/svn-auth-users
       Require valid-user
    </Location>
CustomLog logs/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION

2 个答案:

答案 0 :(得分:5)

终于得到了解决方案。根本原因是SELinux不允许通过httpd服务执行预提交脚本。我通过运行这条线来摆脱它

chcon -t httpd_exec_t pre-commit

谢谢大家!我希望这对其他人有所帮助。

答案 1 :(得分:2)

你可以发布你的预先提交脚本吗? 如果没有,请将以下内容添加到您的&#34; .sh&#34;脚本。

set -xv

之后的行
#!/bin/bash
最后看起来:

#!/bin/bash
set -xv

如果这不能为您提供更多日志记录,请将输出重定向到脚本中的文件。所以你可以调试你的脚本。

您还可以增加apache中的日志记录。检查一下 http://svnbook.red-bean.com/en/1.6/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.logging

因此,您只能获得一个SVN文件,您也可以使用日志级别。

我个人会首先尝试,因为更容易更改脚本。

(对于您的下一个问题,请更具体)