使用svn命令统计两次上线之间的代码行数,以及不同作者的代码行数
2014-04-23 14:03
716 查看
原理
其原理如下:1,取得svn的两个版本之间的diff数据
target=https://svn.xxx.com/erp/trunk/cms/cmsnew
start_version=113121
end_version=113128
步骤一,使用svn diff命令取得SVN两个版本diff文件
svn diff -r$start_version:$end_version$target --username lizejun --password xxx >svndiff.log
步骤二,然后将文件取得 开头为+的行,处理后去掉空行,计算行数
grep "^+" svndiff.log | grep -v"^+++" | sed 's/^.//'| sed s/[[:space:]]//g |sed '/^$/d'|wc -l
2,取得某个RD在两次上线版本之间增加的代码行数
步骤一,使用svn log命令取得$rdname提交代码的svn版本号
svn log -q $target -r$start_version:HEAD --username lizejun --password xxx |awk '{print $1,$3}'|grep$rdname |awk '{print \$1}'
步骤二,将取得的版本号与上一个版本做操作1中的工作,统计代码的增加情况
for rev in ${revs};do
rev=${rev:1}
last_rev=$((rev-1))
${SVN_CMD} diff -r${last_rev}:${rev} $target --username $USERNAME --password$PASSWD > $TEMPFILE
count=`grep "^+" $TEMPFILE | grep -v "^+++" |sed 's/^.//'| sed s/[[:space:]]//g |sed '/^$/d'|wc -l`
TOTAL=$((TOTAL+count))
rm -rf $TEMPFILE
done
代码脚本
//向我们公司伟大的作者致敬,为防止挖墙脚,去掉作者#! /bin/bash # 计算有效变更代码量的脚本 # 包括注释,但不包括新增的空行 version() { OS=`uname -o` echo "svn_counter ($OS) 0.0.1" } usage() { echo "usage: svn_counter [-t SVN_REPOSITORY_URL] [-s START_REVISION]" echo " [-e END_REVISION] [-u USER_NAME]" echo " [-p PASSWD]" echo " svn_counter [-v|-h]" echo echo " -t, 目标SVN库地址" echo " -s, 起始修订号" echo " -e, 结束修订号" echo " -a, 提交作者" echo " -u, svn帐号" echo " -p, svn密码" echo " -h, 帮助" echo " -v, 版本信息" } if [ $# -lt 1 ]; then usage exit 1 fi while getopts "t:s:e:a:u:p:vh" opt; do case $opt in t) target=$OPTARG;; s) start_revision=$OPTARG;; e) end_revision=$OPTARG;; a) author=$OPTARG;; u) user=$OPTARG;; p) passwd=$OPTARG;; v) version; exit 1;; h) usage; exit 1;; esac done if [ -z $target ]; then echo "请输入目标SVN库地址!" exit 1 fi if [ -z $start_revision ]; then echo "请输入起始修订号!" exit 1 fi #SVN_CMD='/home/work/local/svn/bin/svn' SVN_CMD='svn' TEMPFILE=temp_diff.log USERNAME=${user} PASSWD=${passwd} TOTAL=0 if [ -z $author ]; then if [ -z $end_revision ]; then ${SVN_CMD} diff -r$start_revision $target --username $USERNAME --password $PASSWD > $TEMPFILE else ${SVN_CMD} diff -r$start_revision:$end_revision $target --username $USERNAME --password $PASSWD > $TEMPFILE fi #去掉含空格的空行 TOTAL=`grep "^+" $TEMPFILE | grep -v "^+++" | sed 's/^.//'| sed s/[[:space:]]//g |sed '/^$/d'|wc -l` #没有去掉有的空行 #TOTAL=`grep "^+" $TEMPFILE|grep -v "^+++"|sed 's/^.//'|sed '/^$/d'|wc -l` rm -fr $TEMPFILE echo "$TOTAL" else if [ -z $end_revision ]; then revs=`${SVN_CMD} log -q $target -r $start_revision:HEAD --username $USERNAME --password $PASSWD |awk '{print \$1,\$3}'| grep ${author}| awk '{print \$1}'` else revs=`${SVN_CMD} log -q $target -r $start_revision:$end_revision --username $USERNAME --password $PASSWD |awk '{print \$1,\$3}'| grep ${author}| awk '{print \$1}'` fi for rev in ${revs};do rev=${rev:1} last_rev=$((rev-1)) ${SVN_CMD} diff -r${last_rev}:${rev} $target --username $USERNAME --password $PASSWD > $TEMPFILE count=`grep "^+" $TEMPFILE | grep -v "^+++" | sed 's/^.//'| sed s/[[:space:]]//g |sed '/^$/d'|wc -l` TOTAL=$((TOTAL+count)) rm -rf $TEMPFILE done echo "$TOTAL" fi
相关文章推荐
- 使用mac终端命令统计iOS项目的代码行数
- 统计两个SVN提交commit之间代码行数改动
- 控制台——代码行数统计、删除.svn文件、静态库命令、protocBuf命令
- 使用 find 命令统计代码行数的小技巧
- 使用statsvn 统计代码行数等项目信息
- Linux: 统计代码行数和SVN修改行数的命令
- AndroidStudio配置SVN以及使用代码管理
- 统计svn上两个版本或一段时间内的代码修改行数
- [转] 一句shell命令搞定代码行数统计
- svn查看代码作者的命令
- 利用SVN log命令统计SVN提交代码
- 使用StatSVN统计代码
- windows下,使用SVN下载代码,以及目录结构介绍
- SVN代码回滚命令之---merge的使用
- Linux 统计代码行数命令
- 一行shell命令实现代码行数统计
- 一句shell命令搞定代码行数统计
- linux命令之目录监控 字符串拆分 监控命令运行结果 统计行数 去除文本头尾空格 获取网卡名浮点数运算等命令使用技巧
- SQLite在android中的使用,以及常用增删查改的命令代码!
- 终端中统计xcode工程代码行数命令