实现和testing一个Subversion钩子

背景
我试图为Subversion实现一些提交钩子。 我做了大量的研究尝试,并得到一个简单的testing钩工作,但我没有运气。

作为参考,我已经通过了,遵循,然后试图结合以下链接的方法:
1. 目录configuration的Subversion手册
2. 服务器端钩子脚本的Tortoisevn手册
3. 服务器端钩子的解释,包含Subversion手册的链接
4. pre-commit钩子的wordaligned教程
5.服务器故障回答提交钩子的问题

还有一些其他的网站,我已经引用和使用,但我仍然不能得到提交钩子的工作。

我的环境
我的机器正在运行RHEL6(Cent OS)。
Subversion位于远程机器上,我不能直接访问我的主pipe的权限。
远程机器正在运行Subversion 1.6。

这是我的存储库的当前结构:

test-for-svn-hooks |-branches |-hooks | +-pre-commit |-tags +-trunk 

预先提交的文件临时将其权限设置为777 。 所有目录都将其权限设置为775

这是我为了testing提交钩子而创build的示例脚本:

 #!/usr/bin/env bash echo "THOU SHALL NOT PASS" 1>&2 exit 1 

我已经检查和testing了一切,以确保我的pre-commit钩子正常工作。 我不知道还有什么我需要检查,以确保它的工作。 我可以提交任何我喜欢的内容,而且不会将消息输出到我的屏幕上。

问题
1.在执行钩子时有什么漏掉或忽略的东西?
2.如果我以这种方式实现一个钩子,我是否必须担心在Tortoisesvn中再次实现相同的钩子?

任何反馈和/或build议,非常感谢。

  1. 在执行钩子时有什么漏掉或忽略的东西吗?

不要使用权限777.有时候这实际上可能会适得其反。 有些工具可能无法处理这种可疑的权限。 在你的情况下,这不太可能是问题,因为它适用于我这个设置。 但是不要这样做。 将其更改为755。

另一个完整的检查是直接在服务器上运行钩子脚本:

 /path/to/test-for-svn-hooks/hooks/pre-commit 

当你的脚本有更多有意义的内容时,你也应该用适当的参数进行testing,例如:

 /path/to/test-for-svn-hooks/hooks/pre-commit /path/to/test-for-svn-hooks TXN 

接下来,在服务器上使用checkout进行testing,例如:

 svn co /path/to/test-for-svn-hooks /tmp/test1 cd /tmp/test1 date > date.txt svn add date.txt svn ci -m 'added some junk' 

根据您在post中写下的内容,这些步骤应该可行。 我不知道你的testing失败的条件细节。 如果你能达到这一点,那么也许你会看到你的失败testing的原因。

  1. 如果我以这种方式实现一个钩子,我不得不担心在Tortoisesvn中再次实现相同的钩子吗?

号钩在服务器端定义。 客户端无需做任何事情。 所有的客户端都将遵守你在预提交钩子中定义的规则。