gitqlite,又一种颇具创意的 Git 使用方式

大家好,我是小 G。

我们都知道,Git 作为当下最为主流的分布式版本控制系统,已然成为程序员生活中不可或缺的一款开发工具。

在日常开发工作中,我们经常会使用 Git 来完成源码的追踪、回溯、保存、提交等各个操作,而在这一系列操作之下,久而久之,项目便难免会出现较为庞大的代码提交记录、开发分支、程序版本等各种信息。

这个时候,如果你想仅凭某个记忆片段,来查询某个作者在某个时间段所提交的一段具体代码,毫无疑问要耗费不少精力。

如果有这么一种方式,可通过编写数据库查询语句,来快速完成这些信息的检索,那是不是就能方便许多呢?

刚好,不久前就有一支来自国外的技术团队 Augmentable 帮我们完成了这件事情。

他们在 GitHub 上开源了一款工具:gitqlite,通过为 GitHub 项目创建一张虚拟的 SQLite 数据库表,进而达到能直接用数据库查询语句,快速检索 Git 仓库中的内容,其中包括 Git 提交记录、作者名称、邮箱、文件历史记录等内容。

gitqlite,又一种颇具创意的 Git 使用方式

github.com/augmentable-

开发者可根据自己的开发需求编写数据库查询语句,快速从 Git 仓库中提取精准信息。

比方说,你想提取 GitHub 项目中,所有参与代码贡献的作者邮箱,那么只需要编写下面这一行语句:

SELECT DISTINCT author_email FROM commits

如果是想查询某个提交命令上的所有被更改文件,则可用下面这条查询语句:

SELECT * FROM files WHERE commit_id='some_commit_id'

更进一步的,想要查看项目作者在不同星期几的代码提交次数,则可以用下面这段查询语句:

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_email FROM commits GROUP BY author_email ORDER BY commits

类似的组合玩法还有很多,目前看来最为实用的,是你帮你快速完成项目代码的统计与查询工作,当你下次要查询某个日期的代码修改片段时,基本就可以用一行查询语句快速搞定啦。

数据库玩的比较溜的同学,不妨尝试安装一下。

这里再安利一波我们的公众号: GitHub开源项目工具精选,目前坚持每天一篇原创文章,主要分享比较实用或有趣的开发工具与开源项目,偶尔也会聊聊技术圈内最近发生的新鲜事,感兴趣的小伙伴可以关注一下哈。

原文始发于:gitqlite,又一种颇具创意的 Git 使用方式

我还会在以下平台发布内容

GitHub 知乎