背景

最近工作上遇到了一个需求,就是需要统计组内人员的Gerrit的提交情况, 找到了下面三种可以尝试的方案。

  • git 自带的命令查询,例如git log --author=yourname --since="2019-09-01" --no-merges | grep -e 'commit [a-zA-Z0-9]*' | wc -l
  • gitstat 工具, 需要下载安装使用,可以自动生成表格
  • gerrit query 命令

然后大致一一查看了用法,对于我这种情况,发现第三种方法使用更加方便快捷。

介绍

1. gerrit query官方文档:
  • gerrit query
  • search-operators
2. 命令方法
ssh -p <port> <host> gerrit query  [--format {TEXT | JSON}]  [--current-patch-set]  [--patch-sets | --all-approvals]  [--files]  [--comments]  [--commit-message]  [--dependencies]  [--submit-records]  [--all-reviewers]  [--start <n> | -S <n>]  [--no-limit]  [--]  <query>  [limit:<n>]

<port> : 是指gerrit服务器的端口, 一般29418
<host>: 是指gerrit服务器的地址, 一般username@gerrit.XXX.com, 或者gerrit.XXX.com

3. 举例说明

查询在2019-01-01到2019-02-01之间一个月,提交到以TEST_为开头的所有项目有效(merged)提交信息。

"ssh -p 29418 username@gerrit.XXX.com gerrit query --format=JSON --current-patch-set status:merged branch:master projects:TEST_ before:2019-02-01 after:2019-01-01"

--format=JSON : 返回的信息是json 格式, 也可以是TEXT格式
--current-patch-set : 写了这个才会返回具体的patch信息
status:merged : gerrit ticket的状态, merged, open,abandon
branch:master : 查询哪个分支
projects:TEST_ : 以TEST_为开头的所有项目
project:fix_error : 查询fix_error该项目
before - after :查询时间范围

需要什么功能,可以去上面的文档中查到对应的参数,然后组成相应的命令,就可以查询到你想要的信息了。