一款用 SQL 方式查詢(xún) Git 倉(cāng)庫(kù)的開(kāi)源項(xiàng)目進(jìn)入 GitHub 趨勢(shì)榜
SQL 應(yīng)該是每個(gè)服務(wù)端開(kāi)發(fā)必備的技能,同時(shí) Git 也成為了每個(gè)開(kāi)發(fā)人員的必備工具。今天這個(gè)項(xiàng)目的作者挺有創(chuàng)業(yè),將兩者結(jié)合起來(lái),通過(guò)寫(xiě) SQL 語(yǔ)句來(lái)查詢(xún) Git 倉(cāng)庫(kù)的相關(guān)信息。例如返回當(dāng)前已檢出 branch/commit 的歷史記錄中的所有提交,語(yǔ)句是:SELECT * FROM commits。
項(xiàng)目地址:https://github.com/augmentable-dev/gitqlite,Star 數(shù) 778,進(jìn)入了 GitHub 趨勢(shì)榜。

它通過(guò) SQLite 虛擬表并使用 go-git 來(lái)實(shí)現(xiàn)的。
安裝:
- go install -v -tags=sqlite_vtable github.com/augmentable-dev/gitqlite
你也可以使用 Docker:
- docker build -t gitqlite:latest .
使用示例:
- gitqlite "SELECT * FROM commits"
一個(gè)更復(fù)雜的例子:
- SELECT author_email, count(*) FROM commits GROUP BY author_email ORDER BY count(*) DESC
它返回每個(gè)作者的提交計(jì)數(shù)(電子郵件標(biāo)識(shí)作者)。
相關(guān)提交、文件、refs 對(duì)應(yīng)的表定義如下:
commits:
ColumnTypeidTEXTmessageTEXTsummaryTEXTauthor_nameTEXTauthor_emailTEXTauthor_whenDATETIMEcommitter_nameTEXTcommitter_emailTEXTcommitter_whenDATETIMEparent_idTEXTparent_countINTtree_idTEXTadditionsINTdeletionsINT
files:
ColumnTypecommit_idTEXTtree_idTEXTnameTEXTmodeTEXTtypeTEXTcontentsTEXT
refs:
ColumnTypenameTEXTtypeTEXThashTEXT
對(duì)了,這是一個(gè) Go 語(yǔ)言項(xiàng)目。