regex - 如何为 Github 设置此预提交消息 Hook ?

标签 regex git github

我想强制所有提交到我的私有(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/

相关文章:

github - x509:由未知权威签署的证书 - 使用 docker 和 github

正则表达式删除所有内容,但从 R 中的字符串中删除表情符号?

c++ std::regex 与预期不匹配

javascript - 使用正则表达式键入时强制输入字段中的特定格式

git commit --amend 不询问消息

git - 使用 Git 处理开源项目和其他类型项目 merge 冲突的最佳方法

javascript - 正则表达式删除除 <br> 之外的所有 html 标签

android - 使用 git 修改 android 源代码的正确方法

windows - 从 Windows 转到 centOS 时 Composer 无法正常工作

git - LibGit2Sharp 索引被锁定 - 错误