gerrit工具介绍

Gerrit的gerrit query命令就是要查询Gerrit的changes数据库。

默认,查询结果是根据changes的更新时间,由近及远排序。

对于有多个patch set的change,默认查询结果只包含最后的patch set。

如果查询结果有很大,则默认只返回有限个查询结果,可以设置limit:参数指定查询结果包含的changes数量。

1. gerrit query命令用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
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>]
<query>
[limit:<n>]

常见选项说明:

  • –format=TEXT,默认
  • –format=JSON
  • –current-patch-set,给出当前patch set的信息
  • –patch-sets,给出所有patch set的信息
  • –commit-message,给出change的完整commit message
  • –all-reviewers,给出所有reviewer的name和email <query>说明:
  • status:open等价于status:pending, is:open, is:pending
  • owner:self等价于is:owner
  • reviewer:self等价于is:reviewer
  • project:bbauto/bba或p:bbauto/bba
  • projects:bb
  • branch:develop或branch:refs/heads/develop
  • change:2311176或change:I03369813660369e983b56dcabe4cb48839be4de0
  • commit:4e8ea8d43ab22273e4949348e1e7316f88cd54e3
  • ref:refs/changes/76/2311176/1
  • message:my_commit_message
  • is:visible
  • label:Code-Review=2或label:Code-Review=+2或label:Code-Review+2
  • label:Verified+1 补充:
  • 属性值除了bare words (数字、大小写字母和@-_.)之外,必须使用””或{}包含
  • 多个属性之间默认为and关系,还有or关系,或者取反not/-

查询Gerrit指定状态的patch set,并保存到文件。采用分段查看首先查看最近500条的,再查看最近500-1000条的。

alias gerrit="ssh -p 29418 gerrit.yourdomain.com gerrit" gerrit review <id> --abandon 放弃某个commit(id是commit id不是change id)

ssh -p 29418 192.168.1.127 gerrit review --submit a6b548272aa754857b4 提交某个commit 循环放弃脚本:

1
2
3
4
5
6
7
8
9
#!/bin/bash
alias gerrit="ssh -p 29418 gerrit.lianjia.com gerrit"

for c in $(gerrit query project:mars --start 500 --current-patch-set| grep "revision");do
if [ $c != 'revision:' ];then
gerrit review $c --abandon;
echo $c
fi
done

2.参考文献:

https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.7/cmd-query.html https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.7/json.html https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.7/user-search.html

3.gerrit 不经代码审核直接push进库的方法

需求:

gerrit 代码审核将代码入库权限收起,可以有效控制代码质量.

但同时弊端也是明显的: 对于频繁改动的项目(比如新项目),每段代码都审核会明显拖慢工作效率.

这时可以给某个组配置不经审核直接push权限.

方法:

管理员账号,到 projects -> access 页面下配置 reference 权限. 其他 reference 的权限配置依旧, 给如下 reference 增加权限: refs/for/refs/heads/master 配置 submit 权限给某个具体的组即可.

该组用户需要忽略审核时,执行如下命令: git push origin HEAD:refs/for/master%submit 就是在原有 push 命令基础上加上 %submit 这个后缀即可.

坚持原创技术分享,您的支持将鼓励我继续创作!