3

好的,所以我想出了如何添加一个预提交挂钩来检查将引用 JIRA 项目的消息。

#!/bin/sh
test "" != "$(grep 'JIRA-' "$1")" || {
        echo >&2 "ERROR: Commit message is missing Jira issue number."
        exit 1
}

我将它添加到我的本地存储库中,一切都很酷。我对它所做的每一次提交都有这个提交信息。但是,我对这样一种情况很感兴趣,即有一群开发人员都致力于他们的本地存储库,然后在 GitHub 上推/拉到远程主机。我想要的是一种类似的机制,当推送更改到 GitLab 上的远程仓库时,他们必须类似地引用 JIRA。

有什么好方法可以做到这一点?

4

2 回答 2

3

正如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

在那里获得我们自己的集中钩子。

于 2013-08-19T21:29:43.080 回答
1

GitLab 6.7 企业版将具有允许此操作的“Git hooks”。

于 2014-03-21T10:32:26.810 回答