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

来源:互联网 发布:二炮 知乎 编辑:程序博客网 时间:2024/06/07 01:40
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
原创粉丝点击