我想强制所有提交到我的私有(private) Github 存储库的开发人员始终添加遵循以下语法的提交消息:
[ticketid] description
- ticketid 可以是不限数量的字母或数字,用 [ ] 方括号括起来
- description 可以是无限制的自由文本
不允许空评论。这两个值都是强制性的。
有效示例提交消息:
[dk93jled] Changed headline color to red
无效示例提交消息(缺少描述文本,ticketid 不在括号中):
dk93jled
同时无效(缺少票证编号):
Changed headline color to red
还有无效(无括号):
dk93jled Changed headline color to red
问题:
如何实现上述要求?我在这里闻到了正则表达式的味道,所以请在您的答案中添加一个完整的工作正则表达式,因为当涉及到正则表达式时我真的很烂 :-(
此外,我需要有关如何将此正则表达式添加到 Github 以便正常工作的说明。
最佳答案
您可以使用以下代码提供客户端提交 Hook .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
注意:这不会对未在自己的存储库中添加上述代码的开发人员强制执行。
关于regex - 如何为 Github 设置此预提交消息 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31247348/