zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Activity的生命周期和启动模式
    网络基础1
    Jersey用户指南学习笔记1
    IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务
    Java并发编程实战笔记—— 并发编程4
    Java并发编程实战笔记—— 并发编程3
    Java并发编程实战笔记—— 并发编程2
    7.2.4
    7.2.4
    7.2.3
  • 原文地址:https://www.cnblogs.com/dannyyao/p/11405432.html
Copyright © 2011-2022 走看看