快速创建分支Shell脚本

背景

目前iOS开发团队使用模块化开发方案进行,一个项目大抵包含了一二十个子模块。代码用SVN进行管理,每个子模块都是独立的存在,有自己的Trunk、Branches以及Tag。每一次版本迭代,当有需要给多个子模块打新的分支的时候,使用客户端进行操作相对较为繁琐,为了提升这一环节的效率。便想着写个脚本来快速创建分支并且能将代码直接Check out下来。

由于自己对脚本不熟悉,只会几个简单的语法,协调了一下运维同事协助,后面的事情就很顺利了

脚本内容

#!/bin/bash
# Mac创建新的分支及Chekout到本地


echo -e "\033[31m 提醒:如交互过程中输入错误,请按住Ctrl键不放,然后按删除键;或者Crlt+c终止脚本。\033[0m"

#所有模块项目的仓库列表
List=(`svn list https://domain/svn/ios/C-Home/`)

PS3="你所需要查看的仓库的序号(选择EXIT的序号为退出):" 
select Var in ${List[@]} EXIT   
do
    if [ $Var == "" ];then
        echo -e "参数不能为空。\n"
        continue
    fi
    if [ $Var == "EXIT" ];then
        echo "你选择了退出。"
        break
    fi
    Var1=`echo "$Var"|awk -F'/' '{print $1}'`
    echo "你选择了"$Var",该仓库当前的历史版本号为:"
    svn list https://domain/svn/ios/C-Home/$Var1/branches/
    read -p "请输入你要在哪个版本号上创建分支:" Old_Version
    read -p "请输入你需要创建的版本号:" New_Version
    svn cp https://domain/svn/ios/C-Home/$Var1/branches/${Var1}_V${Old_Version} https://domain/svn/ios/C-Home/$Var1/branches/${Var1}_V${New_Version} -m "Create ${Var1}_V${New_Version}"
    if [ $? -ne 0 ];then 
        echo "创建分支失败,请检查原因,正在退出..."
        exit 0
    fi
    
    while true
    do
        read -p  "请问是否需要Chekout到本地(输入Y/y或者N/n):" Key
    case $Key in 
    Y|y)
        echo "请稍等,正在执行Chekout..."
        sleep 1
        svn checkout https://domain/svn/ios/C-Home/$Var1/branches/${Var1}_V${New_Version}  > /dev/null 2>&1 
        [ $? -eq 0 ]&&{
                echo "执行完成"

            }||echo "执行失败,请检查..."
        break
        ;;
    N|n)
        echo "请继续..."
        break
        ;;
    *)
        echo "请输入Y/y或者N/n!!!"
        continue
        ;;
    esac
    done
done

输出

Last login: Thu May 11 15:55:34 on ttys001
YD-Koson-iMac:~ Koson$ cd /Users/Koson/Desktop
YD-Koson-iMac:Desktop Koson$ ./AutoBranch
 1) Assets/         13) JJSLibrary/
 2) JJSAnalytics/       14) JJSLogin/
 3) JJSAppointment/     15) JJSMapFind/
 4) JJSCommunity/       16) JJSMemberCenter/
 5) JJSCommunity_Category/  17) JJSMessage/
 6) JJSDiscover/        18) JJSNetworking/
 7) JJSEventAspect/     19) JJSProgressHUD/
 8) JJSFoundation/      20) JJSShare/
 9) JJSHome/            21) JJSTrading/
10) JJSHouse/           22) Mediator/
11) JJSHouse_Category/      23) EXIT
12) JJSKit/
你所需要查看的仓库的序号(选择EXIT的序号为退出):1
你选择了Assets/,该仓库当前的历史版本号为:
Assets_V5.2.0/
Assets_V5.3.1/
Assets_V5.4.0/
Assets_V5.4.1/
Assets_V5.4.2/
Assets_V5.4.3/
Assets_V5.4.4/
Assets_V5.6.0/
请输入你要在哪个版本号上创建分支:5.6.0
请输入你需要创建的版本号:5.7.0
Committing transaction...
Committed revision 13295.
请问是否需要Chekout到本地(输入Y/y或者N/n):y
请稍等,正在执行Chekout...
执行完成
你所需要查看的仓库的序号(选择EXIT的序号为退出):23
你选择了退出。
YD-Koson-iMac:~ Koson$

最后,分支就打好了,结合一键Check out到本地。效率得到了很大的提升。

你可能感兴趣的:(快速创建分支Shell脚本)