Git hooks预推脚本不通过STDIN接收输入

Git hooks预推脚本不通过STDIN接收输入,git,bash,githooks,Git,Bash,Githooks,其中规定,stdin的第一行将填充本地ref和sha,远程ref和sha如下: SP LF 但是,我的简单预推脚本: #!/bin/bash echo "params=[$@]" read line echo "stdin=[$line]" exit 1 运行$git push时返回以下输出: params=[origin[url]:[branch].git] stdin=[] 错误:无法将某些引用推送到“[remote]” 脚本的参数如文档中所指定(远程服务器的名称和路径)。预期会

其中规定,stdin的第一行将填充本地ref和sha,远程ref和sha如下:

SP LF

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

#!/bin/bash

echo "params=[$@]"

read line
echo "stdin=[$line]"

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

params=[origin[url]:[branch].git]
stdin=[]
错误:无法将某些引用推送到“[remote]”
脚本的参数如文档中所指定(远程服务器的名称和路径)。预期会出现错误,因为我的脚本退出时状态为1。然而,我似乎不明白为什么我没有收到文档中指定的stdin上的本地和远程引用


这是git中的bug吗?或者,我遗漏了什么吗?

如果这是显而易见的话,我会道歉,但如果没有什么可推的,你就不会在stdin上看到任何行。示例
.git/hooks/pre-push.sample
有一个while循环:

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

当我在这里尝试它时,它似乎起作用了,在循环中有一个回声,没有其他东西——当我没有东西推的时候,我什么也得不到,当我推的时候,我输出。

我还没有检查,但我确信这正是发生的事情。问题是我误解了你上面概述的惯例。谢谢你澄清这一点@dcow这将建议使用一个小的文档补丁来澄清问题;-)@PhilipOakley被贴到了邮件列表上。请你看一看好吗?@dcow我觉得它看起来不错,除了一个拼写“beilieve”,不知怎的产生了三份副本(有什么想法吗?)。我看到Junio(维护人员)做了他惯常的事情,试图确保澄清涵盖了可能没有考虑到的其他领域。@PhilipOakley三份副本来自我试图更新初始补丁的地方。注释中链接到这个问题的url是错误的,所以我修复了它并回答了。这条信息在gmail中被破坏了,所以我仔细检查了所有内容,然后再试一次。它看起来还是一样,所以我想这只是gmail的一个怪癖。谢谢你的评论!