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:
ColumnTypeidTEXTmessageTEXTsummaryTEXTauthor_nameTEXTauthor_emailTEXTauthor_whenDATETIMEcommitter_nameTEXTcommitter_emailTEXTcommitter_whenDATETIMEparent_idTEXTparent_countINTtree_idTEXTadditionsINTdeletionsINT
files:
ColumnTypecommit_idTEXTtree_idTEXTnameTEXTmodeTEXTtypeTEXTcontentsTEXT
refs:
ColumnTypenameTEXTtypeTEXThashTEXT
对了,这是一个 Go 语言项目。