svn diff所有历史版本的小脚本

svn diff所有历史版本的小脚本:
通过查询历史版本,然后比较每个相邻版本之间的区别。
执行 svn_diff_tool.sh filename

自己也是shell的初学者。不足之处欢迎指出。

#!/bin/bash
# -*- coding: utf-8 -*-  
#coding=utf-8

#判断文件是否存在
if [ ! -e $1 ]; then
echo "ERROR:$1 is not exist,please input right filename"
exit 0
fi

#把输入文件名去掉路径信息,只保留文件信息,然后根据文件名字建立新的log信息存放文件。
path_filename=$1
filename=${path_filename##*/}
version_log_filename=${filename%.*}"_version.log"
diff_log_filename=${filename%.*}"_diff.log"
version_author_filename=${filename%.*}"_version_info.log"

#如果存在历史文件,那么清空log信息
if [ -e $version_log_filename ]; then
echo /dev/null > $version_log_filename
echo /dev/null > $diff_log_filename
fi
#执行svn命令,获取历史version,然后把version信息存入指定文件
svn log $1 2>err.log| grep [r][0-9]| sed "s/|//g"| sed "s/ //g"| sed "s/^\([r][0-9]\{1,4\}\)\(.*\)$/\1/"  1>$version_log_filename
svn log $1 2>err.log| grep [r][0-9]| sed "s/|//g" 1>$version_author_filename
#判断是否为SVN file
if cat  err.log | grep -qE "is not a working copy"
then
   echo "ERROR:the file is not in a working copy,please input the right file path"
   exit 0
fi

#遍历读出VERSION信息,存入数组
k=0
arry=()
while read i
do
let k+=1
arry[$k]=$i
#echo ${arry[$k]}
done<$version_log_filename

#把数组中存的VERSION信息,依次比较,并把log信息存入指定位置
let k-=1
for i in $(seq $k)
do
svn diff -r ${arry[$i]}:${arry[$i+1]} $1 1>>$diff_log_filename
done

#删除中间文件
rm $version_log_filename

#输出log信息,写明log存放的文件名
echo "the version log info is saved in current path $version_author_filename"
echo "the diff log info is saved in current path $diff_log_filename"


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值