最近在做发布流程相关事情。当开发需要将更改的代码提交到测试环境测试之前,需要开发给出一个版本号,如418或418:419或者418:419,420这种格式。然后将开发分支合并到测试分支工作目录。如果给定版本号是418就执行svn merge -c 418,如果是418:419这种格式就执行svn merge -r 418:419,如果是418:419,420这种需求,则先执行svn merge -r 418:419然后执行svn merge -c 420。

部分代码如下:

string=$1

echo  "******************THE GIVEN REVISION STRING IS  $string********************"

num=$(echo "$string" | awk -F"," '{print NF}')

//先根据,分割版本号字符串,计算有多少字段

for i in $(seq 1 $num)

do

           string_sub=$( echo "$string" | awk -F"," "{ print \$$i }")

            //这里需要特别注意:awk使用shell变量$i时需要用\$进行转义,写成\$$i的形式

           num2=$(echo "$string_sub" | awk -F":" '{print NF}')

           //再根据:分割版本号字符串,如果,分割后的字段包含:则执行svn merge -c 否则执行svn merge -c

           if [ $num2 -ge 2 ];then

              svn merge $dev_svn_base/$platform/$version -r $string_sub

           else

              svn merge $dev_svn_base/$platform/$version -c $string_sub

           fi

done