python-gitlab 統計代碼行數


需求:根據時間段,統計各個研發提交的代碼行

實現邏輯:調用原生gitlab接口太復雜,引用python-gitlab 獲取commit詳情,然后進行統計

===============================================

簡單代碼

import gitlab

client = gitlab.Gitlab('http://xxxxxx:8080/', private_token='ziKtexMN5Zfj37qRGLsW', timeout=5, api_version='4')
client.auth()
project = client.projects.list()
for pro in project:
    print(pro)
    commits = pro.commits.list(since='2019-08-11T00:00:00Z', ref_name='dev')
    for c in commits:
        print(pro.commits.get(c.id))

返回結果:

 

python-gitlab api 文檔:https://python-gitlab.readthedocs.io/en/stable/gl_objects/commits.html

 

------------------2019.10.08 補充 踩坑---------------------

一、commit數量不對

如果不帶all=True,每個項目最多返回20個commit;沒注意看文檔,踩了坑;

如果想返回某個時間段的全部commit,應該如是寫:

commits = pro.commits.list(all=True, query_parameters={'since': '2019-09-01T00:00:00Z', 'ref_name': 'dev'})

 二、merge導致重復統計

merge會自動生成一條commit,導致重復統計。接口好像沒有參數可以過濾,此處通過message來排除

        for com in commits:
            c = pro.commits.get(com.id)
            if ('Merge' in c.message) and ('into dev' in c.message):
                print('跳過merge產生的commit:{},{}'.format(c.short_id, c.message))
            else:
                # print('正常commit:{},{}'.format(c.short_id, c.message))

 -------------- 2019年12月2日 踩坑--------------------

三、test 分支 commit數量明顯少很多

原因:增量拉取,只拉取昨天的commits;如果是merge N天的commits,那就會漏掉N-1天的數據

解決辦法:增量拉取前60天的commits


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM