Ren*_*soo 5 svn background-process
因为目前我们的 Subversion post-commit 钩子执行时间太长,我一直在努力加快速度。
我一直在考虑将实际钩子作为后台进程执行,以便svn commit
在实际钩子完成运行之前完成。
所以我创建了两个文件。
Apost-commit.bg
做一些耗时的事情:
sleep 10
Run Code Online (Sandbox Code Playgroud)
以及post-commit
在后台执行前者的实际本身:
bash post-commit.bg &
Run Code Online (Sandbox Code Playgroud)
当我从命令行运行时post-commit
,它会很快完成,但post-commit.bg
仍在运行。但是当我这样做svn commit
时仍然需要10秒钟!
SVN 是否以某种方式不允许后台进程,或者我在这里做错了什么?
我刚刚在本地确认了这一点。它似乎是设计使然:
当运行挂钩,SVN电话apr_proc_wait
apr_proc_wait旨在等待所有子进程退出后再返回。这是为了避免僵尸(无主)进程超过系统。
如果您找到一种分离进程的方法(即守护进程模式),您可能会取得一些成功,但我不确定。
您可能会发现在某处运行另一个进程会更好,该进程可以响应来自 svn 的 ping 执行一些工作 - Hudson是我对此类事情的选择 - 作业可以由post-commit hook 中的wget触发,或者您可以有它为您轮询颠覆,这取决于您想要做什么。
归档时间: |
|
查看次数: |
5486 次 |
最近记录: |