SVN提交后钩子未执行文件

5
我创建了一个exe文件,它会打印出接收到的第一个和第二个参数。在我编写的SVN提交后钩子中,我写道:
PATH_TO_FILE\print.exe "%1" "%2"

当我进行签入操作时,它会卡住。

%1 是路径
%2 是版本号

编辑

我的问题的答案是可执行文件应该在SVN服务器的“bin”目录中,而不是存储库的钩子文件夹中。

谢谢大家, Oded。


1
@Oded:你在答案的评论中添加了很多额外的细节。通过编辑问题添加这些细节,你可以使问题更清晰、更好。 - JXG
3个回答

1

Print需要一个文件名来放在打印机上。我猜你提供的是一个目录描述。尝试将内容写入文件中。

echo "%1" "%2" > c:\temp\log.txt

我最终想要从一个exe文件中执行脚本。因此,我必须让该文件运行。 - Oded
1
我知道你会,但是尝试从最简单的情况开始。 - Peter Lindqvist
我尝试了你说的。它确实创建了一个txt文件。我尝试了以下内容: echo "%1" "%2" > c:\log.txt print.exe "%1" "%2" (发送2个参数)。但它仍然卡住了。提交没有完成,提交窗口仍然打开着。 - Oded
所以问题出在print.exe上,那么这是你自己创建的程序吗? - Peter Lindqvist
确保无误,我创建了一个新的exe文件,它只是像你的建议一样写入文件,但仍然卡住了。 - Oded
那很糟糕。我恐怕无法帮助你了。 - Peter Lindqvist

0
我们谈论的是哪个操作系统? 如果是Windows,我认为您不应该在参数周围加引号(“)。
“PATH_TO_FILE”是什么?它是一个环境变量吗?它的值是什么?您是否检查过它是否包括末尾的反斜杠?更改环境变量后,您是否重新启动了计算机? 它是系统范围还是用户级别的环境变量。请记住,如果您正在将SVN服务器运行为服务,则在不同的用户下,因此该环境变量可能未被定义为该用户。为什么不直接放入完整路径以进行测试,以确定它与不正确的环境变量无关呢?
您说“被卡住了”,那你有错误吗?具体发生了什么?提供一些更多详细信息可能会有所帮助。
如果您正在使用Windows,则可以通过执行以下操作将任何错误重定向到文件:
PATH_TO_FILE\print.exe %1 %2 > c:\output.txt

这是一个普通的SVN服务器还是您正在使用visualSVN服务器?


我正在使用运行在Windows服务器上的VisualSVN Server。exe文件的路径是:D:\print.exe。提交窗口没有任何反应。它不显示错误或其他任何信息,既不是完整的消息也不是错误消息。 - Oded
这几乎听起来像是提交没有发生,那可能是你问题的源头。如果提交从未到达仓库,则钩子永远不会被执行。 - Peter Lindqvist
是的,Peter说的是可能的。如果你移除这个钩子,那么提交就可以工作了吗? - Simon P Stevens
如果PATH_TO_FILE是"d:\print.exe",那么你的命令将解析为"D:\print.exe\print.exe",这显然是错误的。请检查您的环境变量。 - Simon P Stevens
如果我移除钩子,提交就会生效。PATH_TO_FILE 不是一个环境变量。我只是举例说明问题。我把可执行文件放在 D 盘,因此它的路径是 d:\print.exe(忽略文件名)。 - Oded
显示剩余3条评论

0

我看到print.exe,所以必须是Windows环境。我只需像下面这样回显参数。

echo %1 %2 >&2

这似乎可以在命令提示符中正常打印。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接