当前位置: 首页 > article >正文

摸鱼也可以效率翻倍:Python 统计 gitlab 代码量,定量统计发给领导

嗨害大家好鸭!我是爱摸鱼的芝士❤

在这里插入图片描述

一、确定需求

需求是公司大领导想要了解每周研发提交的代码量。
因为研发人员比较多,
想着用 python 做个自动化,
定时统计代码量并发送邮件给领导。

二、统计gitlab代码

首先安装第三方库python-gitlab,
里面封装了很多操作 gitlab api 的方法,
我们只需要调用这些方法即可。

三、正式开始

1、命令安装

pip3 install python-gitlab

2、获取 gitlab 管理员账号的私有令牌,具体在哪不多说了,百度一下或者找 gitlab 的维护人员。

(自己用的,不是公用的嗷,别搞混了)

请添加图片描述

3、登录 gitlab 及一些常用方法

import gitlab

# gitlab 代码仓库地址
url_gitlab = 'http://xxxx.com.cn/'
# 上面获取的 gitlab 私有令牌
private_token= 'saidfhdfhsud'

# 获取 gitlab 可操作对象
gl = gitlab.Gitlab(self.url_gitlab,private_token=private_token,api_version='4')

# 获取第一页的 project
projects = gl.projects.list()

# 获取所有的 project
projects = gl.projects.list(all=True)

# 获取所有 project 的 name 和 id
for i in gl.projects.list(all=True, as_list=False):
    name = i.name
    id = i.id

# 获取第一页 project 的 name 和 id
for i in gl.projects.list(page=1):
    name = i.name
    id = i.id

# 根据 id 查找项目
project = gl.projects.get(id)

# 获取该项目下所有分支python源码扣扣qun:540305994
branches = project.branches.list()    

# 获取指定分支的属性
branch = project.branches.get('master')

# 获取改项目下所有commits
commits = project.commits.list()   

# 获取指定commit的info
commit = project.commits.get('s9dfsa')

4、统计增量代码

start_time = '2021-02-20'
end_time = '2021-02-26'
# 先把所有项目查出来,all=True 一定要加上。不然查出来的只有第一页项目
projects = gl.projects.list(all = True)
# 遍历每一个项目
for project in projects:
    # 把每个项目下面的所有分支查出来
    branches = project.branches.list()
    # 然后再遍历每一个分支
    for branch in branches:
        # 获取一段时间内,指定分支的 commits
        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)
            # 提交commit开发者
            committer_name = com.committer_name
            # 提交代码 增量、删除、总量
            stats = com.stats
            # 增量代码
            additions = stats['additions']

stats是一个字典,
里面有三组key-value。

additions 是新增代码,
deletions 是删除代码,
total 是总量代码(新增+删除)。
到这里就可以统计增量、删除 或者 总量代码了,
提供一种思路,
用 pandas 的 dataframe 数据结构统计比较方便 。

请添加图片描述
在这里插入图片描述

今天的文章就到这里噜~

咱下篇文章再见啦(✿◡‿◡)


http://www.kler.cn/a/7376.html

相关文章:

  • Three.js PBR材质
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十四,总结编码过程,从摄像头获得数据后,转成AVFrame,然后再次转成AVPacket,
  • Qt / Qt Quick程序打包的一些坑 (四)
  • ADS学习笔记 5. 微带天线设计
  • 探秘Spring Boot中的@Conditional注解
  • 游戏引擎学习第九天
  • Python3 os.isatty() 方法、Python3 os.dup2() 方法
  • Hadoop基础介绍
  • JetpackCompose从入门到实战学习笔记13——Compose中实现简单瀑布流
  • 基于html+css的内容旋转
  • Solon v2.2.7 发布,支持 Java 20
  • MLSkin 5.3 for delphi Crack
  • 约瑟夫问题
  • 【redis】redis分布式锁
  • 镜头光学指标介绍----清晰度SFR
  • 【从零开始学习 UVM】10.2、UVM TLM —— UVM TLM Blocking Put Port
  • 【CSAPP】进程 | 上下文切换 | 用户视角下的并发进程
  • 流量整形(GTS和LR)
  • 蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)
  • L2-040 哲哲打游戏 简单模拟
  • 免费CRM如何进行选择?
  • 用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~
  • 【视频分割】【深度学习】MiVOS官方Pytorch代码-S2M模块DeepLavV3Plus网络解析
  • 【Vue框架】Vue绑定样式及案例之行内样式——对象绑定样式与数组控制样式(附带源码案例)
  • 前端基础-ES6
  • 网络安全行业现在好混吗,工资水平怎么样?