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

 
 
 
 

最新文章

  1. Jquery获取select选中的文本与值
  2. cf126b(kmp好题)
  3. angular遇到问题
  4. javase基础复习攻略《一》
  5. HDU 4063 Aircraft(计算几何)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
  6. hdu 2070
  7. Oracle的回收站和闪回查询机制(一)
  8. A Tour of Go If and else
  9. CSU 1160 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示
  10. java 重载与重写 【转】
  11. redis的sort命令
  12. 使用ML.NET + Azure DevOps + Azure Container Instances打造机器学习生产化
  13. [POJ2054]Color a Tree (并查集+贪心)
  14. python全栈开发 * 12 知识点汇总 * 180530
  15. 【Eclipse】添加builder实现NDK的自动编译
  16. mongo java 踩坑记
  17. java web 使用maven打包绕过单元测试
  18. 漏洞评估工具Nexpose的配置使用
  19. centos6.8下pptp客户端的安装配置
  20. MySQL锁(行锁、表锁、页锁、乐观锁、悲观锁等)

热门文章

  1. Python入门 .变量 常量 基础数据类型 用户输入 流程控制语句 小练习题
  2. git 学习笔记 --从远程库克隆
  3. ArcGIS Engine中C#开发不能引用ESRI.ArcGIS.AxControls问题
  4. c#中关于Convert.ToDouble的一个注意事项
  5. angular复习笔记4-模板
  6. [转]Go语言string,int,int64 ,float之间类型转换方法
  7. centos7#yum install ffmpeg
  8. Lipo移除ORC架构
  9. Java GC的工作原理详解
  10. 【夯实基础】- Java中的fail-fast机制