如何为Github设置此precommit msg挂钩?

时间:2015-07-06 13:38:06

标签: regex git github

我想强制所有提交我的私有Github repo的开发人员总是添加遵循以下语法的提交消息:

[ticketid] description
  • ticketid 可以是由[]括号
  • 包围的无限数量的字母或数字
  • description 可以是无限制的自由文本

不允许空评论。这两个值都是强制性的。

有效示例提交消息:

  

[dk93jled]将标题颜色更改为红色

无效示例提交消息(描述文本丢失,ticketid不在括号中):

  

dk93jled

无效(缺少ticketid):

  

将标题颜色更改为红色

无效(无括号):

  

dk93jled将标题颜色更改为红色

问题:

如何实施上述要求?我在这里闻到了正则表达式,所以请在你的答案中添加一个完整的正则表达式,因为当谈到正则表达式时我真的很糟糕: - (

另外,我需要有关如何将此正则表达式添加到Github以便工作的说明。

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码提供客户端提交挂钩.git/hooks/commit-msg

#!/bin/sh

check=$(head -1 $1 | egrep '^\[\w*?\]\s(\w+\s?)+$')
if [ "" = "$check" ]; then
        echo "Commit message invalid." 1>&2
        echo "Required format:" 1>&2
        echo "    [ticketid] description" 1>&2
        exit 1
fi

注意:对于未在自己的回购中添加上述代码的开发人员,这不会强制执行。