SVN的钩子不能异步执行。

问题描述 投票:0回答:1

在我们的SVN服务器(Windows VisualSVN服务器)上,我创建了一个Post-Commit脚本来自动更新服务器上的本地工作副本(用于预览)。Post-Commit脚本包含这样的内容。

svn.exe cleanup .....
svn.exe update .....

这很好用 然而,我们有一些较大的仓库,这需要一段时间。我想在提交时异步运行这个脚本。因此,我把SVN指令移到了一个外部批处理文件中,并尝试使用CMD C或Start命令来完成这个任务。

start "" "d:\svn\update-repository.bat"

或者

cmd /c "d:\svn\update-repository.bat"

甚至

start cmd /c "d:\svn\update-repository.bat"

并没有提供异步的性能。它仍然保持提交,直到服务器上更新整个仓库。

有什么好办法吗?

batch-file asynchronous svn visualsvn-server
1个回答
1
投票

我认为svn服务器运行的命令在完成之前不会完全返回--这意味着原来的cmd将坐在那里允许你运行其他命令,但在其他情况下等待生成的cmd应完成。只有这样,"会话"(我不想用更好的词)才会完成,并将控制权返回给Subversion。

我会把你要运行的命令写到一个文件中,然后使用一个外部产卵的命令(例如一个计划任务)定期运行保存的命令(注意,每次执行后删除或重命名文件)。这样就可以从subversion服务器的处理中解耦出来。

© www.soinside.com 2019 - 2024. All rights reserved.