在脚本中捕获git post-receive错误

时间:2012-10-18 18:18:05

标签: git bash git-bash git-post-receive

在bash脚本中我做了

git push

我检查它的退出状态。

在远程服务器上有一个post-receive hook,可以做一些事情。如果发生错误,后接收挂钩将以非零值退出。

然而,当post-receive hook错误时,git push正常退出。除非我专门检查输出的特定错误字符串(我不是),我的脚本认为一切正常。

我有一个简单的方法来确定接收后挂钩是否失败?

2 个答案:

答案 0 :(得分:3)

所以答案是没有办法轻易检查后接收挂钩是否失败。您可以做的最好的事情是让您的脚本检查来自远程的输出,并确保您的post-receive hook回显您正在寻找的错误消息。

在我的情况下,预接收挂钩将无法工作,因为我正在推送到另一个备份存储库,并且必须先接受新提交才能推送它。

基本上,post-receive挂钩应该执行以下操作:

 some-command-that-might-fail

 RC=$?

 if [ $RC -eq 0 ]; then
echo -e "\nERROR: some-command-that-might-fail FAILED!!!!!!!! PANIC!!!!!!\n"
 fi

然后执行推送的脚本应该输出FAILED或ERROR或PANIC的输出并报告收发后错误。

答案 1 :(得分:0)

引自http://www.kernel.org/pub/software/scm/git/docs/githooks.html#post-receive

  

后接收
  ...
  这个钩子不会影响git-receive-pack的结果,因为它是在完成实际工作后调用的。

可能pre-receive hook更适合您的目的,虽然没有提及传输的返回码。