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 仓库代码的更多相关文章

  1. 使用gitstats分析git 仓库代码

    gitstats 是一个很不错的git 代码提交分析工具,可以帮助我们生成图表统计结果 工具文档信息 gitstats http://gitstats.sourceforge.net/ 安装 使用ce ...

  2. cube.js 学习(十一)cube + gitbase 分析git 代码

    这个是一个简单的demo,使用gitbase+cube 分析git 仓库代码 需求 我们平时使用的gitlab,或者gogs 等git 仓库管理工具,有自己的管理强项,但是对于分析上可能就不是那么强大 ...

  3. Jenkins(3)拉取git仓库代码,执行python自动化脚本

    前言 python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了 新建项目 打开Jenkins新建一个自由风格的项目 源码管理 Repository ...

  4. 使用git_stats 统计分析git 仓库代码&& 集成webhook

      前几天写过一个使用gitstats 统计分析代码的,但是那个因为开发的问题,对于直接和容器集成是有问题的,统计需要进入容器执行 命令,对于自动构建的还不是很方便,所以使用了git_stats 项目 ...

  5. windows调起git bash执行sh脚本定时统计git仓库代码量

    本来挺简单的一个东西硬是弄了两天 心力交瘁 找了网上不少资料 整理一下发给大家 首先是统计每个人的代码量的git命令 在网上找的 我这里做了以下修改 git log --format='%aN'|so ...

  6. Linux(Ubuntu16.04)+GitLab8.17deb安装包搭建Git仓库(代码管理系统)

    1 下载GitLab安装包 2  执行安装命令 3 验证是否安装和启动成功 4 修改管理员密码 5 其它说明 5.1修改访问URL 5.2修改邮件配置 5.3修改web端口 1下载GitLab安装包 ...

  7. 关于.ssh出错,无法从远程git仓库拉代码

    背景:从windows开发环境改到ubuntu,将windows下生成的.ssh文件拷贝到ubuntu下,以clone远程git仓库代码 错误:sign_and_send_pubkey: signin ...

  8. Git中如何利用生成SSH个人公钥访问git仓库

    Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...

  9. 如何把本地git仓库托管到码云上

    提交代码到本地git仓库 git init git status git add . git status git commit -m "init my project"     ...

随机推荐

  1. 用C#做一个 拉流播放器

    做拉流播放器第一个想到就是,.,..FFmpeg没错 我也是用强大的他它来做的.但是我用的不是  cmd 调用 而是用的强大的FFmpeg.AutoGen FFmpeg.AutoGen 这个是C# 一 ...

  2. java之spring mvc之页面跳转

    1. 如果返回值为ModelAndView,在处理方法中,返回null时,默认跳转的视图名称为请求名.跳转结果会根据视图解析器来跳转. @RequestMapping("/hello.do& ...

  3. np.minimum()与tf.minimum()的用法

    总结:二者用法一致.a=np.array([[[[10,8,3,9],[5,6,7,8]]],[[[1,2,3,4],[5,6,7,8]]],[[[1,2,3,4],[5,6,7,8]]]] )pri ...

  4. Java之路---Day03

    2019-10-17-21:18:33 方法 定义格式: public static void 方法名称() { 方法体 } 完整格式: 修饰符  返回值类型  方法名称(参数类型  参数名称,... ...

  5. 一个简单实现的string类

    为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 和 CentOS Linux release 7.6.1810 (Core) 开发工具 ...

  6. pandas-14 concatenate和combine_first的用法

    pandas-14 concatenate和combine_first的用法 concatenate主要作用是拼接series和dataframe的数据. combine_first可以做来填充数据. ...

  7. 【转载】C#中List集合使用AddRange方法将一个集合加入到指定集合末尾

    C#编程开发过程中,List集合是时常使用到的集合对象,如果在List集合的操作中需要将1个List集合加入到另一个List集合的末尾,则可以使用List集合的AddRange方法来实现,AddRan ...

  8. 使用vue-router在页面之间传值及接收值

    第一页 点击去第二页的时候进行传值直接贴代码看: <template> <div id="app"> <div><router-link ...

  9. leetcode 学习心得 (1) (24~300)

    源代码地址:https://github.com/hopebo/hopelee 语言:C++ 24.Swap Nodes in Pairs Given a linked list, swap ever ...

  10. linux上SVN出现 "Unable to connect to a repository at URL 'svn://xx.xx.xx.xx/xxx' 和 No repository ...

    centos上安装了svn, 有时候会不知道什么原因出现客户端小乌龟无法连接或无法提交等情况. 1. 万能重启,xshell连接服务器,输入 service svnserve restart 命令. ...