SVN版本管理自动化

上一篇 / 下一篇  2010-12-21 13:11:49 / 个人分类:linux&shell编程

项目中,相关的配置管理人员需要经常将测试库中的程序拉入基线库,今天无意中发现手工操作起来还很麻烦,所以就写了个脚本来执行。这样,如果以后再有开发需要入基线库,就直接将文件(带相对路径)写入file中执行脚本即可。
具体思路:
  1. 将需要拉入基线库的文件放到file中。
  2. 为了保持和SVN一致的目录结构,需要先获取文件上一层之前的相对路径。
  3. 然后根据路径来逐一用mkdir -p 来创建相关文件夹。
  4. 逐个进入文件夹执行svn export。
  5. 因为是多个不同的路径,所以需要退回到执行前的路径。

file文件内容如下:
api.ali.com/api/api/inner_validate.inc
api.ali.com/api/host/api/order_cancel.php
api.ali.com/api/library/HTMLPurifier/URIFilter/HostBlacklist.php

for k in `cat file`;do  ##读取SVN源文件                                          
   v=`echo $k | awk -F "[ /]" '{OFS="/";$NF="";print $0}'` #获取源文件对应的相对路径
   echo "start to svn" >>tmp
  
   ##判断是否为目录或文件
  
  f=`echo $i | awk -F "[ /]" '{OFS="/";print $NF}'`
  #如果为文件
  if ( test $v = $k );then #file中的变量为目录
    echo "this is a folder"
    #判断目录的上一层文件夹是否存在,如存在则不创建,不存在则创建
    if (test -d "data/$k/");then
          echo "the folder is exists"
          cd data/$k/../;   #进入相应文件夹      
             
          r=`svn export http://svn.dangdang.com/repos/test/$k --username "liufei" --password "liufei123" --force|wc -l`
          echo "$r files"
          if (test $r -gt 1 );then  #如果SVN后带A符号的行数小于1则报错
             echo "Svn successfully!"
          else
             echo  -en "\033[41;36m The $k is svn fail! \033[0m"
          fi
         cd -
    else
     echo "create the folder"
      mkdir -p data/$k;
      cd data/$k/../;   #进入相应文件夹      
      r=`svn export http://svn.dangdang.com/repos/test/$k --username "liufei" --password "liufei123" --force|wc -l`
          echo "$r files"
          if (test $r -gt 1 );then  #如果SVN后带A符号的行数小于1则报错
             echo "Svn successfully!"
          else
             echo  -en "\033[41;36m The $k is svn fail! \033[0m"
          fi
      cd -
    fi   
  else ##如果file中给出的为文件
    echo "this is a file"
    mkdir -p data/$v; #创建相对路径文件夹
    cd data/$v   #进入相应文件夹      
    r=`svn export http://svn.dangdang.com/repos/test/$k --username "liufei" --password "liufei123"|grep "^A"|wc -l`
    #echo $r
    if (test $r -eq 1 );then  #如果SVN后带A符号的行数不为1则报错
        echo "Svn successfully!"
    else
       echo  -en "\033[41;36m The $k is svn fail! \033[0m"
    fi
    cd -       
  fi
                                                                                  
 done                                                                             
 


TAG:

 

评分:0

我来说两句

Open Toolbar