2

我经常通过 Git 将 Rails 构建推送到 Heroku。对于那些不熟悉的人,代码被推送到 Heroku git push,并且一个 pre-receive 钩子在验证接收之前编译整个事情。

问题是,等待编译总是很长(对我来说通常是 2 分钟),并且当一个人最终推送和重新推送许多小的更改时,它会加起来。两分钟可以变成十五分钟,而我被剥夺了我的外壳。

有没有办法不必在编译/钩子完成后等待我的 shell 但仍然得到反馈,例如。如果失败了?

我知道挂起(^Z)命令,但我不确定它是否会停止进程/阻止反馈。

4

2 回答 2

1

我想如果预接收挂钩失败,它会以退出代码退出。这可能意味着它git push本身以非零退出代码存在。

如果是这种情况,您可以运行一个小型包装器:git push,将所有输出重定向到文件,完成后检查退出代码。如果成功,请随意通知自己(电子邮件?哔声?)。如果失败 -- 相同,您可以检查临时文件中的输出。

您将“在后台”运行的包装器:git_push_wrapper.sh mybranch &.

如果你真的想要,你也可以在脚本本身中“分离”(守护它),这样你就可以在没有 的情况下运行,&而不是得到[1] 4844[1]+ Done

于 2013-08-08T06:33:33.220 回答
0

可能有更好的特定于 Heroku 的解决方案,但您可以尝试git push &. 看到这个人(命令等待 10 秒并将“foo”打印到标准输出):

$ sleep 10 && echo -e "\nfoo" &
[1] 4844
echo "doing my thing"
doing my thing
$
foo
echo "keep doing my thing"
keep doing my thing
[1]+  Done                    sleep 10 && echo -e "\nfoo"
于 2013-08-07T19:43:01.640 回答