摸鱼也可以效率翻倍: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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop基础介绍

Hadoop基础介绍一、总体介绍二、HDFS架构三、MapReduce结构四、YARN架构一、总体介绍 1、定义: 是一个开源的、可靠的、可扩展的分布式计算框架。 2、用途: (1)数据仓库 (2)PB级别数据的存储与处理。 3…

JetpackCompose从入门到实战学习笔记13——Compose中实现简单瀑布流

JetpackCompose从入门到实战学习笔记13——Compose中实现简单瀑布流 文章目录JetpackCompose从入门到实战学习笔记13——Compose中实现简单瀑布流1.简介:2.竖向的StaggeredGrid参数:3.简单使用如下:4.竖向瀑布流效果如下:5.横向的…

基于html+css的内容旋转

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Solon v2.2.7 发布,支持 Java 20

Solon 是一个高效的 Java 应用开发框架:更快、更小、更简单。也是一个有自己接口标准规范的开放生态。 150来个生态插件,覆盖各种不同的应用开发场景: 相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍…

MLSkin 5.3 for delphi Crack

MLSkin 是Delphi下面的一款皮肤组件,是基于Delphi标准组件继承而来,扩展了很多实用的属性功能供开发者调用;在使用上和标准的VCL组件相差不大,但显示风格却大不一样,可以很轻松地实现像QQ皮肤那样的效果,想…

镜头光学指标介绍----清晰度SFR

目录 简介 常用单位 lp/mm(line-pairs/mm) Cycle / pixel LW/PH(line widths/ picture height) 转换关系 MTF MTF概念 MTF50,MTF50P SFR的计算方法 参考资料: 简介 在镜头选型或者对比中&…

【从零开始学习 UVM】10.2、UVM TLM —— UVM TLM Blocking Put Port

文章目录 UVM TLM Port Example1. 创建一个发送器类,其端口类型为 uvm_blocking_put_port2. 创建一个接收器类,实现 put 方法。3. 在更高层次上连接端口及其实现Put Port 阻塞行为任何组件都可以通过 TLM put port向另一个组件发送事务。接收组件应该定义 put port的实现。这…

【CSAPP】进程 | 上下文切换 | 用户视角下的并发进程

💭 写在前面:本文将学习《深入理解计算机系统》的第六章 - 关于异常控制流和系统级 I/O 的 进程部分。CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写,该教材由Randal E. Bryant和David R. OHallaron 合著…

流量整形(GTS和LR)

Generic Traffic Shaping通用流量整形 通用流量整形(简称GTS)可以对不规则或不符合预定流量特性的流量进行整形,以保证网络上下游之间的带宽匹配,避免拥塞发生。 GTS与CAR一样,都采用了令牌桶技术来控制流量。GTS与CAR的主要区别在于:利用CAR进行报文流量控制时,…

蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)

文章目录零、吐槽一、关于自创模板,和自写模板库的问题二、关于 详解A/D、D/A、PCF8591 这篇文章一些小错误三、模板最终版本main.cds1302.conewire.honewire.ciic.hiic.c附、第十四届蓝桥杯单片机赛题零、吐槽 今年是矩阵键盘三个协议一起调用啊。真是一年比一年难…

免费CRM如何进行选择?

如今CRM领域成为炙手可热的赛道,很多CRM系统厂商甚至打出完全免费的口号,是否真的存在完全免费的crm系统?很多企业在免费使用过程中会出现被迫终止的问题,需要花费高价钱才能继续使用,那么,免费crm系统哪个…

用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~

目录 一、介绍 二、使用方法 三、其他实例 1.正则表达式 2.自动化测试脚本 3.聊聊技术 一、介绍 Cursor主要功能是根据用户的描述写代码或者进行对话,对话的范围仅限技术方面。优点是不用翻墙、不需要账号。Cursor基于GPT模型,具体什么版本不祥&#…

【视频分割】【深度学习】MiVOS官方Pytorch代码-S2M模块DeepLavV3Plus网络解析

【视频分割】【深度学习】MiVOS官方Pytorch代码-S2M模块DeepLavV3Plus网络解析 MiVOS模型将交互到掩码和掩码传播分离,从而实现更高的泛化性和更好的性能。单独训练的交互模块将用户交互转换为对象掩码,本博客将讲解S2M(用户交互产生分割图)模块的深度网…

【Vue框架】Vue绑定样式及案例之行内样式——对象绑定样式与数组控制样式(附带源码案例)

文章目录一、Vue样式绑定1.1 Vue绑定class样式1.2 Vue绑定行内样式1.2.1 对象控制绑定样式1.2.2 数组控制绑定样式1.3 Vue绑定样式案例(标题排他)1.4 v-if和v-show指令1.5 v-if实现选项卡案例1.6 购物车实例一、Vue样式绑定 1.1 Vue绑定class样式 Vue通过v-bind动态样式绑定。…

前端基础-ES6

前端基础-ES61.let&const2.解构表达式数组解构对象解构字符串扩展函数优化map、reducePromise异步编排模块化本文引用了尚硅谷谷粒商城的内容 参考文档:https://blog.csdn.net/weixin_44364444/article/details/126198957 1.let&const var 声明的变量往往…

网络安全行业现在好混吗,工资水平怎么样?

前段时间看到有人私信:网络安全行业现在好混吗,工资水平怎么样?今天在这里做个回答,不知你所说的“好混吗”指的是什么? 薪资高,待遇好?不加班,活儿少?不受气&#xff0…

Junit 5 单元测试框架

目录 1. Junit 5 的依赖 2. Junit - 注解 2.1 Test 2.2 BeforeEach 2.3 BeforeAll 2.4 AfterEach 2.5 AfterAll 3. Junit - 断言 3.1 assertEquals/ assertNotEquals 断言是否匹配 3.2 assertTrue / assertFalse 断言结果的真假 3.3 assertNull / assertNotNull 断言…

Matlab 一种计算植物面积密度的新方法(论文复现:凸包法)

文章目录 一、简介三、实现代码三、实现效果参考资料一、简介 该方法基于水平切片和森林冠层凸包来计算出植物面积密度(PAD),具体过程如下所述: 1、第一步是对整个点云进行切片。在每个水平切割( z = z i z = z_i z

【C++】用一棵红黑树同时封装出map和set

苦厄难夺凌云志,不死终有出头日。 文章目录一、封装第一层:仿函数取结点中的key关键码二、封装第二层:红黑树的普通迭代器1.map和set的表层迭代器实现2.底层红黑树中迭代器的实现三、封装第三层:1.set的迭代器(底层均…

2022年业绩逆势增长,“要强”蒙牛再创蒙牛

2022年是蒙牛“再造一个新蒙牛”五年计划的第二年,也是乳企赛道疫情以来最为艰难的一年,这一年里,不仅有疫情多点散发所带来的线下渠道不畅,也有原材料价格飙涨所导致的成本高企。 在这种形势下,蒙牛尽管遭遇多重困难…
最新文章