香!一款用 SQL 方式查询 Git 仓库的开源项目进入 GitHub 趋势榜

大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目!

SQL 应该是每个服务端开发必备的技能,同时 Git 也成为了每个开发人员的必备工具。今天这个项目的作者挺有创业,将两者结合起来,通过写 SQL 语句来查询 Git 仓库的相关信息。例如返回当前已检出 branch/commit 的历史记录中的所有提交,语句是: SELECT * FROM commits

项目地址:https://github.com/augmentable-dev/gitqlite,Star 数 778,进入了 GitHub 趋势榜。

它通过 SQLite 虚拟表并使用 go-git 来实现的。

安装:

go install -v -tags=sqlite_vtable github.com/augmentable-dev/gitqlite

你也可以使用 Docker:

docker build -t gitqlite:latest .

使用示例:

gitqlite "SELECT * FROM commits"

一个更复杂的例子:

SELECT author_email, count(*) FROM commits GROUP BY author_email ORDER BY count(*) DESC

它返回每个作者的提交计数(电子邮件标识作者)。

相关提交、文件、refs 对应的表定义如下:

commits:

Column Type
id TEXT
message TEXT
summary TEXT
author_name TEXT
author_email TEXT
author_when DATETIME
committer_name TEXT
committer_email TEXT
committer_when DATETIME
parent_id TEXT
parent_count INT
tree_id TEXT
additions INT
deletions INT

files:

Column Type
commit_id TEXT
tree_id TEXT
name TEXT
mode TEXT
type TEXT
contents TEXT

refs:

Column Type
name TEXT
type TEXT
hash TEXT