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

Ali*_*lix 4 svn pre-commit-hook

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

我们知道脚本是在后台运行的,SVN控制台只会向我们抛出错误.我尝试使用断点但是我没有任何东西可以为脚本提供输入.

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

Dav*_* W. 6

我可以给你一些建议:

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

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