原文:http://alblue.cn/articles/2020/09/29/1601373714646.html
Makefile
#默认小版本
t = 3
m = ""
branch=`git branch | grep \* | cut -d ' ' -f2`
tag:
#自动打版本并提交,tag类型支持1、2、3,代表大版本,中版本,小版本:
#Usage: make tag m="更新XX" t=3
@sh ./auto_tag.sh $(t) $(m) $(branch)
shell
#!/bin/bash
#获取git版本
tag=$(git describe --tags `git rev-list --tags --max-count=1`)
echo "更新前版本" $tag
echo "更新备注" $2
#去掉头部的v
noVTag=${tag:1}
#按.分割字符串,变成3段
array=(${noVTag//./ })
arrayLen=${#array[*]}
if [[ $arrayLen != 3 ]];then
echo "版本号长度不对,必须为 v1.x.x的格式"
exit
elif [[ $1 -le 1 ]]||[[ $1 -gt 3 ]]; then
echo "参数必须在1-3之间"
exit
elif [[ $2 == "" ]]; then
echo "tag备注必填"
exit
fi
newVersion="v"
for (( i = 0; i < $arrayLen; i++ )); do
v=${array[i]}
if [[ $v == 1 ]];then
#非大版本都是10-正无穷
if [[ $i != 0 ]]; then
v=(expr $v \* 10)
fi
fi
if [[ $1 == 1 ]]&&[[ $i == 0 ]];then
v=$(echo $v+1 | bc)
echo "大版本更新后:" $v
elif [[ $1 == 2 ]]&&[[ $i == 1 ]];then
v=$(echo $v+1 | bc)
echo "中版本更新后:" $v
elif [[ $1 == 3 ]]&&[[ $i == 2 ]];then
v=$(echo $v+1 | bc)
echo "小版本更新后:" $v
fi
newVersion+=$v"."
done
newVersion=${newVersion%?}
echo "新版本:"$newVersion
git tag -a $newVersion -m $3_$2
git push origin $newVersion
网友评论