快速建立分支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指令碼技巧—建立和清空檔案指令碼
- shell指令碼實現---Zabbix5.0快速部署指令碼
- [20190510]快速建立執行指令碼.txt指令碼
- shell指令碼指令碼
- 建立互動式shell指令碼對話方塊指令碼
- 常用shell指令碼指令碼
- shell指令碼案例指令碼
- Linux Shell指令碼Linux指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- shell指令碼總結指令碼
- shell 指令碼寫法:指令碼
- shell 指令碼加密 | shc指令碼加密
- 執行shell指令碼指令碼
- Shell 指令碼語句指令碼
- 如何加密shell指令碼加密指令碼
- 初識shell指令碼指令碼
- 【指令碼】shell語法指令碼
- iOS逆向 Shell指令碼+指令碼重簽名iOS指令碼
- 【工具使用】【Shell指令碼】【gitlab】下拉所有的倉庫以及每個倉庫的所有分支程式碼指令碼Gitlab
- 前端釋出shell指令碼前端指令碼
- shell指令碼之迴圈指令碼
- 【shell】磁碟監控指令碼指令碼
- linux常用的shell指令碼Linux指令碼
- 批次解壓shell指令碼指令碼
- 通用程式部署shell指令碼指令碼
- shell指令碼-免互動指令碼
- Shell指令碼最佳實踐指令碼
- shell指令碼——基本運算子指令碼
- Shell指令碼應用(三)指令碼
- shell指令碼報錯:[: missing `]‘指令碼
- jenkins pipline指令碼 獲取git分支Jenkins指令碼Git
- 程式碼上線的shell指令碼指令碼
- 【工具使用】【Shell指令碼】【gitlab】下拉所有的倉庫程式碼並指定分支推送給客戶倉庫指令碼Gitlab
- 什麼是Shell指令碼?Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- linux shell指令碼中 =~ 的作用Linux指令碼
- 9個實用shell指令碼指令碼
- shell指令碼文字處理工具指令碼
- shell指令碼正規表示式指令碼
- Shell指令碼知識簡述指令碼