目前我只关心pre-receive hook和post-receive hook,但是有一个完整的钩子列表可以并行执行(如果有的话)会很好。
我问这个是因为重要的是要知道你是否需要注意编写代码,以便可以运行多个实例而不会互相踩到脚趾。
我正在考虑为操作存储库的内部状态的操作执行钩子,因此一次只能有一个“编写器”,如果存在例如。多次推送同时发生,它们排队并连续处理。
但这只是我的猜测,我希望看到一些权威的答案。我在man githooks
中没有看到这个问题的答案,也不知道在哪里看(除了来源)。
答案 0 :(得分:0)
预接收和更新挂钩都运行,而git持有repo上的锁(必然如此,因为git正在搞乱包文件并且还没有更新引用)。所以这些是自动互斥的。 (也就是说,只要有更新。如果没有更新,根本没有任何事情发生,所以问题就没那么了。)
然而,在发布锁定后,将运行post-receive和post-update挂钩。所以那些人实际上可以与其他接收包操作竞争。