终端中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

posted on 2019-01-28 11:56  MyRain  阅读(791)  评论(0)    收藏  举报

导航