这段时间一直在做一个项目,由于涉及的代码分支比较多,每次搭建环境都非常麻烦,所以就尝试写一个shell脚本来减轻工作量(希望自己以后能通过这些一点点提高自己的shell水平)。
[size=medium][b]配置文件格式:[/b][/size]
目录名 空格 分支名
[size=medium][b]运行方式:[/b][/size]
sh tools.sh config [i]其中tools.sh 就是我们写的脚本;config 就是分支配置文件;[/i]
这个脚本目前我运行还没发现有什么问题,不过存在一个缺陷就是自己必须清楚各个分支的依赖顺序,然后再配置文件中按顺序列出
#!/bin/bash
################################
#
# 自动更新项目分支脚本
#
# 运行方式:sh tools.sh config
#
# diaocow 2012-07-29
#
#
################################
# mvn编译分支
function compile() {
local svn_dir=$1
if [ -d $svn_dir ]; then
cd $svn_dir
if [ -d "all" ]; then
cd all
fi
mvn clean install -Dmaven.test.skip
if [ "$?" != "0" ]; then
echo "编译错误!!!"
exit 1
fi
fi
}
# 分支配置文件
SVN_BRANCH_LIST=$1
if [ ! -f $SVN_BRANCH_LIST ]; then
echo "请输入一个有效的分支文件!"
exit 1;
fi
cat $SVN_BRANCH_LIST | while read line
do
if [ -z "$line" ]; then
continue
fi
#目标svn目录
svn_branch_dir=`echo "$line" | awk '{print $1}' | tr -d ' '`
#目标svn分支
svn_branch_url=`echo "$line" | awk '{print $2}' | tr -d ' '`
#应用分支
svn_web_branch=`echo $svn_branch_url | grep 'intl\-'`
#目标svn目录存在
if [ -d $svn_branch_dir ]; then
cd $svn_branch_dir
svn_ori_url=`svn info | grep URL | awk '{print $2}' | tr -d ' '`
#分支已经过时
if [ "$svn_branch_url" != "$svn_ori_url" ]; then
cd ..
rm -rf $svn_branch_dir
svn co $svn_branch_url $svn_branch_dir
else
svn up;
cd ..
fi
else
svn co $svn_branch_url $svn_branch_dir
fi
#svn目录已经更新,执行编译
current_dir=`pwd`
compile $svn_branch_dir
cd $current_dir
done
[size=medium][b]配置文件格式:[/b][/size]
目录名 空格 分支名
[size=medium][b]运行方式:[/b][/size]
sh tools.sh config [i]其中tools.sh 就是我们写的脚本;config 就是分支配置文件;[/i]
这个脚本目前我运行还没发现有什么问题,不过存在一个缺陷就是自己必须清楚各个分支的依赖顺序,然后再配置文件中按顺序列出