如何添加多个SVN挂钩

如何添加多个SVN挂钩,svn,hook,svn-hooks,Svn,Hook,Svn Hooks,我有几个(在本例中是pre-commit)钩子,我希望在同一事件中运行它们。现在,它们都只是shell脚本,所以我知道我可以将它们连接起来,让它们全部运行。不过,将来可能会用Perl、PHP或其他语言编写其他脚本 如何将多个不同的脚本作为一个钩子的一部分运行,并使子钩子中的任何一个失败按预期失败?您可以从SVN中的单个预提交脚本调用每个脚本: #!/bin/sh sh do_this.sh php do_that.php ... 如果在脚本中使用适当的shebang,您甚至不需要提及可执行文

我有几个(在本例中是pre-commit)钩子,我希望在同一事件中运行它们。现在,它们都只是shell脚本,所以我知道我可以将它们连接起来,让它们全部运行。不过,将来可能会用Perl、PHP或其他语言编写其他脚本


如何将多个不同的脚本作为一个钩子的一部分运行,并使子钩子中的任何一个失败按预期失败?

您可以从SVN中的单个预提交脚本调用每个脚本:

#!/bin/sh

sh do_this.sh
php do_that.php
...
如果在脚本中使用适当的shebang,您甚至不需要提及可执行文件名(
sh
php
)。

您可以尝试Perl模块,该模块允许您在单个配置文件中实现和集成多个挂钩,甚至可以在同一存储库中保持版本控制


(披露:我是该模块的作者。)

与@Gnustavo基于Perl的解决方案非常相似,我还发现了一些其他(基于PHP的)系统,例如

如果测试失败,两个项目(和其他“SVN挂钩”)的提交都会失败。

但单个测试成功/失败的退出(1)(或0)不会传播到子测试之外,因此整个测试集要么返回默认的0,要么从顶级脚本返回任何其他内容。