经常遇到在版本库中修改了许多文件,而且文件修改都不在同一个目录,当我想将修改的文件另外提取出来的时候,svn并没有提供这样的快捷工具,于是自己利用业余时间做了一个简单的shell脚本,用于提取版本库中修改的文件,代码如下:
#!/bin/bashcurpath=$(pwd)
#获取版本库中修改文件
filename=$(svn st -q |awk '$1 ~/^[M]/ {print $2}')
#echo $filename
#在当前目录下创建export目录,用于保存修改文件目录树
if [ ! -d "export" ]; then
echo "create export dir"
mkdir export
fi
exportdir=$(echo "$curpath/export")
chmod -R 777 $exportdir
logfile=modify$(date +%y%m%d%H%M%S).log
echo "modify log begin..." >$logfile
for file in $filename
do
#得到修改的文件名称
tmp=$(echo $file | awk -F / '{print $NF}')
#获取修改文件坐在的路径
filedir=${file/%"$tmp"/}
if [ ! -d "$exportdir/$filedir" ]; then
echo "$exportdir/$filedir"
mkdir -p $exportdir/$filedir
fi
#将文件拷贝到export中的目录树种
cp -f $file $exportdir/$file
#保存已拷贝的修改文件记录信息
echo $curpath/$file >>$logfile
done
这个脚本暂时只支持原有版本库中修改的文件提取,对于新增加的文件提取如果有兴趣可以实现一下。