分享一個linux下svn合并指令碼 #!/bin/bash# svn合并指令碼 www.2cto.com # svn版本庫地址BRANCHES_URL=svn://xxx; # 版本號碼version=$1 if [[ $# == 0 ]]; then usage; exit;fi if [ $? -ne 0 ]; then echo '版本號碼必須是數值' exitfi echo '--------------------------------------[開始]--------------------------------------' # 把要執行動作和對應檔案的svn分支路徑記錄到臨時檔案中svn log -r $version -qv $BRANCHES_URL | grep / | awk "{print \$1\$2}" > /tmp/svn_merge_info i=1for f in `cat /tmp/svn_merge_info`do # 擷取執行的動作類型 svn_cmd=`expr substr $f 1 1` f=`echo $f | sed -e "s/^.//"` # 擷取檔案路徑 如:/js/test.js (檔案分支路如徑:/branches/master/js/test.js | /trunk/js/test.js) local_f=`echo $f | sed -e "s/\/branches\/[^/]*//" | sed -e "s/\/trunk//"` case $svn_cmd in A) tmp="svn copy -r $version ${BRANCHES_URL}$f .$local_f" ;; M) tmp="svn merge -r $((version-1)):$version --ignore-ancestry $BRANCHES_URL$f .$local_f" ;; D) tmp="svn del .$local_f" ;; *) echo "暫不支援的命令" exit ;; esac echo '' echo "執行命令:$tmp" echo '' echo "結果:" ttmp=`$tmp` result=$? echo $ttmp echo '' echo "----------------------------------------$i----------------------------------------" i=`expr $i + 1` done # 擷取分支名稱tmp_branche=`svn log $BRANCHES_URL -r $version -qv | tail -n 2 | head -n 1 | sed -r -e "s/.*branches\/([^/]*).*/\1/"`branche=$tmp_branchesvn commit -m "從$branche分支的$version版本合并,並自動認可" echo '--------------------------------------[結束]--------------------------------------'