我想更新一个裸仓库,并在使用钩子推送到它之后让它做一些事情.我应该使用哪一个?git-scm书说他们都在所有refs更新后都开火,所以我不知道有什么区别.
一个最近提交了Git的2.2+(2014年11月),由JUNIOÇ滨野(gitster)的确提到:
的
pre-receive和post-receive钩被设计为在旧式的改进update和post-update钩,这取他们的命令行上的更新信息和通过在命令行长度限制被限制.相同的信息从标准输入馈送到前/后接收挂钩,而不是解除此限制.
这些新样式挂钩必须完全从标准输入流中使用更新信息.否则,他们将冒险通过杀死接收包过程
SIGPIPE.
它现在增加:
如果一个钩子不想查看所有信息,很容易将其标准输入发送到
/dev/null(可能需要使用钩子的利基可能只需要知道推送的事实,而不必知道什么是对象推动更新哪个refs),这已经由现有的小心写的钩子完成了.但是,因为没有很好的方法来一致地失败不完全消耗输入的钩子(一个小的推送可能会导致一个可能适合管道缓冲区的短更新记录,
receive-pack进程可能会在钩子具有之前写入有机会在没有阅读任何东西的情况下退出,这不会导致死亡的信号receive-pack,这可能导致难以诊断"曾经在一个蓝色的月亮"幻影失败.解除这个"钩子必须完全消耗他们的输入"的命令.
| 归档时间: |
|
| 查看次数: |
9365 次 |
| 最近记录: |