未执行Svn预提交挂钩
我有一个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文件的外观:未执行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”合并
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