防止 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_hooks
和 global
挂钩...只执行自定义挂钩。这可能吗?
问题是,在 gitlab-shell merge_requests 93 之后,<project>.git/hooks/
是指向 gitlab-shell/hooks
全局目录的符号链接。
因此,如果您想确保不使用全局挂钩,您可以
- 将符号链接更改为一个空文件夹(但如果 gitlab-shell 期望 运行 例如一个通用的全局预接收或更新挂钩,这可能会产生副作用)
- 更改全局脚本以检测它们在其中执行的 Git 回购,如果回购与您不想要的全局挂钩相匹配,则立即退出(状态为 0)。
我们正在使用 Gitlab Community Edition 8.15.2,并且正在为我们所有的回购协议使用自定义全局 git 挂钩(即所有回购协议都使用相同的挂钩)。
对于我们的一个回购协议,我想使用 <project>.git/custom_hooks
挂钩而不是全局挂钩。
根据链式 git 钩子 (https://docs.gitlab.com/ce/administration/custom_hooks.html) 的 Gitlab 文档,它将遍历所有可能的位置,并在前一个成功退出时执行。
我不希望它同时执行 custom_hooks
和 global
挂钩...只执行自定义挂钩。这可能吗?
问题是,在 gitlab-shell merge_requests 93 之后,<project>.git/hooks/
是指向 gitlab-shell/hooks
全局目录的符号链接。
因此,如果您想确保不使用全局挂钩,您可以
- 将符号链接更改为一个空文件夹(但如果 gitlab-shell 期望 运行 例如一个通用的全局预接收或更新挂钩,这可能会产生副作用)
- 更改全局脚本以检测它们在其中执行的 Git 回购,如果回购与您不想要的全局挂钩相匹配,则立即退出(状态为 0)。