使用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
使用gitbase 分析git 仓库代码的更多相关文章
- 使用gitstats分析git 仓库代码
gitstats 是一个很不错的git 代码提交分析工具,可以帮助我们生成图表统计结果 工具文档信息 gitstats http://gitstats.sourceforge.net/ 安装 使用ce ...
- cube.js 学习(十一)cube + gitbase 分析git 代码
这个是一个简单的demo,使用gitbase+cube 分析git 仓库代码 需求 我们平时使用的gitlab,或者gogs 等git 仓库管理工具,有自己的管理强项,但是对于分析上可能就不是那么强大 ...
- Jenkins(3)拉取git仓库代码,执行python自动化脚本
前言 python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了 新建项目 打开Jenkins新建一个自由风格的项目 源码管理 Repository ...
- 使用git_stats 统计分析git 仓库代码&& 集成webhook
前几天写过一个使用gitstats 统计分析代码的,但是那个因为开发的问题,对于直接和容器集成是有问题的,统计需要进入容器执行 命令,对于自动构建的还不是很方便,所以使用了git_stats 项目 ...
- windows调起git bash执行sh脚本定时统计git仓库代码量
本来挺简单的一个东西硬是弄了两天 心力交瘁 找了网上不少资料 整理一下发给大家 首先是统计每个人的代码量的git命令 在网上找的 我这里做了以下修改 git log --format='%aN'|so ...
- Linux(Ubuntu16.04)+GitLab8.17deb安装包搭建Git仓库(代码管理系统)
1 下载GitLab安装包 2 执行安装命令 3 验证是否安装和启动成功 4 修改管理员密码 5 其它说明 5.1修改访问URL 5.2修改邮件配置 5.3修改web端口 1下载GitLab安装包 ...
- 关于.ssh出错,无法从远程git仓库拉代码
背景:从windows开发环境改到ubuntu,将windows下生成的.ssh文件拷贝到ubuntu下,以clone远程git仓库代码 错误:sign_and_send_pubkey: signin ...
- Git中如何利用生成SSH个人公钥访问git仓库
Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...
- 如何把本地git仓库托管到码云上
提交代码到本地git仓库 git init git status git add . git status git commit -m "init my project" ...
随机推荐
- delphi xe10 FMX 启动参数
关于 Delphi Xe10 FMX 启动参数 需要在启动窗口前来调用 也就是在bar文件修改 如果参数多可以用json来 uses system.SysUtils; var param: stri ...
- Codeforces Round #499 (Div. 1) F. Tree
Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...
- 用python读取word文件里的表格信息【华为云技术分享】
在企查查查询企业信息的时候,得到了一些word文件,里面有些控股企业的数据放在表格里,需要我们将其提取出来. word文件看起来很复杂,不方便进行结构化.实际上,一个word文档中大概有这么几种类型的 ...
- Redis运维利器 -- RedisManager
Redis作为一个基于内存的可持久化的日志型.Key-Value数据库,以其出色的性能表现以及高可用性在许多公司有着举足轻重的地位.伴随着业务量的增长,redis集群的规模不可避免的需要扩大,此时re ...
- 如何大幅提高百度云文件的下载速度?油猴+user-agent-switcher+PanDownload使用教程
最近尝试了提高百度云下载速度的方法,最后效果还不错,提供给大家参考.效果如图: 第一步:下载油猴插件 (截图来自word文档,所以是反的^_^||) 第二步:在油猴中添加新插件 搜索百度网盘 添加插 ...
- JS中的if语句内如何加or使多个条件通过
if(a==1&&b==2){ //do something }//条件是a等于1 并且 b等于2时才能成立,两个条件必须同时满足 if(a==1||b==2){ //do som ...
- Java操作JSON数据(1)--JSON-lib操作JSON数据
JSON-lib是一个java库,用于将bean.映射.集合.java数组和XML转换为JSON,或将JSON转为beans和DynaBeans.JSON-lib最后的版本是2.4,更新时间是2010 ...
- FI-FBV0 - No batch input data for screen SAPMF05A 0700
在预制凭证过账的时候报错:没有屏幕SAPMF05A 0700 的批输入数据 https://answers.sap.com/questions/7203025/fbv0-no-batch-input- ...
- idea中log4j的简单使用
首先,我们需要建立一个 maven 项目 (如果你没有配置maven 请参考https://www.cnblogs.com/PerZhu/p/10714077.html配置) 接下来开始配置 pom. ...
- C++的struct可以使用template
C++里面的struct是可以使用template的,然而http://c.biancheng.net/view/2235.html这里竟然说不能用.辣鸡啊. #include <stdio.h ...