Git Stat

最近项目在搞人力资源配置优化,其中一个就是对代码提交量做统计,项目使用的是 Git 仓库,本来想偷懒去网上找个现成的工具,结果有点失望,没有找到能用的,绝大部分都是 shell 脚本,虽然也能执行,但想要达到要求的结果还得大改,而且显示也不直观,再加上我 shell 水平比较弱,最后决定用 java 来写个分析工具,将分析结果放到 web 页面来展示。

实现原理

由于是做一个全局的 Git 提交分析,这边只对 git log 的结果分析,分析的结果只显示增加的行数以及删除的行数,代码贡献以增加的行数为基础统计,个人提交明细显示统计时间段内每天提交量,横轴以[1-N]天来显示,并不显示具体的日期、周或者月份。

具体统计的执行脚本,例:

git log --pretty=format:"%cn;%ad;%d" --numstat --date=iso --since=2015-07-06 --until=2015-07-11

本来想把committer参数带进去的,但项目在配 git 用户的时候用户名跟提交名并没有完全配成一样的,所以这个功能没有实现,目前的做法为一次性取出指定时间段内的所有提交结果,统一分析,将分析结果一起返回到前台页面,这样的话只要执行一次命令就可以了,但结果分析需要多花一些时间,尤其是统计时间长,提交人员多的时候响应会有点延时。几十个人的团队建议统计半年以内的结果,再大的我也没测过,如果有需求的话也可以跟我联系。

界面展示

界面部分我也搞得比较素,没有用 UI,图表展示的时候用到了百度的 echarts,echarts 确实做得很好,渲染也很快,免费而且没有让人讨厌的水印。

下面看看几个主要的界面:

统计列表

统计列表

贡献饼图

统计饼图

个人提交明细

个人提交明细

前台 js 框架用的是 zepto,所以不兼容一些低版本的浏览器,推荐使用 chrome。

操作说明

目前只提供一天内、一周内、一月内、自定义四种统计方式,自定义需要选择起始、结束日期,还有一个右上角的 local git path 第一次需要指定下,直接拷贝你本地的 git 仓库目录,Windows、Linux 都是支持的。

需要注意的是统计只是在本地的 git 项目仓库目录下执行 git log 并对结果进行统计分析,也就是说,分析只限于已经 git pull 代码,如果想要统计最新的提交记录,需要拉取最新项目代码再统计,如果是 Windows ,首先要确保 git 命令在 cmd 命令行里面可以执行。

我已经把应用打成 war 包放在 csdn 上,下下来直接部署在 tomcat 服务器就能跑。

下载:statgit.war

最后说明下,类似的统计只是一个辅助手段,并不能完全确定个人的工作量。同一个功能实现方式不同代码量可能差异比较大,而且 git log 命令本身并不能确定修改的行数以及修改的字节数,只能统计增加和删除行数,也不能简单的相减来算工作量,所以我对结果没有做合并,大家有好的思路可以交流下。E-mail: JackyShen