自动更新项目分支shell脚本

这段时间一直在做一个项目,由于涉及的代码分支比较多,每次搭建环境都非常麻烦,所以就尝试写一个shell脚本来减轻工作量(希望自己以后能通过这些一点点提高自己的shell水平)。

#!/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


配置文件格式:

目录名 空格  分支名

运行方式:
sh tools.sh config  其中tools.sh 就是我们写的脚本;config 就是分支配置文件;

这个脚本目前我运行还没发现有什么问题,不过存在一个缺陷就是自己必须清楚各个分支的依赖顺序,然后再配置文件中按顺序列出

猜你喜欢

转载自diaocow.iteye.com/blog/1611639