概述
在java软件开发中,通常会用svn管理项目代码,等到系统上线的时候,从项目开始到目前为止,需要从三个维度看我们改了哪些代码:
1、都改了哪些代码,我需要一个汇总
2、哪些模块(工程)改了哪些代码,每个模块的汇总
3、哪些人修改了哪些代码,每个人的汇总
如果你也需要从这三个维度来分析,你可以用用我的这个脚本。
首先,我提供的是bat脚本,需要先下载一个svn命令客户端工具:Apache Subversion command line tools,请前往:https://www.visualsvn.com/downloads/
下载下来的是一个压缩包,我解压到D:Apache-Subversion-1.9.5,系统环境变量Path追加D:Apache-Subversion-1.9.5bin,进入cmd模式,输入svn help,没有错误证明你的环境变量配置好了。
上脚本!脚本名:svn_log_export.bat。注意配置:开始时间和结束时间。
@echo off
::开始时间
set sdate=2017-06-01T00:00:00
::结束时间
set edate=2017-12-30T23:59:59
set pwd=%cd%
::遍历配置文件
::逗号分隔,第1列为日志汇总文件名,第2列为svn目录,第3列为日志输出到的目录
for /f "delims=, tokens=1,2,3" %%a in (svn_log_export.list) do (
::1、日志输出目录不存在创建,删除已导出日志
if not exist %%c (
md %%c
)
del %%c*.log
::2、当前目录日志导出
cd %%b
echo begin export...
echo under %%b
svn log -v -r{%sdate%}:{%edate%} > %%c%%a
::3、子目录日志导出
for /d %%i in (*) do (
cd %%b%%i
if "%%b%%i" == "%%c" (
echo %%b%%i not exported.
) else (
svn log -v -r{%sdate%}:{%edate%} > %%c%%i.log
echo %%i exported.
)
)
::4、当前目录分用户导出
cd %%b
svn log -r{%sdate%}:{%edate%} > tmp.txt
for /f "delims=| tokens=2" %%a in (tmp.txt) do (
echo %%a >> tmp2.txt
)
for /f %%j in (tmp2.txt) do (
if not exist %%cuser-%%j.log (
svn log -v -r{%sdate%}:{%edate%} --search %%j > %%cuser-%%j.log
echo user:%%j exported.
)
)
del tmp.txt
del tmp2.txt
echo completed.
)
cd %pwd%
某一个java系统:java_system,分了2子个工程:java_project1、java_project2,上传到svn目录:http://xxx.xxx.xxx.xxx/svn/java_system/branches/v1.0.9。
我们用svn命令将它checkout到本地目录:E:SvnDir,命令为:svn checkout http://xxx.xxx.xxx.xxx/svn/java_system/branches/v1.0.9。
上个配置文件,与svn_log_export.bat脚本同级目录,名称为:svn_log_export.list,具体配置如下:
detail.log,E:SvnDirv1.0.9,E:SvnDirv1.0.9svnlog
用逗号分隔,第1列为所有模块汇总日志文件名,第2列为checkout到本地的目录,第3列为汇总日志输出到的本地目录,上面脚本生成的日志将生成在这个下面。
双击执行svn_log_export.bat,输出日志在目录:svnlog
detail.log包含java_project1和java_project2所有的svn日志,java_project1.log和java_project2.log分别是工程的svn日志,user-bogege.log是用户:bogege的svn日志。
最后
以上就是大气紫菜为你收集整理的bat脚本:SVN日志分类的全部内容,希望文章能够帮你解决bat脚本:SVN日志分类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复