怎么统计公司Gitlab上每个人每天的提交量?

如果您觉得文章内容对您有用,请**点赞**支持一下。您的支持是我继续创作的最大动力。也欢迎关注我的公众号”计算机自学平台“获取更多学习资源和交流群体。

引言
前几天接到领导命令:以后把每天提交的代码作为一项考核标准。
团队人员说多也不多,但也有15个人了。自己去一个一个看并统计提交量,既浪费时间又浪费精力。
所以我的想法是,使用代码去统计每个人每天的提交数量,然后通过随机抽查去查看每个人的代码质量。
准备
确定了自己的需求后,就开始着手准备具体手段了。下面先看下我们当前有的东西。
1.内网gitlab代码仓库
2.管理员级别的账号
管理员级别的账号就不需要多说了,我们先看gitlab,我们的目的是统计每个人每天的提交量,那么通过GitlabGUI界面是否能实现?可以,通过以下功能进入活动页面:
在这里插入图片描述
然后再活动页面你会看到所有人所有项目的提交记录:
在这里插入图片描述
通过每个人的提交记录,然后点进去就是他本次提交的内容。所以,这个手动统计的办法是可以实现领导提的需求的,但是此方法上面说了,太费时费力。那我们怎么用代码去统计呢?
调研
这个时候python-gitlab就要开始登场了,这个项目是通过gitlab公开的API进行封装的一套易用插件。地址:https://readthedocs.org/projects/python-gitlab/
在这里插入图片描述
具体的使用说明文档也在上面那个地址中,我们仅仅是用来统计代码提交量的所以直奔主题。
安装python-gitlab
打开终端输入:

pip3 install python-gitlab

待提醒success即表示安装成功。
编码准备
根据python-gitlab文档可知,我们需要一个private_token来做所有操作的一个身份识别。那么这个token怎么获取呢?
1.打开个人下面的setting
在这里插入图片描述
2.在setting中选择
在这里插入图片描述
3.然后在打开的页面中,你会看到如下界面:
在这里插入图片描述
在这里我们只需要填写name并勾选api即可。(其他几个的功能也很简单就不细说了)
在这里插入图片描述
填好后,点击下面的按钮即可,这个时候就会生成我们所需要的private_token了:
在这里插入图片描述
复制备用即可。
编码
下面打开我们的编辑器,开始编码。在编码前我们先梳理一下编码逻辑
1.需要遍历所有项目
2.需要遍历所有项目下面拥有的分支
3.遍历所有分支下每个人提交的代码数量
4.有时间限制
下面开始编码。
1.配置项目配置

url = 'http://192.168.1.229/'  # gitlab安装地址
private_token = 'dfsdfadJZr7ZDMtsn9REC'  # gitlab 就是上面我们获取的那个
2.获取gitlab操作对象
# 登录 获取gitlab操作对象gl
gl = gitlab.Gitlab(url, private_token)
3.设置时间范围,因为我每天都要统计,所以选择的是一个24小时范围。
start_time = '2020-05-25T00:00:00Z'
end_time = '2020-05-26T00:00:00Z'
4.遍历出来所有项目,因为一个公司不可能只有一个项目,有可能有很多个。我们这边有三十多个,所以为了统计完全就需要把所有项目都遍历一遍。如果你仅有一个那就不需要这么麻烦了。
projects = gl.projects.list(all=True)#先把所有项目查出来
for project in projects:#遍历每一个项目
	branches = project.branches.list()#把每个项目下面的所有分支查出来
	for branch in branches:#然后再遍历每一个分支
		commits = project.commits.list(all=True,query_parameters={'since': start_time,'until':end_time, 'ref_name': branch.name})#根据时间、分支名遍历该分支下面所有的提交记录
		for commit in commits:#然后再遍历每个提交记录,查询每个提交记录的人和量
			com = project.commits.get(commit.id)

到这里我们就把所有人的所有提交量都查出来了,其中对我们有用的就两个参数,一个是com.author_name对应每个提交者name,com.stats[‘additions’]对应的是提交量。
5.下一步就是去重,相加,就可以了。
我的运行结果:

[ {'name': 'aaa', 'total': 757}, {'name': 'bbb', 'total': 290}, {'name': 'ccc', 'total': 244}, {'name': 'ddd', 'total': 448}, {'name': 'eee', 'total': 854}, {'name': 'fff', 'total': 253}, {'name': 'ggg', 'total': 1705}, {'name': 'hhh', 'total': 131}]

至此,实现我们的需求。
欢迎留言交流,也可以去公众号”计算机自学平台”回复gitlab获取源代码。

猜你喜欢

转载自blog.csdn.net/farley119/article/details/106355851