我有一个充当我的svn服务器的Centos 7虚拟机(VirtualBox来宾),已经配置了svn-mod_dav_svn并使一切正常:可以 check out 并进行提交。问题是,当添加预提交挂钩并尝试从Windows计算机(VirtualBox主机)提交时,TortoiseSVN失败,并显示此错误

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

从我得到的httpd日志

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

所有权限设置正确,我什至尝试777,除非我删除钩子(Hook),否则它不起作用。

这是我遵循的参考设置:
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

最佳答案

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

chcon -t httpd_exec_t pre-commit

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

08-27 17:44
查看更多