统计gitlab代码提交情况

1.准备工作

参考链接:http://t.csdn.cn/YWCst
参考链接:https://mp.weixin.qq.com/s/_bt5OJSAfOFisG594Q5qCg
推荐链接:http://t.csdn.cn/PNE7I

  • 1.内网gitlab代码仓库
  • 2.管理员级别的账号
    我们先看gitlab,我们的目的是统计每个人每天的提交量,那么通过GitlabGUI界面是否能实现?可以,通过以下功能进入活动页面:
    在这里插入图片描述

2. 调研工作

这个时候python-gitlab就要开始登场了,这个项目是通过gitlab公开的API进行封装的一套易用插件。地址:https://readthedocs.org/projects/python-gitlab/

3. 安装

安装python-gitlab
打开终端输入:

pip3 install python-gitlab

待提醒success即表示安装成功,已经安装可以用pip list查看

C:\Users\liuyan\uric_web\ram_delete>pip list
python-gitlab               3.11.0

4. 编码准备

4.1 获取private_token信息

根据python-gitlab文档可知,我们需要一个private_token来做所有操作的一个身份识别。那么这个token怎么获取呢?

  1. 打开个人下面的setting
    在这里插入图片描述
  2. 在setting中选择
    在这里插入图片描述
  3. 创建private_token
    在这里我们只需要填写name并勾选api即可
    在这里插入图片描述
    填好后,点击下面的按钮即可,这个时候就会生成我们所需要的private_token了:
    在这里插入图片描述
    复制备用即可:eRoN9xXtGCetWV144bow

4.2 编码

下面打开我们的编辑器,开始编码。在编码前我们先梳理一下编码逻辑
1.需要遍历所有项目
2.需要遍历所有项目下面拥有的分支
3.遍历所有分支下每个人提交的代码数量
4.有时间限制
下面开始编码。

### 使用Python进行GitLab代码提交统计 对于在Python中实现GitLab代码提交统计的任务,一种有效的方式是利用`python-gitlab`库与GitLab API交互。这允许程序化地访问项目中的提交记录并对其进行分析。 安装必要的依赖包可以通过pip完成: ```bash pip install python-gitlab requests ``` 下面是一个简单的例子,展示如何连接到GitLab实例,并获取特定项目的提交历史统计数据[^4]。 #### 获取提交数据 首先定义函数来建立同GitLab服务器之间的会话以及检索目标仓库的所有commit对象列表: ```python import gitlab def get_project_commits(gitlab_url, private_token, project_id): gl = gitlab.Gitlab(gitlab_url, private_token=private_token) project = gl.projects.get(project_id) commits = [] for commit in project.commits.list(all=True): # 获取所有的提交 commits.append(commit.attributes) return commits ``` 此部分代码创建了一个GitLab客户端实例,并通过提供的URL和个令牌认证信息登录到了指定的服务端;接着定位至所需的工程下拉取其完整的提交日志条目集合。 #### 统计行数变化 为了计算每次提交所引起的文件更改量(增加/删除),可以进一步解析每个Commit详情里的diff属性。这里给出一段辅助性的方法用来汇总这些数值: ```python from collections import defaultdict def count_lines_change(commits): changes = defaultdict(int) for cmt in commits: try: diffs = cmt['diff'][:10] # 取前十个差异片段作为样本 for df in diffs: added = len([line for line in df.split('\n') if line.startswith('+')]) removed = len([line for line in df.split('\n') if line.startswith('-')]) changes[cmt['id']] += (added - removed) except KeyError as e: continue return dict(changes) ``` 上述逻辑遍历每一个已获得的提交项,尝试读取出它们各自的改动细节,并基于加号(`+`)开头表示新增而减号(`-`)代表移除的原则累加每笔交易影响了多少行源码[^3]。 请注意,在真实场景里应当更加谨慎处理API返回的数据结构,因为并非所有情况下都能保证存在有效的diff字段。此外,考虑到性能因素,建议仅针对最近一段时间内的活动做此类深入审查而不是整个版本库的历史全貌。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值