好的,所以我想出了如何添加一个预提交钩子来检查一条引用JIRA项目的消息。
#!/bin/sh
test "" != "$(grep 'JIRA-' "$1")" || {
echo >&2 "ERROR: Commit message is missing Jira issue number."
exit 1
}
我将此添加到我的本地仓库并且很酷。我对它做的每个提交都有这个提交消息。 但是,我感兴趣的是,有一大堆开发人员都致力于他们的本地存储,然后推送/拉动到GitHub上的远程主服务器。我想要的是一种类似的机制,当推送更改为GitLab上的远程仓库时,他们必须同样引用JIRA。
这样做的好方法是什么?
答案 0 :(得分:3)
如Sytse Sijbrandij的answer所述,并在“GitLab Enterprise Edition”页面中详细说明,GitLab EE现在支持:
Git挂钩规则(提交消息必须提及问题,防止标记删除等)
但同样,那就是 Enterprise 版(EE),而不是社区版(CE)。
对于后者,请参阅我的原始答案。
原始答案(2013年8月)
你可以添加一个pre-receive
钩子来阻止任何推送到gitlab管理的裸仓库的提交。
然而,困难在于为通过GitLab创建的任何新项目(和repo)添加该钩子,作为thread illustrates。
从GitLab doesn't used gitolite anymore开始,没有简单或原生的方法(目前为5.X和6.0)。
现在您可以将钩子放在
gitlab-shell
中的hooks目录中,然后修改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
在那里获得我们自己的集中挂钩。
答案 1 :(得分:1)
GitLab 6.7企业版将拥有' Git钩子'允许这样做。