防止 Gitlab 中单个回购的链式 git 挂钩

Prevent chained git hooks for single repo in Gitlab

我们正在使用 Gitlab Community Edition 8.15.2,并且正在为我们所有的回购协议使用自定义全局 git 挂钩(即所有回购协议都使用相同的挂钩)。

对于我们的一个回购协议,我想使用 <project>.git/custom_hooks 挂钩而不是全局挂钩。
根据链式 git 钩子 (https://docs.gitlab.com/ce/administration/custom_hooks.html) 的 Gitlab 文档,它将遍历所有可能的位置,并在前一个成功退出时执行。

我不希望它同时执行 custom_hooksglobal 挂钩...只执行自定义挂钩。这可能吗?

问题是,在 gitlab-shell merge_requests 93 之后,<project>.git/hooks/ 是指向 gitlab-shell/hooks 全局目录的符号链接。

因此,如果您想确保使用全局挂钩,您可以

  • 将符号链接更改为一个空文件夹(但如果 gitlab-shell 期望 运行 例如一个通用的全局预接收或更新挂钩,这可能会产生副作用)
  • 更改全局脚本以检测它们在其中执行的 Git 回购,如果回购与您不想要的全局挂钩相匹配,则立即退出(状态为 0)。