终端中svn 下载脚本源码
该代码为svn下载代码的脚本,写本代码主要原因在于当代码过大下载过慢时会中途断掉导致下载中断而做的一个脚本。将该代码放于要下载工程代码的位置后执行代码
filename : svn_checkout.sh
./svn_checkout.sh up 为更新代码命令(更新代码时要将该脚本放于工程中)
./svncheckout.sh $codepath 为下载代码命令
#!/bin/bash
:<<! # shell屏蔽多行代码
if [ "$1" ] ; then
Project_path=$1
else
read -p "Please enter the project path." Project_path
fi
!
#校正后的date
Date_time(){
H_h=$(date | awk '{print $4}'| awk -F: '{print $1}')
H=`expr $H_h + 13`
while [ $H -gt 23 ]
do
H=$(($H - 24))
done
New_time=$(date | awk '{print $4}' | sed "s/$H_h/$H/1") #在操作变量时使用“ ”双引号
Old_time=$(date | awk '{print $4}')
date | sed "s/$Old_time/$New_time/"
}
sleep_3s(){
time=3
while [ $time -gt 0 ]
do
echo "----------------sleep $time--------------------"
sleep 1
time=$[ $time - 1 ]
done
}
#判断参数
if [ "$1" == updata ] || [ "$1" == up ] ; then
ret2=2
elif [ "$1" ] ; then
ret1=1
Project_path=$1
echo "*********************************"
echo "Project path=$Project_path"
echo "*********************************"
#获取工程名
Project_name=$(echo $Project_path | awk -F/ '{print $NF }')
fi
#升级下载源码
if [ "$ret2" ] || [ "$ret1" ] ;then
for(( i = 0 ; i < 2 ; ))
do
#更新完
if [ "$ret2" == "revision" ] ; then
#echo "下载完了开心吗?"
break
#下载
elif [ "$ret1" == "1" ] ; then
echo "正在checkout $Project_path"
svn checkout $Project_path | tail -1 > file
ret1=$(cat file | awk '{printf $NF}')
ret2=$(cat file | awk '{print $3}')
cat file
cd $Project_name
else #都不满足退出
echo "已链接... 正在updata..."
svn cleanup ; svn up | tail -1 > file
cat file
ret1=$(cat file | awk '{print $NF}')
ret2=$(cat file | awk '{print $3}')
if [ "$ret2" != "revision" ] ; then
ret2=$(cat file | awk '{print $2}')
fi
fi
Date_time
rm file
sleep_3s
done
fi
#当前为最新版本 At revision 18997.
#直接下载完的输出 Checked out revision 4662.
#updata完的输出 Updated to revision 4400.
#ctrl+C 后的输出 ^Csvn: E200015: Caught signal
#链接超时的输出 svn: E175012: Connection timed out
# svn: E130003: The XML response contains invalid XML
浙公网安备 33010602011771号