hook.png
上一篇我们讨论了自动把当前分支的issue关联到commit message中,但是如果当前分支没有issue号的话,那么我们正则表达式是拿不到值的,所以也就会出现问题,今天我们讨论下,如果commit message 中没有issue号,那么就拒绝本次提交,也就是这次commit 会失败。
- 在项目的
.git/hooks
目录下创建一个commit-msg
文件
image.png
- copy下面的脚本到上面创建的commit-msg文件里
#!/bin/sh
INPUT_FILE=$1
INPUT=`head $INPUT_FILE`
s=`echo ${INPUT} | grep -Eo "#\d+"` #这个是核心正则表达式 #\d+ 匹配#开头后面根任意多个数字
if [ "$s" = "" ];then
echo "请在commit中填写issue号,例:fix bug #123"
exit 1
else
echo "pass"
fi
- 同样,因为commit 的时候会执行上面那个脚本所以要给这个脚本添加可执行权限
chmod u+x commit-msg
-
命令行验证提交失败
image.png
由于commit message 没有带有类似#123
这种管理issue的操作,所以这次提交被拒绝了 -
命令行验证提交成功
image.png
由于这次的commit message 符合规范"add test #111"
,所以提交成功。 IDE 验证提交失败
image.png
image.png
-
IDE验证提交成功
image.png
image.png