zoukankan      html  css  js  c++  java
  • 使用gitbase 分析git 仓库代码

    gitbase 是一个基于golang 开发的开源git 仓库sql 接口查询引擎,基于此工具,我们可以方便的分析git 仓库代码的情况
    而且可以基于源码的分析,还是很强大的

    安装

    直接使用编译的二进制文件即可 https://github.com/src-d/gitbase/releases

    配置

    我使用mac 系统,参考mac 系统的配置添加path 即可

    准备git 代码

    顺便创建几个,或者clone github 开源项目

    使用

    • 启动gitbase
    gitbase server -v -d /path/to/repositories

    启动日志

    DEBU[0000] repository added path=/Users/dalong/mylearning/git-demos/marketOperation-OperationPlatform
    DEBU[0000] repository added path=/Users/dalong/mylearning/git-demos/webhook-gitstats
    DEBU[0000] repository added path=/Users/dalong/mylearning/git-demos/yunpan-docs
    DEBU[0000] repository added path=/Users/dalong/mylearning/git-demos/zeebe-project-es-no-auth
    DEBU[0000] repository added path=/Users/dalong/mylearning/git-demos/zombodb-docker-images
    DEBU[0000] registered database to catalog db=gitbase
    DEBU[0000] registered all available functions in catalog 
    DEBU[0000] created index storage                        
    DEBU[0000] registered pilosa index driver               
    INFO[0000] squash tables rule is enabled                
    INFO[0000] server started and listening on localhost:3306 
    • 连接sql 查询引擎
    mysql -h127.0.0.1 -uroot
    • 生成的数据表

      对于表的详细字段信息,可以参考官方文档

    • 一个简单查询

      统计代码数,以及文件个数,代码来自官方文档,注意官方的有问题,主要是大小写的问题

    SELECT
        LANGUAGE(file_path, blob_content) as lang,
        SUM(JSON_EXTRACT(LOC(file_path, blob_content), '$.code')) as code,
        SUM(JSON_EXTRACT(LOC(file_path, blob_content), '$.comment')) as comments,
        SUM(JSON_EXTRACT(LOC(file_path, blob_content), '$.blank')) as blanks,
        COUNT(1) as files
    FROM commit_files
    NATURAL JOIN refs
    NATURAL JOIN blobs
    WHERE ref_name='HEAD'
    GROUP BY lang;

    结果

    说明

    以上只是简单使用,使用的是已经内置了处理函数,详细的可以参考官方文档,实际上,社区中有人集成了
    graphql 还是很强大的,同时我们集成sqler 直接进行restapi 的生成也是很不错的,
    我们可以直接使用cube.js 方便的生成查询统计表报,这样就很强大了,因为毕竟是需要处理git 查询的,所以
    对于仓库数量比较多,代码行数也比较多的,肯定会有点慢,可以基于增量,或者webhook 按需处理,同时官方
    也提供了一个创建索引,以及优化的方案,详细的可以参考官方文档

    参考资料

    https://github.com/src-d/gitbase
    https://docs.sourced.tech/gitbase

  • 相关阅读:
    Linux_文件系统、磁盘分区_RHEL7
    Linux_LVM、RAID_RHEL7
    Linux_LVM、RAID_RHEL7
    Linux_系统时间管理
    简单聊聊HDFS RBF第二阶段工作近期的一些进展
    LinkedBlockingQueue和ArrayBlockingQueue之间的比较
    LinkedBlockingQueue和ArrayBlockingQueue之间的比较
    公司如何使用开源软件
    公司如何使用开源软件
    ListenableFuture和CompletableFuture简单小结
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10850674.html
Copyright © 2011-2022 走看看