2011-11-28 84 views
4

这似乎是非常基本的问题,但我被淘汰出局。如何测试那些为钩住目的而编写的脚本。如何调试Subversion预提交钩子脚本?

正如我们所知,脚本在后台运行,只有错误通过SVN控制台返回给我们。我尝试了断点,但没有任何可以为脚本提供输入。

有没有人有任何想法。我在windows上编写svn钩子脚本,所以很多已经写好的钩子脚本或者没有运行或者没有给出所需的输出,例如从apache中检查mime-type和eol脚本。

回答

5

我可以给你一些建议:

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

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