限制 git 挂钩到单个存储库

Limit git hook to a single repository

我使用 gitlab 管理本地开发服务器上的一些存储库,并实现了挂钩以在提交成功时自动部署项目。这工作正常,但不幸的是,当我提交到任何存储库时,我的 post-receive 挂钩运行,而不仅仅是挂钩所针对的存储库。

如何限制我的挂钩,使其仅在对特定存储库进行推送时运行?

我正在使用 GitLab Omnibus 社区版 8.0.5。据我了解,您正在寻找自定义挂钩,以便您只能在特定存储库上执行操作。为此,GitLab 为 gitlab-shell 版本 2.2.0(需要 GitLab 7.5+)引入了自定义 git 挂钩功能。您必须在 'repositories/somegroup/somename.git/' 目录中创建一个名为 custom_hooks 的新目录。对于我的设置,它看起来如下所示:

注意:在我的例子中,我还观察到如果我从 /opt/gitlab/embedded/service/gitlab-shell/hooks 文件夹中删除了 default post-receive hook 文件,我的 post-保存在 custom_hooks 目录中的接收挂钩停止工作。因此,请确保未删除默认挂钩。只需将您的自定义挂钩放在 custom_hooks 目录中,一切都应该没问题。

详情请参考http://doc.gitlab.com/ce/hooks/custom_hooks.html