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