Git设置全局hooks规范化客户端提交日志记录

本文介绍了如何通过Git的全局hooks来规范化的客户端提交日志记录,包括创建`commit-regulars`和`commit-msg`脚本,以及设置全局`commit-msg`钩子,确保所有项目提交日志遵循特定格式。遵循此方法,新项目会自动应用这些模板,已存在的项目可通过移动脚本并执行`git init`来更新。

背景:

        项目由于git进行管控,对commit的日志需要进行规范化输出,git的hooks默认管控单仓库,在.git/hooks里面,默认关闭,如果启用的话将后缀.sample去掉。系统提供的commit检验是git文本的最后是否有空格,根据规定,需要进行规则自定义,实现项目提交记录如:

1.增加:..功能;(xxx-xxx)
2.修改:..功能;(xxx-xxx)
3.解决:..问题;(xxx-xxx)
4.删除:删除某部分代码或资源文件的过程;(xxx-xxx)
5.备注:说明一个过程或者需要阐述某个阶段的变化内容;(xxx-xxx)
6.优化:在逻辑或者设计结构上进行代码优化或者规范化的调整;(xxx-xxx)

一、创建脚本

1、commit-regulars

^[0-9].增加:..*;\(.*-.*\)$
^[0-9].解决:..*;\(.*-.*\)$
^[0-9].备注:..*;\(.*-.*\)$
^[0-9].优化:..*;\(.*-.*\)$
^[0-9].修改:..*;\(.*-.*\)$
^[0-9].删除:..*;\(.*-.*\)$

这个脚本主要为自定义的政策匹配规则

2、commit-msg

#!/bin/sh
fileName=$1
message=$(<$fileName)

# 提交内容的正则表达式文件名,一行一个正则
regularFileName=".git/hooks/commit-regulars"

success=0
echo $message
while IFS='' read -r line || [[ -n "$line" ]]; do
	line=$(echo $line | tr -d '\r')
    if [[ $message =~ $line ]]; then
		success=1
		break
	fi
done < $regularFileName

if [ "$success" == "0" ]; then
 echo 你本次版本提交不符合日志提交规范.             >&2
 echo  1.日志中每一点描述都以序号做开头如 "1." 做开头并递增.  >&2
 echo  2.日志中不要包含全角的中文标点符号.		      >&2
 echo  3.日志每个描述结束以半角符号 ";" 分号做结束符.         >&2
 echo  4.必须在JIRA系统上建立对应的问题点,JIRA 系统上的问题点在日志中要以问题点的编号做结尾并两端加括.  >&2
 echo 请补充日志说明信息后再提交代码,例如:                   >&2
 echo  1.增加:..功能;新增代码或者调整原始SDK代码实现某需求的过程. >&2
 echo  2.修改:..功能;当某个需求功能还在继续完善的过程. >&2
 echo  3.解决:..问题;当接受到问题 BUG 反馈后进行修复的过程. >&2
 echo  4.删除:删除某部分代码或资源文件的过程. >&2
 echo  5.备注:说明一个过程或者需要阐述某个阶段的变化内容. >&2
 echo  6.优化:在逻辑或者设计结构上进行代码优化或者规范化的调整. >&2
 echo *******************禁止空格数据***************** >&2
	exit 1
fi

此脚本为在客户端执行commit后进行commit的日志格式化匹配。

将这两个脚本文件放到本地项目的.git/hooks中,该项目每次提交后即可完成日志记录的约束。不过此方法仅适用于单项目,那么是否可以进行一次设置,该客户端下的所有有效呢,请看如下。

二、全局设置commit-msg的hooks

1、创建文件夹:

mkdir -p ~/.git_template/hooks

该指令会在c盘用户目录下创建目录.git_template/hooks,如果不熟悉指令的也可手工进行创建文件夹。

2、将一中的两个脚本文件放入创建好的文件夹中

 3、设置全局配置

git config --global init.templatedir ~/.git_template

如上三步完成后即可在创建新的使用git管理的项目的时候自动将全局模版拷贝至项目根目录/.git/目录下,如果完成如上三步后需要对已经存在对git项目使用该模版,可移动至目标项目根目录并执行git init即可。

参考文章:

https://git-scm.com/docs/git-config.html

https://git-scm.com/book/en/v2

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值