未执行Svn预提交挂钩

未执行Svn预提交挂钩,svn,pre-commit,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”合并

我有一个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,除非我移除钩子,否则它不会工作

这是我在设置时遵循的参考:

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

我使用的是默认的预提交,它已经被设置为可执行文件,所有者是apache用户。我做的另一个测试是删除预提交脚本中的所有代码,只留下“exit 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
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dontdothait\u module modules/mod\u dontdothait.so
DAV svn
SVNParentPath/var/www/svn
AuthType Basic
AuthName“Subversion存储库”
AuthUserFile/etc/svn auth users
需要有效用户
自定义日志/svn_日志文件“%t%u%{svn-ACTION}e”env=svn-ACTION

您可以发布预提交脚本吗? 如果没有,请将以下内容添加到“.sh”脚本中

在后面排队

#!/bin/bash
最后看来:

#!/bin/bash
set -xv
如果这不能提供更多日志记录,请将输出重定向到脚本中的文件。这样就可以调试脚本了

您还可以增加apache中的日志记录。检查这个

因此,您将只为SVN获得一个文件,并且还可以使用日志级别进行播放

我个人会先尝试一下,因为剧本的改动比较容易


(关于下一个问题,请更具体地回答)

终于找到了解决方案。根本原因是SELinux不允许通过httpd服务执行预提交脚本。我通过运行这条线路来解决这个问题

chcon -t httpd_exec_t pre-commit

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

您至少应该添加钩子脚本的代码(以及它应该做什么)。这只是默认的预提交。。。它检查是否有评论,用户是否可以提交,我还尝试删除除“退出0”行之外的所有代码。感谢您的回答,我添加了我遵循的指南的链接,以便您可以查看步骤。钩子只是默认的预提交,我已经将其设置为可执行文件,并让apache用户拥有它。我甚至尝试删除所有代码,只留下“退出0”一句。我放置了您建议的自定义日志指令,但未写入日志:(
chcon -t httpd_exec_t pre-commit