Git-hooks pre-push脚本不通过STDIN接收输入

时间:2014-03-22 23:34:36

标签: git bash githooks

git-hooks pre-push documentation表示 stdin 的第一行将填充本地ref和sha,而远程ref和sha将填充:

<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF

但是,我的简单预推脚本:

#!/bin/bash

echo "params=[$@]"

read line
echo "stdin=[$line]"

exit 1

在运行$git push时返回以下输出:

params=[origin [url]:[branch].git]
stdin=[]
error: failed to push some refs to '[remote]'

脚本的参数如文档中所指定(远程的名称和路径)。错误是预期的,因为我的脚本以状态1退出。但是,我似乎无法弄清楚为什么我没有按照指定在 stdin 上接收本地和远程引用通过文件。

这是 git 中的错误吗?或者,我错过了什么?

1 个答案:

答案 0 :(得分:7)

道歉,如果这说明显而易见,但如果没有什么可以推动,你就不会在stdin上得到任何线条。样本.git/hooks/pre-push.sample有一个while循环:

IFS=' '
while read local_ref local_sha remote_ref remote_sha
do
    ...
done

当我在这里尝试使用循环内部的回声而没有别的东西时,这似乎有效 - 当我没有任何东西可以推动时,我什么也得不到,当我这样做时输出。