如何使用githooks检查提交的首字母是否大写

时间:2019-09-22 17:52:57

标签: githooks

我有验证语句(完整的githooks commit-msg):     #!/ bin / sh

read -r message<$1

if [[ $text =~ ^[a-z] ]]
then
    printf "$warning Check commit message.\n"
    exit 1
fi

当我用文本“这是我的测试提交”进行提交时,githooks会回应:

[WARNING] Check commit message.

但是当我使用类似这样的东西:“这是我的测试提交”时,我会得到相同的结果。

我做错了什么?

我正在使用Wind10,Git 2.20.1.windows.1和GitBash。

2 个答案:

答案 0 :(得分:0)

您应该尝试:

^[a-z][A-Za-z0-9 -]*

您当前的正则表达式检查单字母小写。

答案 1 :(得分:0)

我刚刚测试了这样的similar hook,但是使用了 commit-msg ,不是 pre-commit一个。
(Git 2.23,Windows 10,CMD会话)

myrepo/.git/hooks/commit-msg

#!/bin/sh

echo "1='$1'"
cat $1
if [[ $(cat $1) =~ ^[a-z] ]]
then
    printf "$warning Check commit message.\n"
    exit 1
fi

它的工作方式如广告所示:如果您的提交消息以小写字母开头,则会阻止提交的创建:

D:\git\rr>git add .

D:\git\rr>git commit -m "aaa"
aaa
 Check commit message.

commit-msg 挂钩接收.git/COMMIT_EDITMSG作为第一个参数。

第一个大写字母可以使用:

D:\git\rr>git commit -m "Aaa"
Aaa
[master 222cffb] Aaa
 1 file changed, 1 insertion(+)