美文网首页
自动打git tag

自动打git tag

作者: 98k_sw | 来源:发表于2020-09-29 18:04 被阅读0次

    原文: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
    

    相关文章

      网友评论

          本文标题:自动打git tag

          本文链接:https://www.haomeiwen.com/subject/vhneuktx.html