最近在做发布流程相关事情。当开发需要将更改的代码提交到测试环境测试之前,需要开发给出一个版本号,如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