我有几个(在本例中为预提交)钩子,我想在同一事件中运行它们。现在,它们都只是 shell 脚本,所以我知道我可以将它们连接起来让它们全部运行。不过,将来可能还会用 Perl、PHP 或其他一些语言编写其他脚本。
如何将多个不同的脚本作为单个钩子的一部分运行,并且子钩子的任何一个失败都按预期失败?
您可以从 SVN 中的单个预提交脚本调用每个脚本:
#!/bin/sh
sh do_this.sh
php do_that.php
...
如果您在脚本中使用适当的 shebang,您甚至不需要提及可执行文件名称 (sh
或)。php
您可以尝试SVN::Hooks Perl 模块,该模块允许您在单个配置文件中实现和集成许多钩子,甚至可以将版本控制在同一个存储库中。
(披露:我是该模块的作者。)
就像@Gnustavo 的基于 Perl 的解决方案一样,我还发现了一些其他(基于 PHP)的系统,例如
如果测试失败,这两个项目(和其他“SVN Hooks”)都将无法提交。