我在接收后执行单元测试,但不希望用户等待它。
我尝试了 git-user 邮件列表中的建议(“just &
it”)但是这不起作用:https://groups.google.com/forum/#!topic/git-users/CFshrDgYYzE
git 似乎在等待 bash 脚本退出,即使我只是把它放在 hooks/post-receive 中也是如此:
exec-unit-tests.sh &
最佳答案
这对我有用。 &
和 stdout & stderr 管道必须关闭:
long-running-command >&- 2>&- &
为了将命令置于后台,stdout
和 stderr
都必须关闭。如果它们中的任何一个保持打开状态,进程将不会在后台运行,并且提交操作将在 Hook 脚本完成之前完成。
一个懒惰的替代方法是简单地将 stdout
和 stderr
重定向到 /dev/null
:
long-running-command >/dev/null 2>&1 &
这有点不太干净,但可能更容易理解和内存,并且效果相同。
关于git - 异步git钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17727315/