主要功能:
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可以支持浮点数运算