快速建立分支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 oracle 建立使用者指令碼Oracle指令碼
- 【Shell】使用Shell指令碼快速完成SQL指令碼中重複枯燥的任務指令碼SQL
- shell指令碼實現---Zabbix5.0快速部署指令碼
- 使用shell指令碼快速得到主備關係指令碼
- 快速部署tomcat專案的Shell指令碼Tomcat指令碼
- 自動建立samba目錄的shell指令碼Samba指令碼
- 建立管理MySQL資料庫的shell指令碼MySql資料庫指令碼
- shell指令碼建立使用者及批量建立使用者指令碼
- shell指令碼指令碼
- 通過shell指令碼快速定位active session問題指令碼Session
- 建立互動式shell指令碼對話方塊指令碼
- 使用shell指令碼build並建立ipa檔案(轉)指令碼UI
- 簡單資料庫及表建立shell指令碼資料庫指令碼
- [Shell] Shell 生成 HTML指令碼HTML指令碼
- shell指令碼(二)指令碼
- shell指令碼心得指令碼
- shell指令碼案例指令碼
- 巧用shell指令碼生成快捷指令碼指令碼
- 建立定期清理listener,trace檔案的shell指令碼指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- 如何加密shell指令碼加密指令碼
- 初識shell指令碼指令碼
- 執行shell指令碼指令碼
- Shell 指令碼語句指令碼
- shell 指令碼加密 | shc指令碼加密
- Linux Shell指令碼Linux指令碼
- shell指令碼例項指令碼
- 【指令碼】shell語法指令碼
- shell指令碼舉例指令碼
- Shell指令碼基礎指令碼
- Linux shell 指令碼Linux指令碼
- Shell 指令碼編寫指令碼
- shell 指令碼寫法:指令碼
- iOS逆向 Shell指令碼+指令碼重簽名iOS指令碼
- Shell指令碼匯入外部指令碼內容指令碼
- shell指令碼:建立函式並指定目錄進行下載指令碼函式
- shell入門--第一個shell指令碼指令碼
- 9、在Shell指令碼中呼叫其他指令碼指令碼