该问题不是 TortoiseSVN 问题,而是服务器问题。存储库存储在哪里?你用的是什么服务器?你是用svnserve
还是httpd
?
我认为您的提交无论如何都会发生。有几种可能性:
你的钩子正在执行,但没有做任何事情。只要它以零退出状态退出,Subversion 就会认为一切都很糟糕。尝试一个名为的 Subversion 程序pre-commit.bat
,它只包含该行exit 2
。如果你仍然可以提交东西,那么你的钩子根本就不起作用。
你的钩子没有被执行。Subversion 执行目录pre-commit
中的程序hooks
。在 Windows 上调用了一个环境变量PATHEXT
,其中包含将附加到文件以查找可执行文件的后缀。通常,它会尝试*.com
,*.exe
然后*.bat
。如果该目录中有pre-commit.exe
or ,则不会执行您的。检查执行 Subversion 服务器的用户的值,并确保设置正确。pre-commit.cmd
hooks
pre-commit.bat
PATHEXT
问题之一是 Subversion 的钩子会吃掉STDOUT ,并且只有在钩子失败时才会显示STDERR 。这使得钩子对用户来说非常难以交流,如果您在执行时依赖于打印输出,您可能会觉得您的钩子没有做任何事情。
将内容打印到 STDERR 而不是 STDOUT。有一种方法可以强制钩子失败,因此您可以在需要时查看 STDERR。
我也不推荐在 Windows 上用批处理脚本编写钩子。它根本不适合做这种类型的工作。使用 Python 或 Perl。或者,如果您真的是面向 PC 并且不想在您的服务器上安装 Python 或 Perl,请使用 PowerShell,它是一种非常强大但未充分利用的 Windows 编程语言。