1

目前我只关心 pre-receive 钩子和 post-receive 钩子,但如果有一个完整的钩子列表,可以并行执行(如果有的话),那就太好了。

我问这个是因为重要的是要知道你是否需要小心编写代码,这样可以运行多个实例而不会互相踩到脚趾。

我认为这些钩子是针对操纵存储库内部状态的操作执行的,因此一次只能有一个“作者”,如果有的话。多个推送同时发生,它们被排队并串行处理。

但这只是我的猜测,我希望看到一些权威的答案。我没有看到这个问题的答案,man githooks也不知道在哪里看(除了来源)。

4

1 回答 1

0

pre-receive 和 update 钩子都在 git 持有 repo 的锁时运行(必然如此,因为 git 正在处理包文件并且尚未更新引用)。所以这些是自动互斥的。(也就是说,只要有更新。如果没有更新,什么都不会发生,所以这个问题变得没有实际意义。)

然而,post-receive 和 post-update 挂钩在锁被释放后运行。所以这些实际上可以与其他接收包操作竞争。

于 2013-09-10T19:55:59.847 回答