美文网首页
快速创建分支Shell脚本

快速创建分支Shell脚本

作者: Koson | 来源:发表于2017-05-11 16:17 被阅读268次

背景

目前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脚本

    背景 目前iOS开发团队使用模块化开发方案进行,一个项目大抵包含了一二十个子模块。代码用SVN进行管理,每个子模块...

  • shell脚本基础

    编写脚本 编程基础 shell脚本 创建shell脚本 变量 运算 测试 配置用户的环境

  • chapter 11. 构建基本脚本

    创建shell脚本 shell脚本第一行为指定具体shell来运行该脚本,可以指定shell(待验证) echo ...

  • shell脚本编程

    一、构建基本脚本 创建shell脚本文件 在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其...

  • linux基础知识----Just for Tencent(sh

    (1) shell脚本的创建 #!/bin/bash //指定要使用的shell (2)shell脚本查找路径 ...

  • Shell基础

    一、构建基本脚本 1.创建shell脚本文件 在创建shell脚本文件时,必须在文件的第一行指定要使用的shell...

  • Mac 微信双开~

    创建shell脚本 创建一个文件 后缀名为 .sh如: ???shell脚本 在文件中添加终端命令 nohup /...

  • Centos7 快速克隆 KVM 虚拟机

    快速克隆 KVM ,shell脚本如下

  • 第1节 shell脚本创建执行和输出

    #shell脚本创建执行和输出 1.shell脚本开头 #!/bin/bash /bin/bash 是Ba...

  • Linux shell脚本格式

    脚本格式 创建一个shell 脚本 执行一个shell 脚本 从用户输入接收参数 执行脚本并接收参数

网友评论

      本文标题:快速创建分支Shell脚本

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