当前位置:   article > 正文

git查询当前目录下的文件列表_Gitqlite - 用SQL语法来查询Git仓库

git 查看文件下所有文件名

当我们需要对一个本地的Git仓库进行查询和管理时,往往要使用 git 工具提供的接口,比较麻烦。能不能像查询数据库那样,把一个Git仓库看作一个数据库,使用方便又强大的SQL语法来进行查询呢?Gitqlite,这个使用 Go 语言编写的命令行工具,就能满足你的需求。

175cc70bb3497fc46f458c738621f786.png

Git

简介

Gitqlite,是 augmentable-dev 团队在 Github 上开源的使用SQL语法查询Git仓库的命令行工具,项目代码位于 https://github.com/augmentable-dev/gitqlite,目前版本为 0.0.1。Gitqlite 实现了使用 SQL 的 SELECT 语句,对本地 Git 仓库的 commit 和文件进行查询,可以方便实现对于 Git 仓库的数据统计,是个颇为有趣的命令行工具。

7ba6690050b5702e1e99853535951a45.png

GIT

安装

Gitqlite 使用 Go 语言编写,依赖于 Git 管理库 go-git,在有 Go 语言的环境下可以拉取安装:

gitqlite -h

安装会在把程序安装到 $GOBIN。也可以使用Docker进行安装:

gitqlite "SELECT * FROM commits"

示例

Gitqlite 是一个命令行工具,使用用法和帮助可以输入命令

gitqlite -h

Gitqlite 主要的输入参数就是进行查询的 SQL 语句,我们来看一个基本的例子:

gitqlite "SELECT * FROM commits"

该命令会从当前目录的 Git 仓库中,查询所有提交(commit)的所有字段并输出。我们可以使用 repo 参数来制定其他路径的 Git 仓库,甚至可以使用远程仓库的 HTTP 或 SSH 地址。

目前,gitqlite 主要定义了三个虚拟数据表:

  • commits,包含了仓库所有代码提交的信息。commits 的列包括消息、作者、提交者、增删行数等信息;
  • files,包含了仓库中所有文件的信息,包括名称、模式、类型等;
  • refs,commit的引用,包括类型、哈希等。

Gitqlite 的查询实现了SELECT语句的许多功能,我们来看一些使用例子:

  • 列出所有提交者的邮件列表
SELECT DISTINCT author_email FROM commits
  • 统计各作者(按邮件)的提交数并排序
SELECT author_email, count(*) FROM commits GROUP BY author_email ORDER BY count(*) DESC
  • 列出某次提交的所有文件
SELECT * FROM files WHERE commit_id='some_commit_id'
  • 列出作者邮件,以及各自的新增代码、删除代码和提交数,并排序
SELECT count(*) AS commits, SUM(additions) AS additions, SUM(deletions) AS  deletions, author_emailFROM commits GROUP BY author_email ORDER BY commits
  • 列出所有作者在一周中不同时间的提交数
SELECT    count(*) AS commits,    count(case when strftime('%w',author_when)='0' then 1 end) as sunday,    count(case when strftime('%w',author_when)='1' then 1 end) as monday,    count(case when strftime('%w',author_when)='2' then 1 end) as tuesday,    count(case when strftime('%w',author_when)='3' then 1 end) as wednesday,    count(case when strftime('%w',author_when)='4' then 1 end) as thursday,    count(case when strftime('%w',author_when)='5' then 1 end) as friday,    count(case when strftime('%w',author_when)='6' then 1 end) as saturday,    author_emailFROM commits GROUP BY author_email ORDER BY commits
355eb7635dee881aaad0250080710c47.png

SQL

总结

Gitqlite 创新地把 SQL 和 Git 结合在一起,以 SQL 查询语法对 Git 仓库进行查询,提供了对于 Git仓库方便而又强大的查询统计工具。

Gitqlite 利用了 go-sqlite3 进行 SQL 语句的处理,使用了 go-git 进行 Git 仓库的查询,并实现了两者之间的转换,和命令行工具,是一个值得阅读的 Go 语言命令行工具库。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/120165?site
推荐阅读
相关标签
  

闽ICP备14008679号