Git钩子-每次提交信息添加分支名称

Git钩子是一组脚本,这些脚本对应着Git仓库中的特定事件,每一次事件发生时,钩子会被触发。这允许你可以定制化Git的内部行为,在开发周期中的关键点上触发执行定制化的脚本。

钩子脚本文件通常放置于项目目录的.git/hooks文件夹下。Git会在初始化项目时自动在这个文件夹下放置一些样例脚本。如果你查看.git/hooks文件夹下,会找到如下的文件:

applypatch-msg.sample       pre-push.sample
commit-msg.sample           pre-rebase.sample
post-update.sample          prepare-commit-msg.sample
pre-applypatch.sample       update.sample
pre-commit.sample

这些文件基本上涵盖了可以使用的钩子,只不过.sample扩展名不会让脚本内容生效。
安装一个钩子最简单的方式就是删除.sample扩展名。或者如果你从头开始写好了一个钩子脚本,只需要将其命名为上面所列的文件名并去除.sample扩展名。

提交消息后追加分支名称

#!/bin/sh

COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3

#提交信息
COMMIT_MSG=`cat $COMMIT_MSG_FILE`
#当前分支名称
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
#判断提交信息中是否包含当前分支名称
RESULT=$(echo $COMMIT_MSG | grep "${BRANCH_NAME}")
#如果不包含,则追加分支名称
if [[ "$RESULT" == "" ]]
then 
	#换行
	echo " " >> "$COMMIT_MSG_FILE"
	#追加信息
	echo "#$BRANCH_NAME" >> "$COMMIT_MSG_FILE"
fi

if test -z "$COMMIT_SOURCE"
then
  /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
fi

效果如下

posted @ 2022-10-27 11:07  刘一二  阅读(208)  评论(0编辑  收藏  举报