12

我在接收后执行单元测试,但不希望用户等待它。

我尝试了 git-user 邮件列表中的建议(“只是&它”),但这不起作用:https ://groups.google.com/forum/#!topic/git-users/CFshrDgYYzE

git 似乎在等待 bash 脚本退出,即使我只是把它放在 hooks/post-receive 中:

exec-unit-tests.sh &
4

1 回答 1

22

这对我有用。&并且 stdout & stderr 管道必须关闭:

long-running-command >&- 2>&- & 

为了将命令置于后台,两个stdoutAND都stderr必须关闭。如果其中任何一个处于打开状态,则该进程将不会在后台运行,并且在挂钩脚本完成之前提交操作不会完成。

一种懒惰的替代方法是简单地重定向stdout和:stderr/dev/null

long-running-command >/dev/null 2>&1 & 

这有点不太干净,但可能更容易理解和记住,并且具有相同的效果。

于 2013-07-18T20:17:39.757 回答