获取某分支一段时间内代码变化情况

假定需求是分析千行代码bug率,就需要知道代码分支在一段时间内变化情况,然后根据bug数量进行计算。这里记录下获取代码行数变化的命令

        # 首先准备好查询开始时间(东八区)
        start_date = datetime.datetime.now() - datetime.timedelta(days=latest_days)
        epoch = datetime.datetime.utcfromtimestamp(0)
        seconds = (start_date - epoch).total_seconds()
        asc_time = time.asctime(time.localtime(seconds))
        asc_time += " +0800"  # "Fri Feb 28 05:17:03 2020 +0800"

        # 这里省略了切换代码分支并拉取最新代码的命令
        cmd_cd = f'cd {self.code_path}'
        # 这里是获取代码分支上从某个时间点开始的commit记录 倒序
        cmd_rev_list = f'git rev-list -n 30000 --reverse --since="{asc_time}" master'
        rev_list_ret = os.popen(f"{cmd_cd} && {cmd_rev_list}").read()
        # 提取commit id
        commit_id = rev_list_ret.split('\n')[0]
        # 此命令可以获取两个commit之间的代码变化情况
        cmd_diff_stat = f'git diff {commit_id} HEAD --stat'
        lines_info = os.popen(f"{cmd_cd} && {cmd_diff_stat}").read()
        line_info = lines_info.split('\n')[-2:][0]
        print(line_info)
        # 只提取新增代码行(未处理删除、修改)
        return int(re.search(", (\d+) insertions", line_info).groups()[0])

结果截图


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,436评论 0 5
  • 因为游离在梦想之中,所以害怕沉淀,害怕安稳,害怕停滞不前; 因为奔波在平凡之处,所以害怕沉没,害怕失声,害怕默默无...
    老一羊阅读 98评论 0 1
  • 时间过得真快啊,距离上一次写文章已经过去两年了,消失的这段时间里我主要做了两件事:一是谈了一场恋爱,二是从大学毕...
    火星上的卢梭阅读 145评论 0 0
  • 统计180天前的数据
    笑火云天阅读 260评论 0 0
  • 根据第一周和相关连接的提示, 对于作业的4个图表展示如下: 在完成了这一周的任务之后才发现需要学习的还有很多, 看...
    十二_6977阅读 162评论 0 0