如何调试Subversion预提交钩子脚本?

时间:2011-11-28 20:45:50

标签: svn pre-commit-hook

这似乎是一个非常基本的问题,但我被淘汰了。如何测试那些为了挂钩而编写的脚本。

我们知道脚本在后台运行,只有错误在SVN控制台上丢失。我尝试使用断点,但我没有任何东西可以为脚本提供输入。

有没有人对它有所了解。我正在Windows上编写svn hook脚本,因此很多已编写的钩子脚本要么没有运行,要么没有给出所需的输出,例如从apache检查mime-type和eol脚本。

1 个答案:

答案 0 :(得分:6)

我可以给你一些建议:

  • 您需要打印到STDERR。这是您的脚本向您报告错误的唯一方式。您可以将其用于实际测试。
  • 我编写了我的预提交脚本,以获取-t-r命令行参数。当作为预提交挂钩执行时,我可以使用-t参数来传递事务编号。从命令行运行它时,我可以使用-r参数并为其提供要运行的修订号。
  • 我还写了一个debug函数,允许我在设置-debug命令行参数时打印出信息。我可以打开和关闭它。
  • 如果您实际上正在测试您的挂钩,请使用存储库的副本,并确保pre-commit shell脚本失败,并以退出代码2结束它。你永远不会提交你的交易,但你会在你的预提交脚本中收到正在发生的事情(也就是说,如果你把所有东西打印到STDERR)。

您可以查看我正在开发的钩子脚本以获得一些想法。我使用Data::Dumper Perl模块,它可以帮助我在脚本中打印出数据结构。