gitlab统计任务,单个项目很简单,但是对于所有项目,可以想象。。。
问题描述:
最近接到一个任务,要统计这两个季度git仓库所有项目变更情况,当时听到这个任务的时候一脸懵逼…一个项目还简单,但是对于仓库里面所有的项目,这个想想就…
时间比较紧,老大只给2个小时左右的时间
解决思路
- 获取所有项目,项目名&git地址
- 查找单个项目(git)变更情况
- 统计所有项目的总计
实现
- 获取所有项目,项目名&git地址
可以通过jenkins/git去扫描,因为我们这里上线的项目都是通过jenkins ci去构建的,因此,所有的项目名、git地址都可以通过扫描jenkins去获取
1 2 3 4 5 6 7 8 9 10 11
| #获取所有git地址(dev/test所有项目的) find $JENKINS_HOME/jobs -name config.xml |xargs -i grep -o '<url>.*</url>' {} | sed -e 's/<url>//' -e 's/<\/url>//' | sort | uniq >gitlab_project.txt
#download代码 for project in $(cat ~/gitlab_project.txt);do echo $project; git clone $project; done
#统计2019-04-01~2019-06-30所有代码变更行数 for project in $(ls ./); do cd $project; gitcs=$(git log --stat --since="2019-4-01" --before="2019-06-30" |perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/'); echo $project,$gitcs ;cd ..;done > ~/gitchange.csv #统计2019-04-01~2019-06-30所有代码commit次数 for project in $(ls ./); do cd $project; gitcs=$(git log --oneline --since==2019-04-1 --until=2019-06-30 | wc -l); echo $project,$gitcs ;cd ..;done > ~/git_commit.csv
|