使用SQL查询Git存储库

2020-07-04 22:17:03

Gitqlite是一个用于在Git存储库上运行SQL查询的工具。它实现SQLite虚拟表并使用Go-Git。它用于通过公共接口(SQL)临时查询磁盘上的Git存储库,作为将各种shell命令拼凑在一起的替代方案。

将输出您的CLI版本的最新用法说明。通常,第一个参数是SQL查询字符串:

默认情况下,您的当前工作目录将用作要查询的git存储库的路径。使用--repo标志指定替代路径,甚至指定远程存储库引用(http(S)或ssh)。在执行查询之前,Gitqlite会将远程存储库克隆到临时目录。

默认情况下,输出将是ASCII表。使用--format json或--format csv可供选择。有关所有选项,请参阅-h。

与git日志类似,COMMITS表包括当前签出的COMMIT历史记录中的所有COMMIT。

文件表迭代提交历史记录中的所有文件,默认情况下从存储库中签出的文件开始。完整的表是提交历史记录的每个树中的每个文件。使用Commit_id列可以筛选属于特定提交的工作树的文件。

这将返回回购的当前检出分支/提交的历史记录中的所有提交。

SELECT AUTHER_EMAIL,COUNT(*)FROM COMMITS WHERE PARENT_COUNT<;2 GROUP BY AUTHER_EMA。

这是一个代价高昂的查询,它将迭代当前历史中每个提交的每个树中的每个文件:

返回已添加/删除行的作者电子邮件,按历史记录中的提交总数排序:

选择COUNT(*)作为提交、SUM(添加)作为添加、SUM(删除)作为删除、AUTHER_EMAIL FROM COMMITS GROUP BY AUTHER_EMAIL ORDER BY COMMITS。

选择COUNT(*)作为提交,COUNT(Case When strftime(';%w';,Author_When)=';0';THEN 1 END)作为星期天,COUNT(Case When When strftime(';%w';,Author_When)=';1';THEN 1 END)作为星期一,COUNT(Case When When strftime(';%w';,Author_When)=';2'。然后1结束)作为星期二,计数(当strftime(';%w';,Author_When)=';3';然后1 End)作为星期三,计数(当strftime(';%w';,Author_When)=';4';然后1结束)作为星期四,计数(当strftime(';%w';,Author_When)=';5';时,计数(当strftime(';%w';,Author_When)=';5';然后1个结束)作为星期五,计数(当strftime(';%w';,Author_When)=';6';然后1个结束)作为星期六,Author_Email from Comments Group by Author_Email ORDER BY COMMITS