Git 向中央回购协议(或类似内容)添加了预提交挂钩

Git 向中央回购协议(或类似内容)添加了预提交挂钩,git,gitlab,pre-commit-hook,Git,Gitlab,Pre Commit Hook,好的,我已经找到了如何添加一个预提交钩子来检查引用JIRA项的消息 #!/bin/sh test "" != "$(grep 'JIRA-' "$1")" || { echo >&2 "ERROR: Commit message is missing Jira issue number." exit 1 } 我把这个加入到我的本地回购协议中,一切都很酷。我对它所做的每一次提交都有这个提交消息。 然而,我感兴趣的是这样一种情况:一群开发人员都致力于他

好的,我已经找到了如何添加一个预提交钩子来检查引用JIRA项的消息

#!/bin/sh
test "" != "$(grep 'JIRA-' "$1")" || {
        echo >&2 "ERROR: Commit message is missing Jira issue number."
        exit 1
}
我把这个加入到我的本地回购协议中,一切都很酷。我对它所做的每一次提交都有这个提交消息。 然而,我感兴趣的是这样一种情况:一群开发人员都致力于他们的本地回购协议,然后在GitHub上推/拉到远程主机。我想要的是一种类似的机制,当推送更改为GitLab上的远程回购时,它们必须类似地引用JIRA

做这件事的好方法是什么?

正如在的中提到的,并在“”页中详细介绍,GitLab EE现在支持:

Git钩子规则(提交消息必须提及问题、防止标记删除等)

但同样,这是企业版(EE),而不是社区版(CE)。
关于后者,请参见我的原始答案


原始答复(2013年8月)

您可以添加一个
pre-receive
钩子,该钩子将阻止推送到gitlab管理的裸repo的任何提交

然而,困难在于为通过GitLab创建的任何新项目(和回购)添加钩子

因为,没有简单的或本地的方法来实现这一点(现在是5.X和6.0)

现在,您可以在
gitlab shell
的hooks目录中抛出钩子,然后进行修改以反映

Gitlab Shell/lib/Gitlab_projects.rb
def create\u hooks\u cmd
pr\u hook\u path=File.join(根路径,'hooks','post receive')
up\u hook\u path=File.join(根路径,'hooks','update')
“ln-s{pr#u hook_path}{full_path}/hooks/post-receive&&ln-s{up_hook_path}{full_path}/hooks/update”
结束
把我们自己的集中钩子放进去


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