git - 异步git钩子(Hook)?

标签 git githooks

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

我尝试了 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>&- & 

为了将命令置于后台,stdoutstderr 都必须关闭。如果它们中的任何一个保持打开状态,进程将不会在后台运行,并且提交操作将在 Hook 脚本完成之前完成。

一个懒惰的替代方法是简单地将 stdoutstderr 重定向到 /dev/null:

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

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

关于git - 异步git钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17727315/

相关文章:

git - 如何确定 Git 中的 cherry-pick 的提交者?

Git:忽略文件而不是目录中的子目录

git - 我将如何在 Git 中编写预 merge Hook ?

git - 如何确定客户端的 SSH 指纹以在 Git Hook 中使用

Python 日志行未保留

git - 我的 Git 对象包文件夹非常重(push --force 之后)

git - git reset 后,未删除无法访问的提交

ios - 不正确的行为 git 子模块

git - 跟踪 git 中子文件夹的版本号

git - 如何阻止 root 运行 git pull?