linux shell 连接svn,linux下svn合并的shell脚本

#!/bin/bash

# svn合并脚本

# svn版本库地址

BRANCHES_URL=svn://xxx;

# 版本号

version=$1

if [[ $# == 0 ]]; then

usage;

exit;

fi

if [ $? -ne 0 ]; then

echo '版本号必须是数值'

exit

fi

echo '--------------------------------------[开始]--------------------------------------'

# 把要执行动作和对应文件的svn分支路径记录到临时文件中

svn log -r $version -qv $BRANCHES_URL | grep / | awk "{print \$1\$2}" > /tmp/svn_merge_info

i=1

for 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_branche

svn commit -m "从$branche分支的$version版本合并,并自动提交"

echo '--------------------------------------[结束]--------------------------------------'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值