在用例或工作逻辑方面,git中的pre-push和pre-receive hook之间有区别吗?
我可以从他们的documentation中了解到的唯一区别在于他们收到的输入 -
1. 预推:关于要推送的内容的信息在钩子的标准输入上提供了表格的行 - 本地参考SP本地sha1 SP远程参考SP远程sha1 LF
2. 预接收:对于每个要更新的参考,它会在标准输入上接收格式的一行 -
旧值SP新值SP ref-name LF
但是,我想知道每个钩子是否有特定用例,还是可以互换使用?
答案 0 :(得分:5)
一个(pre-push
)是client-side hook,另一个(pre-receive
)是server-side hook。
在这方面,它们非常不同,如果您要强制一致给定策略,您通常在预接收(服务器端)中执行此操作钩。这样,您就不必担心在每个客户端上部署预推钩。
请记住:挂钩是 local to a repo ,这意味着推送前挂钩无法轻松分发到任何 downstream repo 。但如果那些下游回购都指的是同一个上游回购,那么预接收挂钩可以全部适用于它们。