【问题标题】:Svn pre-commit hook not getting executedsvn 预提交钩子没有被执行
【发布时间】:2015-03-30 12:17:15
【问题描述】:

我有一个 Centos 7 虚拟机(VirtualBox 来宾)作为我的 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 用户。我做的另一个测试是删除预提交脚本中的所有代码,只留下“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

【问题讨论】:

  • 你至少应该添加钩子脚本的代码(以及它应该做什么......)。
  • 这只是默认的预提交...它检查是否有 cmets 以及用户是否可以提交,我还尝试删除除“exit 0”行之外的所有代码。

标签: svn pre-commit


【解决方案1】:

终于找到了解决办法。根本原因是 SELinux 不允许通过 httpd 服务执行预提交脚本。我通过运行这一行来摆脱它

chcon -t httpd_exec_t pre-commit

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

【讨论】:

    【解决方案2】:

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

    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文件,你也可以玩日志级别。

    我会先亲自尝试,因为更容易更改脚本。

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

    【讨论】:

    • 感谢您的回答,我添加了我遵循的指南的链接,以便您查看步骤。钩子只是我已经设置为可执行文件并让 apache 用户拥有它的默认预提交。我什至尝试删除所有代码,只留下“exit 0”语句。我放置了您建议的自定义日志指令,但未写入日志:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多