前言: 时至2022年,还是有很多团队采用SVN作为团队代码库工具,SVN相比于GIT在易用性上会好很多,对于一些小团队和一些非开发人员来说很友好。有的团队会有通过SVN作为统计开发人员绩效的需求,同时由于近期市面上好用的SVN统计工具较少,所以就自己用python+flask+Vue搭建了一套基于网页的SVN统计工具SVNlog-printware。
1 SVNlog-printware介绍
SVNlog_printware是一个开源代码统计程序,通过从Subversion版本库中取得信息的,比如:代码行数的时间线;针对每个开发者的代码及文档数量;针对每个开发者所在组的代码及文档数量等。
2 SVNlog-printware使用条件
SVNlog-printware是一个python&Vue写的开源代码统计程序,是从Subversion版本库中取得信息的,所以使用SVNlog-printware有两个限制。
-
需要安装python和一些依赖包的运行环境(python3.9&flask&pexpect)
执行以下命令:
pip3 install flaskpip3 install -I pexpectpip3 install gevent
-
需要在服务器上安装Vue和Nginx服务器
-
需要使用svn客户端,必须保证本机的svn客户端命令可用
3 SVNlog-printware服务器运行方法
3.1 后端部署:
-
将svnlog-printware-server.py拷贝至SVN文件夹下(可以正常运行SVNlog语句的文件夹)
-
根据需求修改相关代码配置文件
-
后台持续运行Flask
nohup python3 svnlog-printware-server.py &辅助调试命令
- 检查当前运行python端口进程:netstat -tunlp | grep 5000
- 停止该进程:kill { pid }
python启动/重新启动
- netstat -tunlp | grep 5000(重新启动时需要)
- kill { pid }(重新启动时需要)
- nohup python3 svnlog-printware-server.py &
3.2 前端部署:
- 安装Nginx服务器
- 将Vue导出的网页放在指定文件夹并进行配置(防止js、css等文件被过滤)
- 访问指定ip和端口:
{ ip }:{ port }/svn
Nginx重新启动(一般不需要重新启动,重新配置端口后需要重新启动)
/usr/local/nginx/sbin/nginx -v /usr/local/nginx/sbin/nginx -s reload
前端重新部署
- vue生产html:
npm run build - 将dist文件夹的文件复制到nginx指定目录
3.3 代码适配
置SVN服务器的账户和密码用于SVN文件更新:**svn update --username qiyunjie --password qiyunjie
增加新文件格式:
- 在对应的列表(从上至下分别为代码、文档、图片、视频)中加上所需要的格式
# 判断类型
codeArray = ['java', 'c','msg', 'cpp', 'py','h','dart','yaml','xml', 'html', 'css', 'js','vue','class','iml', 'cc', 'gitignore', 'hpp', 'sh', 'json', 'arxml']
docArray = ['doc', 'docx','ppt','pptx','xls','xlsx','txt','md', 'zip','rar', 'rp', 'xmind', 'vsdx', 'vsd', 'csv']
picArray = ['gif', 'png', 'bmp', 'ico', 'jpg', 'jpeg']
videoArray = ['mp4', 'm4v', 'mkv', 'webm', 'avi', 'wmv', 'mpg', 'flv', 'mov']
- 添加完成后重新运行python文件
4 后台接口文档
根据传入type的不同分别支持按当天、上周、diy自定义统计
按员工统计:http://{ ip }:5000/getUserMsg?type={day/week/diy}
按组统计:http://{ ip }:5000/getGroupMsg?type={day/week/diy}
展示详细信息:http://{ ip }:5000/getDetailMsg?type={day/week/diy}
5 相关Linux命令
连接本地SVN服务器(若无可省略):ssh -x server@192.168.123.121
到运行目录:cd data_backup/svn_server_everyday_backup/
生产log文件命令:svn log -r {2022-3-16}:{2022-3-18} -v --xml >weeklogfile.log --username { username }--password { password }
python运行命令:python3 svnlog-printware-server.py
python运行命令(持续运行):nohup python3 svnlog-printware-server.py &