引言
- 有时需要统计团队人员向Gerrit库中提交代码的情况、某段时间某个库的修改情况、某个文件的修改情况等,此时,需要对gerrit库的入库情况进行检索,分析并统计。实际的操作方式比较多,本文将对具体的方式做一整理。
gerrit方式
gerrit网页客户端上的search bar
- 对应下图中的Search term位置,里面填上搜索条件就可以列出所有满足条件的结果;
ssh命令行方式
- 有一组在命令行用的命令,是透过ssh方式来访问的,譬如
ssh -p 29418 username@host gerrit --help
可以看到具体的子命令;
- 其中有个子命令是query,和第一种方式差不多,但可以将查询结果以txt或者json的格式导出,比如下面命令,可以查询在2022-10-01到2022-11-01之间一个月,提交到以TEST_为开头的所有项目有效(merged)提交信息:
ssh -p 29418 qxhgd@gerrit.XXX.com gerrit query --format=JSON --current-patch-set status:merged branch:master projects:TEST_ before:2022-11-01 after:2022-10-01
RESTful API
- gerrit提供了很多RESTful API,这个方法是最全面最强大也最复杂的,具体的api可以参考documentation。
- 一个例子:
Request如下:
GET /changes/myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940 HTTP/1.0
对应Response如下:
HTTP/1.1 200 OK Content-Disposition: attachment Content-Type: application/json; charset=UTF-8 )]}' { "id": "myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940", "project": "myProject", "branch": "master", "change_id": "I8473b95934b5732ac55d26311a706c9c2bde9940", "subject": "Implementing Feature X", "status": "NEW", "created": "2013-02-01 09:59:32.126000000", "updated": "2013-02-21 11:16:36.775000000", "mergeable": true, "insertions": 34, "deletions": 101, "_number": 3965, "owner": { "name": "John Doe" } }
- 此种方式配合编程语言之后,功能非常强大,如可使用python的pygerrit2库来操作上述api。
git方式
gitlog命令
- 下面命令,可以查询qxhgd自2022年11月1日开始提交commit的次数:
git log --author=qxhgd--since="2022-11-01" --no-merges | grep -e 'commit [a-zA-Z0-9]*' | wc -l;
gitstats工具
当前gitstats所生成统计信息常用分为如下几类:
- 常规的统计: 文件总数,行数,提交量,作者数。
- 活跃性: 每天中每小时的、每周中每天的、每周中每小时的、每年中每月的、每年的提交量。
- 作者数: 列举所有的作者(提交数,第一次提交日期,最近一次的提交日期),并按月和年来划分。
- 文件数:按日期划分,按扩展名名划分。
- 行数: 按日期划分。
界面工具
- git的GUI界面工具很多,常见的如TortoiseGit和Sourcetree等;
TortoiseGit
- TortoiseGit是一款开源的git的版本控制系统,也叫海龟git,其提供了人性化的图形化界面,不用像Git一样输入许多语句,在其界面上可以根据需要检索相关信息:
Sourcetree
它是由Atlassian开发的免费Git图形界面工具,可以操作任何Git库,对git的操作也比较友好。