原文:http://maosidiaoxian.iteye.com/blog/1931771
这次改进内容主要是输出是否需要更新时以彩色输出。 因为要更新的代码对应于几个仓库中,所以各个模块的本地工作空间都要有一个更新当前目录代码的脚本,再用一个脚本调用它们来进行代码更新。所以我就写了一个脚本位于工作目录的根目录,再在其他几个模块的目录创建软链接,指向这个脚本。
代码如下:
-
#!/bin/sh
-
revision=`svn info |grep "Last Changed Rev:" |awk '{print $4}'`
-
echo "the revision is $revision"
-
URL=`svn info |grep URL: |awk '{print $2}'`
-
echo "the url is $URL"
-
svnRevision=`svn info $URL |grep "Last Changed Rev:" |awk '{print $4}'`
-
echo "the revision in svn is $svnRevision"
-
if [[ $revision < $svnRevision ]] ; then
-
echo -e "\033[0;31;40m need svn up \033[0m"
-
svn up
-
echo "svn up finish"
-
exit 1
-
else
-
echo -e "\033[0;38;40m no need svn up \033[0m"
-
exit 0
-
fi
然后是调用它的脚本,调用上面的脚本对代码目录进行更新,并将执行结果输出到以当前时间命名的日志文件当中。当然,上面输出的如"\033[0;31;40m need svn up \033[0m",用cat查看,还是有颜色的。
脚本代码如下:
-
#!/bin/bash
-
ROOT=`pwd`
-
LOGDIR=$ROOT/logsvn
-
if [ ! -d "$LOGDIR" ]; then
-
mkdir $LOGDIR
-
fi
-
FILENAME=$LOGDIR/`date |sed -n 's/\://pg' |awk '{print $2 $3 $4}'`.log
-
function svnUp()
-
{
-
echo "check $1"
-
echo "check $1" >> $FILENAME
-
cd $ROOT/$1
-
./svnUpCheck.sh >> $FILENAME
-
if [[ $? = 1 ]]; then
-
echo "svn up"
-
fi
-
revision=`svn info |grep "Last Changed Rev:" |awk '{print $4}'`
-
changedate=`svn info |grep "Last Changed Date:" |awk '{print $4 "\x20" $5}'`
-
echo "$revision $changedate" >> $FILENAME
-
date >> $FILENAME
-
echo >> $FILENAME
-
}
-
-
svnUp android
-
svnUp linux
-
svnUp system
-
svnUp tvserver/common_magellan
-
svnUp image_file_creator
-
svnUp tvserver/system
第一个脚本不用做任何改变,放到svn工作空间都能成功执行。
第二个脚本经过简单修改,如下面调用时传入的参数,为svn工作目录,修改之后同样可用于其他项目。
阅读(4556) | 评论(0) | 转发(0) |