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提交历史!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ug冲模标准件库_昆山兴模lt;携手gt
- 下一篇: 百叶窗设计原理 html5,Html5百