-
Notifications
You must be signed in to change notification settings - Fork 0
/
gittag
117 lines (95 loc) · 2.97 KB
/
gittag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/env bash
# 生成发版需要的 tag, 并把tag提交推送到远程
if [ x$1 != x ]
then
# 今天第几个版本, 默认第一个
num1='1'
if [ x$2 != x ]; then
num1=$2
fi
# 兼容 bitcc_administrator 替换成 newadmin
dir=${PWD##*/}
if [ $dir == "bitcc_administrator" ]
then
dir="adminnew"
fi
# 默认获取最新的 commitId, 传参进来则用传参的 commitId
commitId=`git rev-parse --short HEAD`
# 判断是否前端包
if [ $dir == 'page' ]
then
# 重新获取完整 commitId
commitId=`git rev-parse HEAD`
# 从指定位置开始截取6位长度
commitId=${commitId: 0 : 6}
# 判断是否纯数字
expr ${commitId} + 1 &>/dev/null
if [ $? -eq 0 ];then
# 重新获取完成 commitId
commitId=`git rev-parse HEAD`
# 获取字母开头的位置
len=${commitId%%[a-z]*}
# 从指定位置开始截取6位长度
commitId=${commitId: ${#len} : 6}
fi
fi
# 如果是传参指定 commitId, 需要判断 commitId 是否真的存在
if [ x$3 != x ]; then
`git branch -r --contains ${3} > /dev/null 2>&1`
if [ $? -ne 0 ]
then
echo -e "\033[0;31m \n║ error: no such commit ${3} \033[0m"
exit 1
fi
commitId=`git rev-parse --short ${3}`
if [ $dir == 'page' ]
then
commitId=${3}
# 从指定位置开始截取6位长度
commitId=${commitId: 0 : 6}
# 判断是否纯数字
expr ${commitId} + 1 &>/dev/null
if [ $? -eq 0 ];then
# 重新获取完成 commitId
commitId=${3}
# 获取字母开头的位置
len=${commitId%%[a-z]*}
# 从指定位置开始截取6位长度
commitId=${commitId: ${#len} : 6}
fi
fi
fi
# 当前时间 YYYYmmdd 格式
date=`date +%Y%m%d`
# 当前分支名
branch=`git branch --show-current`
# 处理以 test 开头的分支 tag
testTag=""
if [[ $branch =~ "test" ]]
then
testTag=$branch"#"
fi
# 拼接 tag, 前端与后端tag规则不一样
if [ $dir == 'page' ]
then
tag=$testTag$dir"_"$date"_"$num1"_"$commitId"_"$num2$num1
else
tag=$testTag$dir"_"$date"_"$num1"."$commitId"."$num2"0.1"
fi
# 控制输出长度
shellwidth=`stty size|awk '{print $2}'`
if [ `expr $shellwidth / 2` -gt ${#tag} ]
then
shellwidth=`expr $shellwidth / 2`
fi
# git 命令操作 && 格式化输出
git tag -a $tag -m $1 $commitId
echo $(seq -s '=' $shellwidth | sed -E 's/[0-9]//g')
echo -e "║ tag:" $tag
echo $(seq -s '=' $shellwidth | sed 's/[0-9]//g')
git push origin --tags
else
echo -e "\033[0;31m \n║ gittag Missing 'git tag -m %' required params \033[0m"
exit 2
fi
exit 0