git钩子在提交消息中强制执行JIRA票号

时间:2017-02-19 13:18:30

标签: git

我正在尝试强制用户将JIRA票证添加到git commit。

我使用了一个预先接收的钩子,但它只在推动后才起作用。我希望它在提交后工作,所以如果消息格式不正确,提交将失败,用户可以选择编辑提交。

这是我的代码示例:

#!/usr/bin/env bash

# set this to your active development branch
#develop_branch="master"
#current_branch="$(git rev-parse --abbrev-ref HEAD)"

# only check commit messages on main development branch
#[ "$current_branch" != "$develop_branch" ] && exit 0

# regex to validate in commit msg
commit_regex='(#-[0-9]+|merge)'
error_msg="Aborting commit. Your commit message is missing either a JIRA Issue ('#-1111') '"
rm -rf fl.txt
echo $1 >> fl.txt
fil="fl.txt"

if ! grep -iE $commit_regex $fil; then
    echo "$error_msg" >&2
    exit 1
fi
rm -rf fl.txt

1 个答案:

答案 0 :(得分:0)

  

我唯一能做的就是预先接收

这是正确的方法:您在服务器端(此实例中的GitLab服务器使用GitLab custom hook强制实施策略(此处检查jira票号的提交消息):这是完成的 server-side hook

这意味着它将嚎叫git,迫使用户修改他/她的提交并再次推送。

  

我必须预先提交和预先接收,以便预先接收工作吗?

不,只需要预接收挂钩。尝试在服务器级别进行预提交挂钩工作是不可能的:您必须以某种方式将它分发给所有开发人员,以便他们在自己的本地存储库中激活它。这不实用。