python读取git日志_Python获取gitlab提交历史!
工作中的场景,记录下来分享给大家。
需求
公司私有部署了gitlab保存公司代码,希望在发布系统中可以展示项目在gitlab的提交历史,供发布人员选择提交commit记录并构建对应的docker镜像。
不可行的方案
但是很快我就发现,这个方案是不可行的。
这个库实际上相当于git客户端,它必须把gitlab远程仓库的代码checkout到本地,然后才能执行类似git log命令的方式获取提交日志。
对于一个web应用来说,仅仅为了看一下提交历史就要把代码下载回来,显然是合理的。
建议方案
解决方法是直接访问gitlab的API,它拥有所有的仓库,因此也可以快速的查看提交历史。
首先创建客户端:
import gitlab
client = gitlab.Gitlab(https://gitlab-team.tiantian.com, private_token='XXXXXXXXXX', timeout=2, api_version='3')第一个参数:gitlab服务端地址
private_token:它支持多种登录认证方式,常见的就是帐号+密码 或者 授权一个token(去gitlab中分配)。
timeout:超时时间单位是秒。
api_version:需要看一下gitlab服务端的版本,较旧的服务端版本提供的是v3的API,最新的提供的是v4 API,版本不对应是无法访问通gitlab的。
现在我们要主动发起认证:
client.auth()
然后获取到project:
project = client.projects.get('python/web')
该库整体遵循同样的面向对象以及资源风格,因此获取projects就是projects.get(),列举projects就是projects.list()。
拿到project后,就可以进一步获取其下的commits信息:
commits = project.commits.list(ref_name='master', page=0, per_page=20)
print(commits)
可以筛选特定分支的提交记录,支持翻页(注意第一页page=0)。
最终得到的结果是什么呢?
[, , , , , , , , , ]
没错,若干ProjectCommit对象组成的列表,依旧遵循面向对象风格。
我们可以遍历每个Commit对象,进一步获取其信息:
for c in commits:
print(c.id, c.committer_name, c.created_at, c.message)
输出如下:
e8c0320b7d76888b50b4704c986ab162f729d9d2 owen 2019-02-12T15:39:51.000+08:00 修复BUG
7e0e6a24742fe8dca494aee37dacfff4c5986102 owen 2019-02-01T18:17:46.000+08:00 添加REDIS
e91f06831edaa848ffa9e43d919a91140731af52 owen 2019-01-24T14:02:33.000+08:00 删除调试代码
最后
相信大家已经掌握了该库的使用思路,具体每个对象有什么方法,有哪些属性呢?
python读取git日志_Python获取gitlab提交历史!相关推荐
- python读取数据库导出文件_Python 获取 datax 执行结果保存到数据库的方法
执行 datax 作业,创建执行文件,在 crontab 中每天1点(下面有关系)执行: 其中 job_start 及 job_finish 这两行记录是自己添加的,为了方便识别出哪张表. #!/bi ...
- python读取windows日志_Python解析windows系统日志文件
DOM是Document Object Model的简称,XML 文档的高级树型表示.该模型并非只针对 Python,而是一种普通XML 模型.Python 的 DOM 包是基于 SAX 构建的,并且 ...
- python读取windows日志_Python取证技术(3): Windows 事件日志分析
Windows的事件日志都存放在 C:WindowsSystem32winevtLogs 目录下.以evtx后缀结尾. 事件日志是在windows上记录重要事件发生的特殊文件,当用户登录系统或者程序报 ...
- python读取mac地址_python - 获取MAC地址
python - 获取MAC地址 我需要一种在运行时确定计算机MAC地址的跨平台方法. 对于Windows,可以使用'wmi'模块,我可以找到Linux下唯一的方法是运行ifconfig并在其输出中运 ...
- python 读取邮件内容_python获取邮件内容(邮件内容为html)
用python获取邮件内容比较简单,直接用现成的imap和pop3包即可,但是有时候邮件的内容不是plainText而是html甚至是一个url链接,原本的操作流程是点击url获取内容(比如csv等等 ...
- python读取图片分辨率_python获取网页中所有图片并筛选指定分辨率的方法
压测时,图片太少,想着下载网页中的图片,然后过滤指定分辨率,但网页中指定分辨率的图片太少了(见下) 后使用格式工厂转换图片 import urllib.request # 导入urllib模块 imp ...
- python读取git日志_使用python分析git log日志示例
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python读取手机文件_python 读取 网络 文件
Python之pandas数据加载.存储 Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 ...
- python读取pdf表格_Python使用Tabula提取PDF表格数据
今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...
最新文章
- 为什么要学习 Markdown?究竟有什么用?
- 33个优秀的 jQuery 图片展示插件分享
- greta一些简单实用的字符串匹配
- 【动态规划】矩阵链相乘 (ssl 1596)/能量项链 (ssl 2006)
- [css] CSS的伪类和伪对象有什么不同?
- Ubantu install jdk
- [图解教程]Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
- 审计MySQL 8.0中的分类数据查询
- python中非法变量名_第10p,Python中变量名的命名规则与引用
- TraceView工具如何使用
- 真鱼游来游去动态壁纸_真鱼动态壁纸
- 宏晶STC单片机使用STC-ISP串口烧录失败的解决方法及实例汇总 (Ver0.99.15)
- OPPO Enco X无线降噪耳机体验评测,加钱变强!
- DS堆栈--迷宫求解(数据结构C语言版)
- 【科技文献检索】CNKI中国知网检索
- 阿凡题——智慧的背囊
- javascript网站期末作品~html电影资讯博客网站模板(HTML+CSS+JavaScript)在线电影网页设计...
- get请求报404 NOT FOUND问题的原因及解决。
- kruskalCase克鲁斯卡尔算法
- htmlunit 示例
热门文章
- hbase 伪分布安装 java_HBase基础和伪分布式安装配置
- enter sleep mode黑屏怎么解决_【linux】 不要再暴力关机了,讲讲我最近遇到的问题和完美解决方案...
- job每分钟执行 oracle_Oracle Job 每个时间点执行示例
- 解压android img文件怎么打开,解压压缩android img文件
- 三行代码生成验证码并转换成base64
- cmd窗口使用python提示“Python not found”,可能是环境变量配置的原因
- mysql配置两个猪数据库_Linux下安装启动多个Mysql
- mysql php ajax_PHP 和 AJAX MySQL 数据库实例
- 许昌学院计算机学院张伶俐,2019年教育科学学院毕业论文答辩工作安排
- matlab启动不了jvm,MATLAB ::在-nojvm启动选项下不再支持此功能