当前位置: 首页 > 工具软件 > Elastos > 使用案例 >

【Shell脚本】elastos自动下载、更新源码工具--DownloadCode.sh

夏侯航
2023-12-01

主要功能:

1. 可以自动下载Elastos源码以及测试代码ElasosTest

2. 根据git提交记录判定是否更新源码

DownloadCode.sh

 

#!/bin/bash
source setEnv.sh
START_TIME=`date +%s`

export ELASTOS_VERSION="ElastosRDK4_2_2"
export ELASTOS_DIR=$HOME/$ELASTOS_VERSION


配置环境变量,记录开始时间,用于计算整个更新代码的时间。

 

 

 

function GetCommitAndUpdate
{
    today=`date +%Y-%m-%d`
    log_dir=~/Dailybuild/DayLog/$today
    if [[ ! -d $log_dir ]];then
        mkdir $log_dir
    fi
    if [[ -e $log_dir/check_out.log ]];then
        rm -rf $log_dir/check_out.log
    fi
    git log >> $log_dir/check_out.log
    para=$(grep "commit" $log_dir/check_out.log | head -1)

    if [ ! -f $log_dir/commit_log_list.txt ];then
        git log >> $log_dir/commit_log_list.txt
    fi

    if [[ -z $(grep "$para" $log_dir/commit_log_list.txt) ]];then
        echo $para >> $log_dir/commit_log_list.txt
        if [ $OPTION == "update" ];then
            echo "update git pull"
            git pull
        fi
    else
        echo "No Checkin"
		exit 1
    fi
}

删除代码更新记录,重新获取该记录,写入check_out.log
抓取check_out.log中的第一条记录,用来和本地的代码更新记录进行比较(本地记录只需记录每次最新的更新即可)
比较结果:没有更新,就退出;有更新,就把更新记录添加进本地记录commit_log_list.txt

 

 

 

if [ $# != 2 ];then
	echo "please input three argument"
	echo "Downloadcode.sh OPTION KORTIDE_USER"
	exit 1
fi

if [ -z $1 ];then
    export OPTION="update"
else
    export OPTION=$1
fi

export KORTIDE_USER=$2

if [ -f $ELASTOS_DIR ];then
    rm -f $ELASTOS_DIR
fi

if [ ! -e $ELASTOS_DIR ];then
    export OPTION="checkout"
fi

if [ $OPTION == "checkout" ];then
    echo "Clear Old Elastos Code ..."
    rm -rf $ELASTOS_DIR
    echo "Download Elastos Code ..."
    cd $HOME
    git clone ssh://$KORTIDE_USER@192.168.7.128:29418/$ELASTOS_VERSION

    cd $ELASTOS_DIR/Sources
    echo "Download ElastosTest ..."
    git clone ssh://$KORTIDE_USER@192.168.7.128:29418/ElastosTest
else
    echo "update Elastos Code ..."
    cd $ELASTOS_DIR
	# 强制恢复到最新的版本,DailyBuild由于不允许更改,可以这样使用;
	# 个人千万别这么做,要是已经git add还好,通过一些办法还能找回来;要是没有git add,那就完蛋,你辛苦改的东西全没了
	# 它没了。。。没了。。。没了!
    git reset --hard
    GetCommitAndUpdate

    echo "update ElastosTest ..."
    cd Sources/ElastosTest
    git reset --hard
    git pull
fi

ELAPSED_TIME=$(( `date +%s`-$START_TIME ))
HOURS=`echo $ELAPSED_TIME/3600 | bc`
MINUTES=`echo $ELAPSED_TIME/60%60 | bc`
SECONDS=`echo $ELAPSED_TIME%60 | bc`
date
echo "Download Code finished, elapsed time: $HOURS Hours, $MINUTES Minutes, $SECONDS Seconds."


# 参数一:OPTION--update,更新代码;OPTION--checkout,下载代码。
# 参数二:KORTIDE_USER,按照不同的用户名,通过不同的ssh链接下载代码
# 参数三:ELASTOS_PROJECT,指定下载的文件

 

 

 

上面使用了bc命令进行算术运算,bc可以支持浮点数运算

 类似资料: