美文网首页
shell脚本实现git版本更新

shell脚本实现git版本更新

作者: 不留余白 | 来源:发表于2020-04-03 17:59 被阅读0次

    背景交代:

    每次代码发布需要打tag,有时候会忘记打,或者打完忘记推送到远程,导致运维发布的时候才发现,场面十分尴尬。
    于是,这个shell脚本就诞生了。

    脚本功能

    1.进入项目目录
    2.切换到master分支
    3.pull master 最新代码
    4.打 tag
    5.推送tag
    done

    代码

    #! /bin/bash
    echo "tag..."
    echo "1:项目1"
    echo "2: 项目2"
    waitInput=true
    while  [ $waitInput == true ]
    do
    read -p "请选择项目:" id
    if [ 1 == $id ]
    then
        path="~/code/项目1"
        waitInput=false
    elif [ 2 == $id ]
    then
        path="~/code/项目2"
        waitInput=false
    else 
        echo "目录不存在!"
    fi
    done
    eval "cd $path"
    echo "pwd:`pwd`"
    echo "切换到master分支......"
    git checkout  master
    # echo "当前分支:`git branch` "
    # pull 
    git pull 
    tagSuccess=false
    while [ $tagSuccess == false ]
    do
        waitInput=true
        while  [ $waitInput == true ]
        do
            read -p "请输入tag:" version
            if [ ! $version ] 
            then
                echo "tag 不能为空!"
            else 
               waitInput=false
            fi
        done
        echo $version
        eval "git tag $version"
        if [ $? -ne 0 ] 
        then
             echo "tag 创建失败!"
        else
        echo "tag 创建成功!"
            tagSuccess=true
        fi
    done     
    read -p "是否推送tag到远程? 【Y/N】" answer
    case $answer in
    Y|y|YES|yes)
    eval "git push origin $version"
    echo '已推送'
    esac
    echo 'done'
    

    执行效果

    $ sh ~/commond/tag.sh
    tag...biz
    1: 项目1
    2: 项目2
    请选择项目:1
    pwd:项目1
    切换到master分支......
    Switched to branch 'master'
    Your branch is up to date with 'origin/master'.
    Already up to date.
    请输入tag:v200403
    v200403
    fatal: tag 'v200403' already exists
    tag 创建失败!
    请输入tag:v200403.1
    v200403.1
    tag 创建成功!
    是否推送tag到远程? 【Y/N】n
    done
    

    这个脚本完全是现学现卖,边百度边写的,并未系统学习过shell脚本语法,不足之处,欢迎指正。

    相关文章

      网友评论

          本文标题:shell脚本实现git版本更新

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