正如Sytse Sijbrandij的回答中提到的,以及“ GitLab 企业版”页面中的详细说明,GitLab EE 现在支持:
Git 钩子规则(提交消息必须提及问题,防止标签删除等)
但同样,这是企业版 (EE),而不是社区版 (CE)。
对于后者,请参阅我的原始答案。
原始答案(2013 年 8 月)
你可以添加一个pre-receive
钩子来阻止任何推送到 gitlab 管理的裸仓库的提交。
然而,困难在于为通过 GitLab 创建的任何新项目(和 repo)添加该钩子,如该线程所示。
由于GitLab 不再使用 gitolite,因此没有简单或原生的方法来做到这一点(现在是 5.X 和 6.0)。
现在你可以把你的钩子放在钩子目录中,gitlab-shell
然后修改https://github.com/gitlabhq/gitlab-shell/blob/master/lib/gitlab_projects.rb#L46以反映。
Gitlab-Shell/lib/gitlab_projects.rb
def create_hooks_cmd
pr_hook_path = File.join(ROOT_PATH, 'hooks', 'post-receive')
up_hook_path = File.join(ROOT_PATH, 'hooks', 'update')
"ln -s #{pr_hook_path} #{full_path}/hooks/post-receive && ln -s #{up_hook_path} #{full_path}/hooks/update"
end
在那里获得我们自己的集中钩子。