Subversion挂钩不再运行

我不知道这是什么时候发生的,但是由于某种原因,我的Subversion钩子都没有运行了。 我在一台Gentoo Linux机器上运行Subversion 1.6.9,过去它的钩子工作。 我通过Apache2.2的svn_dav模块运行Subversion。

我修改了我使用的钩子脚本,当它们被执行时写入/ apache所拥有的/ tmp目录中的一个文件中,但是在提交之后,文件中没有任何东西应该被写入。 脚本是可执行的,由apache拥有:apache,所以我不认为这是问题。

这是我的testing脚本之一(post-commit.sh)没有得到执行:

#!/bin/sh /bin/echo post-commit >> /tmp/z_test exit 0 

运行一个提交后,我预计会运行precommit.sh和post-commit.sh钩子,但是它们都没有写入所需的文件(/ tmp / z_test)。

这是怎么回事?

出于某种原因,Subversion似乎不再接受钩子脚本上的任意扩展。 我确实有像'post-commit.sh'命名的钩子,但Subversion不再寻找这些。 在将钩子脚本重命名为“提交后”之后,Subversion马上运行它。

我不确定Subversion的版本是否改变了这种行为,在1.6.11的CHANGES文件中没有提到。

这里有几个基本的debugging步骤来检查:

  1. 仔细检查用户是否正在运行Apache进程,以确保它具有执行挂接脚本的权限并写入/ tmp目录:

    ps -ef | grep httpd

  2. 确保你可以在以apache用户身份login的时候从命令行执行钩子脚本 – 大多数时候我遇到了SVN钩子的问题,脚本要么没有正确的执行权限,要么包含错别字从命令行执行时很明显。

如果这没有帮助,这是一个很好的debugging钩子脚本的一步一步的指导 。