Gerrit控制台命令
一、概述
1、查看所有控制台命令:
$ ssh -p 29418 admin@127.0.0.0 gerrit --help (使用自己的gerrit地址IP)
2、控制台命令列表:
(共31项:以下命令都可以通过“gerrit COMMAND --help”获取更详细的说明):
apropos ban-commit close-connection create-account create-branch create-group create-project
flush-caches gc gsql logging ls-groups ls-members ls-projects ls-user-refs plugin query
receive-pack rename-group review set-account set-members set-project set-project-parent
set-reviewers show-caches show-connections show-queue stream-events test-submit version
(标蓝的为个人觉得较实用的命令)
二、详细介绍
不同版本的gerrit内置命令的具体使用格式有所区别,应按照当前版本适用的格式来; 以下适用的版本为:2.11.1(可通过gerrit version查看)
( 注意: 以下所有命令参数中,若包含有空格的内容应使用单引号(')引起来,例如: --full-name "'A description string'" )
1、apropos
(1)说明: 查询文档索引,并返回带有匹配文档标题和URL的结果(关键字为命令后面跟的参数);
(2)使用: gerrit apropos <要搜索的关键字(必填)>
(3)举例:
$ ssh -p 29418 admin@127.0.0.0 gerrit apropos ls-members (如下图,返回所有关键字相关的帮助文档链接:(从上到下相关性依次减弱))
2、ban-commit
(1)说明:
禁止基于某个指定项目仓库的某次指定提交;
注意:
A.若某个提交被标记为禁止,则gerrit的包含该提交的每次推送都会被拒绝;
B.该命令只是将提交标记为禁止,但不会从任何中央分支的历史记录中删除提交; 报错提示: gerrit推送时若提示“包含被禁止的提交(contains banned commit)”错误消息时,通常是因为本次推送包含被禁止的提交或将在被禁止的祖先中合并的提交。 如果一个提交被确认为错误的提交(例如,因为它包含违反知识产权的编码),并且因此将其从中央git存储库中删除,则可以将其标记为禁止。然后,Gerrit将拒绝每次提交,并显示错误消息“包含被禁止的提交……”,以防止该提交再次进入存储库。 如果有基于被禁止的提交的、要推送的提交,则可以将其git cherry-pick到干净的基点并再次推送。
(2)使用:gerrit ban-commit PROJECT COMMIT [--] [--reason (-r) REASON]
PROJECT:必填,指定被禁止提交的项目名称; COMMIT:必填,指定被禁止的提交; --:选填,选项结束标识;
--reason (-r) REASON:选填,禁止提交的原因;
(3)举例:
禁止向myproject项目推送包含commit-id为42191...的提交:
$ ssh -p 29418 admin@127.0.0.0 gerrit ban-commit myproject 421919d015c062fd28901fe144a78a555d0b5984
3、close-connection
(1)说明: 关闭与指定ID的SSH连接; 注意:如果找不到与指定会话ID的连接,则返回一条错误信息;
(2)使用:gerrit close-connection SESSION_ID ... [--] [--wait]
SESSION_ID:必填,要关闭连接的SSH会话ID,可以指定多个; --:选项结束标识符;
--wait:在退出之前等待连接关闭(因为默认关闭连接是异步进行的)
(3)举例:
$ ssh -p 29418 admin@127.0.0.0 gerrit close-connection SESSION_ID --wait
4、create-account
(1)说明:
创建一个新的仅供内部使用的用户帐户;
注意: 如果创建的帐户没有电子邮件地址,则只能用于批处理/角色访问,例如通过自动构建系统或通过Gerrit流事件进行事件监视;但是请注意,在这种情况下,该帐户不会隐式添加到“非交互式用户”组中,必须使用--group选项明确添加到组中。 如果使用LDAP身份验证,则以此新建的用户帐户并不会检查LDAP目录。因此,可以在Gerrit中创建基础LDAP目录中不存在的用户。
(2)使用: gerrit create-account USERNAME [--] [--email EMAIL] [--full-name NAME] [--group (-g) GROUP] [--http-password PASSWORD] [--ssh-key -|KEY]
USERNAME:必填,要创建的用户名; --email EMAIL:选填,用户的电子邮箱;
--full-name NAME:选填,用户的显示名称;--group (-g) GROUP:选填,添加用户到对应的组(可以指定多个组)
--http-password PASSWOR:选填,用户的http密码; --ssh-key -|KEY:选填,SSH公钥(可以从stdin读取)
(3)举例:
创建一个名为watcher的批处理用户,获取其ssh公钥,并将其添加到Non-Interactive Users组中:
$ cat ~/.ssh/id_watcher.pub | ssh -p 29418 admin@127.0.0.0 gerrit create-account --group "'Non-Interactive Users'" --ssh-key - watcher
5、create-branch
(1)说明: 在指定项目仓库中,基于指定版本,创建一条新分支;
(2)使用: gerrit create-branch PROJECT NAME REVISION [--]
PROJECT:必填,需要新建分支的项目名; NAME:必填,需要新建的分支名;
REVISION:必填,新建分支要基于的版本名; --:选填,选项结束标识符
(3)举例:
在myproject项目中基于master分支新建一条newbranch分支:
$ ssh -p 29418 admin@127.0.0.0 gerrit create-branch myproject newbranch master
6、create-group
(1)说明: 创建一个新组;
(2)使用: gerrit create-group GROUP [--] [--description (-d) DESC] [--group (-g) GROUP] [--member (-m) USERNAME] [--owner (-o) GROUP] [--visible-to-all]
GROUP:必填,要创建的组名; --description (-d) DESC:选填,关于组的描述
--group (-g) GROUP:选填,初始设置需要被包含在新建组中的子组;
--member (-m) USERNAME:选填,初始设置需要被添加在新建组中的成员(跟gerrit网页不同的是,创建此组的用户并不会被默认添加到组中,需要额外使用--member选项);
--owner (-o) GROUP:选填,指定新建组的属组; --visible-to-all:选填,设置新建组是否对所有注册用户可见;
(3)举例:
创建一个属于Foo-admin组的新组Foo,给组添加描述“Foo description”,并指定成员developer1和developer2
$ ssh -p 29418 admin@127.0.0.0 gerrit create-group --owner Foo-admin --member developer1 --member developer2 --description "'Foo description'" Foo
7、create-project
(1)说明:
用指定项目名在gerrit.basePath路径下创建一个git裸仓库;
新创建的仓库是空的(无任何提交),但是其在gerrit数据库中为已注册的状态,因此初始提交可以上传审核,或者初始变更直接推送到远程;
(2)使用:
gerrit create-project [NAME ...] [--] [--branch (-b) BRANCH] [--change-id [TRUE | FALSE | INHERIT]] [--content-merge [TRUE | FALSE | INHERIT]][--contributor-agreements [TRUE | FALSE | INHERIT]] [--create-new-change-for-all-not-in-target (--ncfa)] [--description (-d) DESCRIPTION] [--empty-commit][--max-object-size-limit VAL] [--name (-n) NAME] [--new-change-for-all-not-in-target [TRUE | FALSE | INHERIT]] [--owner (-o) GROUP] [--parent (-p) NAME][--permissions-only] [--plugin-config VAL] [--require-change-id (--id)] [--signed-off-by [TRUE | FALSE | INHERIT]] [--submit-type (-t) [FAST_FORWARD_ONLY |MERGE_IF_NECESSARY |REBASE_IF_NECESSARY | MERGE_ALWAYS | CHERRY_PICK]] [--suggest-parents (-S)] [--use-content-merge][--use-contributor-agreements (--ca)] [--use-signed-off-by (--so)]
NAME:必填,需要被创建的项目名称(如果该名称以.git结尾,则创建时自动移除后缀);
--branch (-b) BRANCH:选填,指定新建项目的初始分支;可以在命令行后同时指定多个分支,此时,第一个分支将作为该项目的HEAD;如果不指定任何值,则默认使用master;
--change-id [TRUE | FALSE | INHERIT]:选填,指定是否需要在任何上传供审核的提交中都需要提供change-id页脚(不适用于直接推送到分支或标签的提交);
--use-content-merge:选填,当目标分支和正在提交的变更同时修改了某文件时,gerrit将尝试针对该文本内容进行一个三向合并;如果某提交类型是FAST_FORWARD_ONLY,则该选项不会生效;此选项默认为false;
--content-merge [TRUE | FALSE | INHERIT]:选填,此选项默认为false;
--use-contributor-agreements (--ca):选填,如果启用,作者在推送任何提交或者变更到新项目时,必须先在网站上完成贡献者协议;
--contributor-agreements [TRUE | FALSE | INHERIT]:选填,该选项默认为false;
--create-new-change-for-all-not-in-target (--ncfa):选填,如果启用,则为不在目标分支中的每个提交都创建一个新的变更(如果推送的提交是合并提交,则该推送将忽略此标志;为了避免意外创建大量打开的更改,此选项还不接受提交链中的合并提交);此选项默认禁用;
--description (-d) DESCRIPTION:选填,对新创建项目的描述; --empty-commit:选填,为新创建项目的git仓库创建一个初始空提交;
--max-object-size-limit VAL:选填,定义此项目的最大git对象大小,包含大于此限制的对象的推送将被拒绝(这可用于进一步限制全局的 receive.maxObjectSizeLimit, 而不能用于增加该全局设置的限制);支持'k','m'或'g'的通用单位后缀;
--name (-n) NAME:选填,参数的已弃用别名(将来的版本中可能会删除此选项);
--new-change-for-all-not-in-target [TRUE | FALSE | INHERIT] :选填,是否启用--ncfa选项;
--owner (-o) GROUP:选填,指定初始拥有该项目仓库的组,可以同时指定多个组(指定的组名必须是gerrit中已经定义过的);
--parent (-p) NAME:选填,指定新建项目要继承其访问权限的父项目的名称;如果不指定,则默认继承All_Projects项目;
--permissions-only:选填,指定新创建的项目仅作为其他项目的父项目(该新项目将初始化为将HEAD指向refs/meta/config;
--plugin-config VAL:选填,为新创建的项目设置插件配置参数,固定格式为“'.='”(只能设置由插件明确声明的参数);该选项可同时设置多个;
--require-change-id (--id):选填,任何上传待审核的提交都需要提供有效的change-id页脚;
--use-signed-off-by (--so) :选填,如果使能,则每次变更都必须在提交信息中包含来自作者或者提交者的“已签名”(Signed-off-by)行;
--signed-off-by [TRUE | FALSE | INHERIT]:选填,此选项默认禁用;
--submit-type (-t) [FAST_FORWARD_ONLY | MERGE_IF_NECESSARY | REBASE_IF_NECESSARY | MERGE_ALWAYS | CHERRY_PICK]:选填,gerrit提交已审核的变更到目标分支的操作类型,可指定的参数如下:FAST_FORWARD_ONLY(生成严格的线性提交历史记录) 、MERGE_IF_NECESSARY(需要的时候合并提交)、REBASE_IF_NECESSARY(需要的时候变基提交)、MERGE_ALWAYS(总是合并提交)、CHERRY_PICK(挑选提交);注意:默认为MERGE_IF_NECESSARY,除非 repository..defaultSubmitType参数被设置为其他值;
--suggest-parents (-S):选填,此选项会输出所有已经是其他项目父项的项目列表,帮助用户为新创建的项目找到合适的父项;注意:此参数不可与其他参数一起使用;
(3)举例:
创建一个新项目tool,并提交相应的描述(注意引号的使用)
$ ssh -p 29418 admin@127.0.0.0 gerrit create-project tool.git --description "'Tools used by build system'"
8、flush-caches
(1)说明:
从内存中清除部分或者全部服务器缓存,此选项强制gerrit在需要信息时重新询问基本情况;当管理员直接在gerrit数据库中修改了数据记录,而不是通过gerrit网页修改时,则可能需要设置此选项,刷新缓存;
(2)使用: gerrit flush-caches [--] [--all] [--cache NAME] [--help (-h)] [--list]
--all:选填,清除所有已知的服务器缓存;(当该选项不指定任何参数时,默认为-all);此选项会自动跳过清除存在潜在危险的缓存,如 web_sessions,要清除这些缓存,需要在命令行中用--cache NAME单独指定; --cache NAME:选填,只清除指定名称的缓存(在单个命令行中可以指定多个要清除的缓存) --list:选填,输出缓存列表;
(3)举例:
显示缓存列表: $ ssh -p 29418 admin@127.0.0.0 gerrit flush-caches --list
9、gc
(1)说明:
为指定项目运行git垃圾回收(用于项目瘦身); Gerrit系统管理员可以在运行Gerrit服务器的系统用户的用户全局Git配置文件中定义用于运行垃圾回收的默认参数;由于用户全局Git配置文件在存储库级别上被Git配置覆盖,因此可以在每个项目的Git存储库配置中为垃圾回收指定特定于存储库的参数。
(2)使用: gerrit gc [NAME ...] [--] [--all] [--help (-h)] [--show-progress]
NAME:选填,指定为其进行git垃圾回收的项目名称; --all:选填,为所有项目依次进行git垃圾回收; --show-progress:选填,显示执行进度信息;
(3)举例:
为项目myProject、yourProject依次执行垃圾回收: $ ssh -p 29418 admin@127.0.0.0 gerrit gc myProject yourProject
10、gsql
(1)说明: 针对主机gerrit服务器使用的基础sql数据库提供交互式查询支持;
(2)使用: gerrit gsql [--] [--format [PRETTY | JSON | JSON_SINGLE]] [--help (-h)] [-c SQL QUERY]
--format [PRETTY | JSON | JSON_SINGLE]]:选填,设置查询记录的输出格式,有如下三种形式:PRETTY(默认显示格式:以表格的形式显示所有记录结果;适用于在具有合适宽度的终端查阅)、JSON(查询记录以JSON对象的形式输出,以列名作为属性名称,每行一个JSON对象)、 JSON_SINGLE(输出全部记录结果集,作为一个JSON对象) -c SQL QUERY:选填,执行指定的单个数据库操作语句,执行完退出;
(3)举例:
A.连接到gerrit数据库: $ ssh -p 29418 admin@127.0.0.0 gerrit gsql (在下图gerrit之后输入数据库操作指令,然后用分号结尾即可;\q退出数据库连接)
B.查询gerrit数据库中的所有表名,查询完退出: $ ssh -p 29418 admin@127.0.0.0 gerrit gsql -c "'show tables;'"
C.手动更正用户的SSH连接名:
$ ssh -p 29418 admin@127.0.0.0 gerrit gsql -c “’update accounts set ssh_user_name = 'alice' where account_id=1;’”
$ ssh -p 29418 admin@127.0.0.0 gerrit flush-caches --cache accounts --cache sshkeys
(注意:这里是直接在数据库中对数据记录进行了修改,修改完需要刷新相关缓存,让修改生效)
11、logging
(1)说明: 查看或者设置日志记录级别;
(2)使用:
A.gerrit logging ls / ls-level [NAME]
NAME——显示名称中包含输入参数的记录器(不指定则默认输出所有记录器);
B.gerrit logging set / set-level LEVEL [NAME]
LEVEL——必填,指定记录器应该被设置的日志级别;”reset”用于将所有记录器的设置恢复到他们部署时的日志级别;
NAME——选填,指定了此参数,则只有名称中包含此输入参数的记录器的日志级别会被改变(不指定,则默认所有记录器的日志级别都会被改变);当LEVEL参数中传递了”reset”参数时,则此参数无效;
(3)举例:
A.查看gc_log记录器的日志级别: $ ssh -p 29418 admin@127.0.0.0 gerrit logging ls-level gc_log
B.设置gc_log记录器的日志级别为debug $ ssh -p 29418 admin@127.0.0.0 gerrit logging set-level debug gc_log
12、ls-groups
(1)说明: 每行一个,列出所有对主叫用户可见的组名;如果是管理员,则显示所有组;
(2)使用: gerrit ls-groups [--help (-h)] [--limit (-n) CNT] [--match (-m) MATCH] [--owned] [--project (-p) PROJECT] [--start (-S) CNT] [--user (-u) EMAIL][--verbose (-v)] [--visible-to-all] [-O VAL] [-o [MEMBERS | INCLUDES]] [-q GROUP]
--limit (-n) CNT:选填,指定显示组的最大数目限制; --match (-m) MATCH:选填,只显示组名中包含输入参数(MATCH)的组;
--owned:选填,列出--user选项指定的用户所拥有的组,如没有指定--user,则列出主叫用户所拥有的组;
--project (-p) PROJECT:选填,列出对指定项目具有任意权限(或从父项目继承权限)的组;可以指定多个--project选项,此种情况下,将列出对所有项目都具有任意权限的组;
--start (-S) CNT:选填,指定需跳过显示的组的个数(即从第CNT+1个组开始显示);
--user (-u) EMAIL:选填,仅列出包含该指定用户作为成员的组;
--verbose (-v) :选填,用制表符分隔显示详细的组别信息,包括:组名、UUID、描述、属组名、属组的UUID、该组是否对所有注册用户可见;
--visible-to-all :选填,仅列出对所有注册用户可见的组; -O VAL:选填,以十六进制输出选项标识;(???VAL这个值填什么)
-o [MEMBERS | INCLUDES]:选填,输出每组的选项;(???) -q GROUP:选填,列出仅包含指定要检查的组名的组;-q可以多次指定;
(3)举例:
A.列出所有对All-Projects具有任意权限的组:
$ ssh -p 29418 admin@127.0.0.0 gerrit ls-groups --project All-Projects
B.检查主叫用户是否拥有组All-Groups,如果返回该组,则说明主叫用户拥有,如果返回为空,则主叫用户没有拥有该组:
$ ssh -p 29418 admin@127.0.0.0 gerrit ls-groups --owned -q All-Groups
13、ls-members
(1)说明: 每行一个,显示指定组的成员列表;
(2)使用: gerrit ls-members GROUPNAME [--help (-h)] [--recursive]
GROUPNAME:必填,指定需要显示成员名的组; --recursive:选填,列出指定组包含的子组里的成员(并不会显示子组名?);
(3)举例:
列出组CCOS的成员及包含的子组里的成员:
A.$ ssh -p 29418 admin@127.0.0.0 gerrit ls-members CCOS
B.$ ssh -p 29418 admin@127.0.0.0 gerrit ls-members CCOS --recursive
14、ls-projects
(1)说明: 列出所有对主叫用户开放了读权限的项目;如果是管理员,则列出所有项目;
(2)使用: gerrit ls-projects [--all] [--description (-d)] [--format [TEXT | JSON | JSON_COMPACT]] [--has-acl-for GROUP] [--help (-h)] [--limit (-n) CNT][--match (-m) MATCH] [--prefix (-p) PREFIX] [--show-branch (-b) VAL] [--start (-S) CNT] [--tree (-t)] [--type [CODE | PARENT_CANDIDATES |PERMISSIONS | ALL]] [-r REGEX]
--all:选填,列出所有主叫用户拥有读权限的项目,以及主叫用户拥有的项目(即使这些项目并没有赋予主叫用户读权限);
--description (-d):选填,列出项目名称列表,以及与之相应的描述;
--format [TEXT | JSON | JSON_COMPACT]:选填,输出结果的显示格式:TEXT(基于文本格式显示)、JSON (以JSON对象地图的形式描述每个项目)、JSON_COMPACT(最小化JSON输出);
--has-acl-for GROUP:选填,仅显示直接对指定组赋予了访问权限的项目(只是从该组继承访问权限的项目将不会被显示);利用此选项,可以找到在哪个项目上使用了组;
--limit (-n) CNT:选填,显示项目的最大个数; --match (-m) MATCH:选填,显示项目名称中包含输入参数的项目;
--prefix (-p) PREFIX:选填,列出项目名称前缀匹配输入参数的项目列表;
--show-branch (-b) VAL:选填,该命令将显示所有拥有指定分支的项目列表;可以设置多个--show-branch参数,在这种情况下,将为每个分支显示其对应的项目列表(如果用户对某个分支没有读取访问权限,或者该分支不存在,则会显示存根(40个-符号))。如果用户无权访问项目中的任何分支,则不会显示整个项目;
--start (-S) CNT:选填,指定需要跳过显示的项目数; --tree (-t):选填,以树状格式显示项目列表;
--type [CODE | PARENT_CANDIDATES | PERMISSIONS | ALL]:选填,只显示指定类型的项目列表,如不指定,则默认为CODE类型;可以选的类型有:CODE(任何可能包含用户文件的项目)、PARENT_CANDIDATES(???)、PERMISSIONS(创建时带有--permissions-only标识的项目)、ALL(所有项目) -r REGEX:选填,显示与输入正则表达式匹配的项目列表;
(3)举例:
列出所有组CCOS拥有任意权限的项目: $ ssh -p 29418 admin@127.0.0.0 gerrit ls-projects --has-acl-for CCOS
15、ls-user-refs
(1)说明: 显示对指定用户可见的所有引用;
(2)使用: gerrit ls-user-refs [--] [--help (-h)] [--only-refs-heads] --project (-p) PROJECT --user (-u) USER
--only-refs-heads:选填,仅列出在refs/heads/*下对指定用户可见的引用;
--project (-p) PROJECT :必填,指定需要被列出来的引用所在的项目名称;
--user (-u) USER:必填,指定需要列出的引用对哪个用户可见(因为gerrit将在数据库中查询匹配,所以不必填写完整的标识);
(3)举例:
列出对用户admin可见的属于项目Elink/android/frameworks/compile/libbcc的所有引用:
$ ssh -p 29418 admin@127.0.0.0 gerrit ls-user-refs -p “Elink/android/frameworks/compile/libbcc” -u “admin”
16、plugin
(1)说明: gerrit插件的查询、安装、使能、禁止、删除等;
(2)使用:
A.gerrit plugin add/install 格式:gerrit plugin add/install [-|URL] [-] [--] [--help (-h)] [--name (-n) VAL]
参数: -|URL:管道输入jar或js|下载插件的网点;
--name (-n) VAL:插件的安装名称;注意:如果插件提供自己的名称到MANIFEST文件,那么该文件中的插件名称优先于此选项的设置值;
B.gerrit plugin enable 格式:gerrit plugin enable NAME ... [--] [--help (-h)]
参数:NAME——必填,需要启用的插件名称;可以同时指定多个;
C.gerrit plugin ls 格式:gerrit plugin ls [--all (-a)] [--format [TEXT | JSON | JSON_COMPACT]] [--help (-h)]
参数: --all (-a) :选填,列出所有插件,包括未启用的插件; --format [TEXT | JSON | JSON_COMPACT] :选填,指定输出结果的显示格式;
D.gerrit plugin reload/restart 格式:gerrit plugin reload [NAME ...] [--] [--help (-h)]
参数:NAME:必填,需要重启或者重载的插件名称(当修改了某插件的配置参数,为了使修改生效则需要重启或者重载该插件);
E.gerrit plugin remove/rm 格式:gerrit plugin remove NAME ... [--] [--help (-h)]
参数:NAME——需要禁用的插件名称,可以指定多个;
(3)举例:
列出当前环境下的所有插件,包括已禁用的: $ ssh -p 29418 admin@127.0.0.0 gerrit plugin ls --all
17、query
(1)说明: 查询数据库变更,返回与输入查询匹配的变更结果;
与WEB排序方式一致,按照变更发生的时间顺序由新到旧排列; 对于每个匹配的更改,即使查询在较旧的补丁集(例如,较旧的补丁集的sha1修订版)上匹配,结果也包含该更改的最新补丁集的数据;
(2)使用: gerrit query QUERY ... [--] [--all-approvals] [--all-reviewers] [--comments] [--commit-message] [--current-patch-set] [--dependencies] [--files] [--format FMT][--help (-h)] [--patch-sets] [--start (-S) N] [--submit-records]
--all-approvals:选填,显示所有补丁集的信息以及对应补丁集的审批信息;如果与--current-patch-set标志结合使用,则当前补丁集信息将被输出两次,每个字段一次。
--all-reviewers:选填,显示所有添加到变更中的审阅人的姓名和邮箱(无论他们有没有对该变更进行投票);
--comments:选填,显示所有变更的注释;如果与--patch-sets标志结合使用,则每个补丁集都包含所有内联/文件注释;
--commit-message:选填,在变更描述中包含完整的提交信息;
--current-patch-set:选填,在结果中显示有关当前补丁集的信息;
--dependencies:选填,显示补丁集的详细信息,包括与其他补丁集的依赖与被依赖关系;
--files:选填,支持列出所有带有补丁集及其属性(ADDED, MODIFIED, DELETED, RENAMED, COPIED)及大小信息(增加和删除文件的数量)的文件;注意:该选项需要与
--current-patch-set 或者--patch-sets选项搭配使用,才能列出所有相关文件的信息;
--format FMT:选填,结果的输出格式; --patch-sets:选填,包含所有补丁集的信息;如果与--current-patch-set标志结合使用,则当前补丁集信息将被输出两次,每个字段一次。
--start (-S) N:选填,指定需要跳过显示的变更数量(防止结果集爆炸);
--submit-records:选填,显示关于变更的提交记录信息,包括变更是否满足提交标准(包括每次审核标签的信息);
(3)举例:
显示项目amlogic/manifest的已提交未审核的记录,最多显示两条记录且结果以JSON格式输出:
$ ssh -p 29418 admin@127.0.0.0 gerrit query --format=JSON status:open project:amlogic/manifest limit:2
18、receive-pack
(1) 说明:
接收推送到存储库的内容(由git push 调用,并根据git push端提供的信息更新项目仓库;最终用户可以通过git push传递选项给这个命令,从而利用该命令自动传送信息)
(2)使用: gerrit receive-pack PROJECT.git [--] [--cc EMAIL] [--help (-h)] [--reviewer (--re) EMAIL]
PROJECT.git:必填,接收推送对象、创建或者更新变更的远程仓库;在gerrit代码审核中,指的是项目名称;参数的前缀或者.git后缀在使用时会被自动移除;
--cc EMAIL:选填,在任意创建或者更新的变更中复写Email参数;弃用,现在使用refs/for/branch%cc=address替代;
--reviewer (--re) EMAIL:选填,自动添加EMAIL参数为任意变更的审阅人;弃用,现在使用 refs/for/branch%r=address 代替指定;
(3)举例:
A.将master分支上有关变更的评论发送到admin@email.com邮箱 :
$ git push ssh://admin@127.0.0.0:29418 / project HEAD:refs/for/master%r= admin@127.0.0.0
B.发送评论,同时注明主题为“bug42”:
$ git push ssh://admin@127.0.0.0:29418/project HEAD:refs/for/master%r= admin@127.0.0.0,topic=bug42
C.同时复写另外两个参与方:
$ git push ssh://admin@127.0.0.0:29418/project
HEAD:refs/for/master%r=admin@127.0.0.0,cc=test1@source.skyworth.com,cc=test2@source.skyworth.com
D.配置一个推送宏来执行后面的操作:
$ git config remote.admin.url ssh://admin@source.skyworth.com:29418/project $ git config remote.admin.push
HEAD:refs/for/master%r=admin@source.skyworth.com ,cc=test1@source.skyworth.com , cc=test2@source.skyworth.com
E.查看仓库目录下.git/config里的配置:
F.现在,发送审阅邮件给如上邮箱将是容易的: $ git push admin
19、rename-group
(1)说明: 重命名gerrit用户组;
(2)使用: gerrit rename-group GROUP NEWNAME [--] [--help (-h)]
GROUP:必填,指定需要重命名的组; NEWNAME:必填,指定组重命名后的新名称;
(3)举例:
将MyProject重命名为YourProject: $ssh -p 29418 admin@127.0.0.0 gerrit rename-group MyProject YourProject
20、review
(1)说明:
将评论应用于一个或多个补丁集; 更新指定补丁集的当前用户的审批状态,并且/或者提交它们用以合并,同时发送邮件通知并更新数据库; 补丁集可能被指定为CHANGEID、PATCHSET格式,例如8242,2,或者COMMIT格式; 如果以COMMIT格式指定了补丁集,则可以使用完整的或缩写的提交SHA-1;如果在多个项目中都有相同的提交,则可以使用--project选项将Gerrit的搜索更改的位置限制为仅针对指定项目的内容;如果在多个分支中都有相同的提交,则可以使用--branch选项来限制Gerrit在何处搜索仅针对指定分支的更改。
(2)使用: gerrit review {COMMIT | CHANGE,PATCHSET} ... [--] [--abandon] [--branch (-b) VAL] [--delete] [--help (-h)] [--json (-j)] [--label (-l) LABEL=VALUE][--message (-m) MESSAGE] [--notify (-n) NOTIFYHANDLING] [--project (-p) PROJECT] [--publish] [--rebase] [--restore] [--submit (-s)] [--code-review N][--verified N]
{COMMIT | CHANGE,PATCHSET}:选填,指定待审核的提交或者补丁集输出列表的格式;
--abandon:选填,放弃指定的变更;
--branch (-b) VAL:选填,包含预期变更的分支名称(该选项要生效,必须在commit SHA-1之前提供);
--delete:选填,删除指定的补丁集;
--json (-j):选填,从JSON文件中读取评论输入;
--label (-l) LABEL=VALUE:选填,设置用户标签名;无效投票(无效标签或者无效的值)或者没有权限的用户投票将被自动忽略;
--message (-m) MESSAGE:选填,当审批状态更新时,作为可选的附属消息发送给审阅人;
--notify (-n) NOTIFYHANDLING : 选填,评论存储后应该向谁发送邮件通知;可选的参数有:NONE(不发送邮件通知)、OWNER(发邮件给变更所有者)、OWNER_REVIEWERS(发邮件给变更所有者和审阅人)、ALL(发邮件给所有人:变更所有者、审阅人、项目观看者以及对变更加注星标的素有使用者)
--project (-p) PROJECT:选填,包含预期变更的项目名称(为使之生效,需在commit SHA-1之前提供);
--publish:选填,发布指定的补丁集草稿; --rebase:选填,对指定的补丁集进行变基;
--restore:选填,恢复指定的、已废弃的补丁集; --submit (-s) :选填,将指定的补丁集提交合并;
--code-review N:选填,代码审核评分(-2、-1、0、+1、+2) --verified N:选填,验证评分(-1、0、+1)
(3)举例:
A.弃用提交c0ff33(commit SHA-1): $ ssh -p 29418 admin@127.0.0.0 gerrit review --abandon c0ff33
B.将项目this/project下的提交加审阅评分并且提交合并: $ ssh -p 29418 admin@127.0.0.0 gerrit review --verified +1 --code-review +2 --submit --project this/project
21、set-account
(1)说明:
修改对已有账户的相关设置; 此命令可以在不修改WEB页面的情况下,停用账户,设置HTTP密码,删除/添加SSH密钥;它还允许管理用户电子邮件地址,从而绕过我们在WEB页面中强制设置的验证步骤;
(2)使用: gerrit set-account USER [--] [--active] [--add-email EMAIL] [--add-ssh-key -|KEY] [--clear-http-password] [--delete-email EMAIL] [--delete-ssh-key -|KEY][--full-name NAME] [--help (-h)] [--http-password PASSWORD] [--inactive] [--preferred-email EMAIL]
USER:必填,指定要修改设置的用户名,可以是全称、电子邮箱、SSH用户名、账户ID;
--active:选填,修改用户状态为激活状态;
--add-email EMAIL:选填,给指定用户添加电子邮箱(此处不会触发邮箱验证,而是直接将邮箱地址添加到用户设置中);可以在单行命令中指定多个此选项,以添加多个邮箱到同一用户;
--add-ssh-key -|KEY:选填,添加SSH公钥到用户设置中;“-”选项可以直接从输入流读取公钥内容;可以在单个命令行中添加多个公钥;
--clear-http-password:选填,清除指定用户的HTTP密码;
--delete-email EMAIL:选填,从用户设置中删除输入的邮箱;如果参数填“ALL”,则删除哦用户名下的所有邮箱地址;可以指定同时删除多个邮箱;
--delete-ssh-key -|KEY:选填,删除用户已配置的SSH公钥;如果带“-”选项,则从输入流读取SSH内容然后匹配删除;如果参数为“ALL”,则删除所有SSH内容;可以指定同时删除多个;
--http-password PASSWORD :选填,为指定用户设置HTTP权限密码;
--inactive:选填,修改用户状态为非激活,从而防止用户登录;
--preferred-email EMAIL:选填,设置用户的首选电子邮箱(在设置之前必须确认该邮箱在用户账户中已注册);该命令选项可以和--delete-email选项同时使用,只要操作的不是同一个邮箱地址;
(3)举例:
给用户watcher添加一个邮箱,并且从输入流导入SSH公钥 :
$ cat ~/.ssh/rsa_watcher.pub | ssh -p 29418 admin@127.0.0.0 gerrit set-account --add-ssh-key - --add-email yangqianwen@source.skyworth.com watcher
22、set-members
(1)说明: 为指定组设置组成员;
(2)使用: gerrit set-members GROUP ... [--] [--add (-a) USER] [--exclude (-e) GROUP] [--help (-h)] [--include (-i) GROUP] [--remove (-r) USER]
GROUP:必填,指定要修改组员设置的组名称;可以同时指定多个组,从而向多个组同时添加组员;
--add (-a) USER:选填,向指定组中添加成员;可以同时指定多个成员;
--exclude (-e) GROUP:选填,从指定组中移除与输入匹配的子组;可以同时指定多个子组;
--include (-i) GROUP :选填,向指定组中添加输入的子组;可以指定多个子组同时添加;
--remove (-r) USER:选填,从指定组中删除与输入匹配的成员;可以指定多个成员同时删除;
(3)举例:
在组my-committers、my-verifiers中增加成员alice、bob,删除成员eve,同时增加子组my-friends,删除子组my-testers:
$ ssh -p 29418 admin@127.0.0.0 gerrit set-members -a alice@example.com -a bob@example.com -r eve@example.com -i my-friends -e my-testers my-committers my-verifiers
23、set-project
(1)说明: 用于批量修改已有项目的设置;此命令是参数安全的,即如果未指定参数,则保持之前的参数设置;
(2)使用: gerrit set-project NAME [--] [--change-id [TRUE | FALSE | INHERIT]] [--content-merge [TRUE | FALSE | INHERIT]] [--contributor-agreements [TRUE |FALSE | INHERIT]] [--description (-d) DESCRIPTION] [--help (-h)] [--max-object-size-limit VAL] [--no-change-id (--nid)] [--no-content-merge][--no-contributor-agreements (--nca)] [--no-signed-off-by (--nso)] [--project-state (--ps) [ACTIVE | READ_ONLY | HIDDEN]] [--require-change-id (--id)][--signed-off-by [TRUE | FALSE | INHERIT]] [--submit-type (-t) [FAST_FORWARD_ONLY | MERGE_IF_NECESSARY | REBASE_IF_NECESSARY |MERGE_ALWAYS | CHERRY_PICK]] [--use-content-merge] [--use-contributor-agreements (--ca)] [--use-signed-off-by (--so)]
NAME:必填,指定需要变更设置的项目名,若该参数以.git后缀结尾,则自动去除该后缀;
--change-id [TRUE | FALSE | INHERIT]:选填,指定在任意上传待审核的提交中是否都需要提供change id页脚(不适用于直接推送到分支或者标签的提交);
--content-merge [TRUE | FALSE |INHERIT] :选填,若启用,则当目标分支和要提交的变更修改了同一个文件时,Gerrit会尝试针对文件内容进行三向合并;(若提交类型为FAST_FORWARD_ONLY,则此选项不再生效);
--contributor-agreements [TRUE |FALSE | INHERIT]:选填,如果使能,则作者在向分支推送任意变更或者提交之前,必须先去网站上完成贡献者协议;
--description (-d) DESCRIPTION:选填,修改项目的描述;如未指定,则保持原有描述;
--max-object-size-limit VAL:选填,定义此项目的最大git对象的大小,包含大于此限制的对象的推送将被拒绝(这可用于进一步限制全局的 receive.maxObjectSizeLimit, 而不能用于增加该全局设置的限制);支持'k','m'或'g'的通用单位后缀;
--no-change-id (--nid):选填,若设定,则向该项目的任意提交都不再需要change id页脚;
--no-content-merge:选填,若设定,则文件冲突时gerrit将不再进行自动合并;
--no-contributor-agreements (--nca):选填,若设定,则作者不再需要去网站上完成贡献者协议;
--no-signed-off-by (--nso):选填,若指定,则提交信息里不再需要提供作者或者上传者的“签名行”;
--project-state (--ps) [ACTIVE |READ_ONLY | HIDDEN] :选填,设置项目的可见性,可选的参数有ACTIVE(默认设置,项目是常规的)、READ_ONLY(只有被赋予读权限的用户才可见,并且任何修改操作都是被禁止的) 、HIDDEN(除了项目拥有者,项目对其他人都是隐藏的); :
--require-change-id (--id):选填需要change id;
--signed-off-by [TRUE | FALSE |INHERIT]:选填,需要签名行;
--submit-type(-t) [FAST_FORWARD_ONLY | MERGE_IF_NECESSARY | REBASE_IF_NECESSARY | MERGE_ALWAYS | CHERRY_PICK]:选填,gerrit提交已审核的变更到目标分支的操作类型,可指定的参数如下:FAST_FORWARD_ONLY(生成严格的线性提交历史记录) 、MERGE_IF_NECESSARY(需要的时候合并提交)、REBASE_IF_NECESSARY(需要的时候变基提交)、MERGE_ALWAYS(总是合并提交)、CHERRY_PICK(挑选提交);注意:默认为MERGE_IF_NECESSARY,除非 repository..defaultSubmitType参数被设置为其他值;
--use-content-merge:选填,允许gerrit自动合并冲突;
--use-contributor-agreements (--ca):选填,需要完成贡献者协议;
--use-signed-off-by (--so) :选填,需要签名行;
(3)举例:
修改项目example的提交类型为MERGE_IF_NECESSARY,提交时需要change id,不允许自动合并冲突,且此项目对除项目拥有者以外的其他用户隐藏:
$ ssh -p 29418 admin@127.0.0.0 gerrit set-project example --submit-type MERGE_IF_NECESSARY --change-id true --content-merge false --project-state HIDDEN
24、set-project-parent
(1)说明: 变更指定项目的继承项目设置(所有项目默认继承 All-Projects,此命令可用于设置让指定项目继承另一个项目);
(2)使用: gerrit set-project-parent [NAME ...] [--] [--children-of NAME] [--exclude NAME] [--help (-h)] [--parent (-p) NAME]
NAME:必填,指定要变更继承设置的项目名称;
--children-of NAME :选填,选定所有子项目共同继承的父项目的名称;如果新的父项目或其父行中的项目是该父项目的子项目,则会自动移除父项;
--exclude NAME:选填,指定不应被重新继承给父项目的子项目名称;只有当选项--children-of被设置了后,此选项才能使用;可以通过多次使用--exclude选项来移除多个子项目;
--parent (-p) NAME : 选填,指定需要继承的新的父项目的名称;
(3)举例:
A.重新设置项目kernel/omap的父项目为kernel/common:
$ ssh -p 29418 admin@127.0.0.0 gerrit set-project-parent --parent kernel/common kernel/omap
B.将所有原父项目为myParent的子项目重新指定为继承新的父项目myOtherParent:
$ ssh -p 29418 admin@127.0.0.0 gerrit set-project-parent --children-of myParent --parent myOtherParent
25、set-reviewers
(1)说明:
在指定的变更中添加或者移除审阅者;变更需要用完整或者缩写的change id表示(例如:Iac6b2ac2),或者数字变更标识(例如:8242(旧式ID)),或者完整/缩写的提交SHA-1值;
(2)使用: gerrit set-reviewers COMMIT ... [--] [--add (-a) REVIEWER] [--help (-h)] [--project (-p) PROJECT] [--remove (-r) REVIEWER]
COMMIT:必填,指定要变更审阅人设置的变更; --add (-a) REVIEWER:选填,指定需要加入审核的用户或者组;
--project (-p) PROJECT:选填,指定包含修改变更的项目的名称;
--remove (-r) REVIEWER:选填,从指定变更的已有审核人列表中删除指定的用户或者组;
(3)举例:
A.从变更Iac6b2ac2的审核人列表中删除eve,同时增加alice和bob作为新的审核人:
$ ssh -p 29418 admin@127.0.0.0 gerrit set-reviewers -a alice@example.com -a bob@example.com -r eve@example.com Iac6b2ac2
B.指定所有项目拥有者为提交Iac6b2ac2的审核人:
$ ssh -p 29418 admin@127.0.0.0 gerrit set-reviewers -a "'Project Owners'" Iac6b2ac2
26、show-caches
(1)说明: 显示当前的缓存器统计信息;
(2)使用: gerrit show-caches [--] [--gc] [--help (-h)] [--show-jvm] [--show-threads] [--width (-w) COLS]
--gc:选填,在显示JAVA内存堆信息之前,先请求执行JAVA垃圾回收;
--show-jvm:选填,列出JAVA虚拟器、主操作系统的名称和版本,以及gerrit运行的环境的其他细节;
--show-threads:选填,显示gerrit指定线程的详细计数; --width (-w) COLS :选填,指定输出结果表的宽度;
(3)举例:
显示当前缓存器统计信息: $ ssh -p 29418 admin@127.0.0.0 gerrit show-caches
显示结果中的条目说明:
name:缓存名称;如果是被插件定义的缓存,则其名称为”-“;
Type:缓存的类型(Mem:在内存中的缓存;Disk:磁盘缓存;)
Entries:缓存中的条目信息;(Mem:保存在内存中的缓存条目数;Disk:保存在磁盘中的缓存条目数;Space:磁盘中缓存所占用的空间;)
average_get:从缓存中获取一个条目所需要的平均时间(单位:ns、us、ms、s);
hit_ratio:命中率(Mem:内存中的缓存条目命中率;Disk:磁盘中的缓存条目命中率;)
缓存条目内容说明:
accounts:缓存条目包含活动用户的重要详细信息,包括其显示名称,首选项和已知电子邮件地址;该条目信息是从accounts数据库表中获取到的; 如果直接更新过数据库中的任一表,则需要刷新该条目缓存;
accounts_byemail: accounts_byname: adv_bases:仅当启用分支级别访问控制时,用于推送到只能HTTP,该缓存条目包含所有可供客户端用作潜在增量基准的提交;推送智能HTTP需要两个HTTP请求,并且此缓存尝试将状态从第一个请求传递到第二个请求,以确保它可以完成。
changes:memoryLimit值的大小决定了为其缓存所有变更的项目数;如果将缓存设置为1024,则意味着最多可以缓存1024个项目的所有变更;
groups:从数据库表account_groups中缓存基本的组信息,包含组所有者、名称和描述。从LDAP获得的外部组成员身份缓存在下 "ldap_groups"。
groups_byinclude:缓存子组;如果直接对数据库表account_group_includes进行更新,则应刷新此缓存;
groups_byname: groups_byuuid groups_external groups_members:缓存包含特定成员的组;如果直接对数据库表account_group_members进行更新,则应刷新此缓存;
ldap_group_existence: ldap_groups:如果已在此服务器上配置了LDAP,则缓存用户所属的LDAP组;应该配置maxAge为较低的值,以确保及时获取LDAP修改;
ldap_groups_byinclude:缓存LDAP组的层次结构;
ldap_usernames:缓存LDAP用户名到Gerrit帐户身份的映射。当用户首次在Gerrit中创建其帐户时,缓存会自动更新,因此缓存的过期时间与无关紧要。
permission_sort:缓存访问控制部分必须应用于引用的顺序;当使用正则表达式时,对部分进行排序可能会很昂贵,因此此缓存会记住每个分支的顺序;
plugin_resources:缓存格式化的插件资源,例如已从Markdown转换为HTML的插件文档;memoryLimit是指专用于存储文档的内存字节;
project_list: projects:从数据库表projects中缓存项目描述记录;如果项目记录被更新或删除,则应刷新此缓存;
sshkeys:缓存用户SSH密钥的解压缩版本,因此内部SSH守护程序可以在身份验证期间与它们进行匹配。存储单位是用户个数,因此1024个项目可以转换为1024个唯一用户帐户。由于每个用户帐户都可以配置多个SSH密钥,因此密钥的总数可能大于项目数。
change_kind conflicts diff:每个项目都会在目录和问价级别缓存两次提交之间的差异;Gerrit使用此缓存来加速显示受影响的文件名及文件内容; 此缓存中的条目相对较大,因此memoryLimit是使用的内存字节数的估计值。管理员应尝试将cache.diff.memoryLimit定位为适合用户在1或2天之内查看的所有更改。
diff_intraline:在两次提交之间进行比较时,每个项目都会缓存一个文件的行内差异;Gerrit使用此缓存可以在查看文件时加快行内差异的显示; 此缓存中的条目相对较大,因此memoryLimit是使用的内存字节数的估计值。管理员应尝试将cache.diff.memoryLimit定位为适合用户在1或2天之内查看的所有更改。
diff_summary:每个项目都缓存两次提交之间不同的文件路径列表。Gerrit使用此缓存来加速对已更改文件的路径列表的计算。 理想情况下,此缓存的磁盘限制应足以覆盖所有更改。这将大大加快更改重新索引的速度,尤其是完全脱机重新索引的速度;
git_tags:如果使用分支或参考级别的READ访问控制,则此缓存跟踪从存储库的分支提示可访问哪些标记。Gerrit使用此信息来确定客户端可以访问的一组标签,这些标签是可见分支的历史记录的一部分,这些标签源自这些标签。 缓存会在服务器重新启动时保留到磁盘上,因为它的计算成本可能很高(对于大型历史记录(如Linux内核存储库),则需要60或更多秒的时间)
mergeability:
web_sessions:跟踪通过HTTP进入的实时用户会话。刷新此缓存将导致所有用户立即注销,从而迫使他们再次登录。为避免破坏活动用户,此高速缓存不会由自动刷新gerrit flush-caches --all,而是必须明确请求。 如果未配置(或cache.web_sessions.diskLimit 设置为0)磁盘高速缓存,则服务器重新启动将强制所有用户注销,并且由于高速缓存无法保留会话信息,因此需要在重新启动后再次登录。强烈建议启用磁盘缓存。 会话存储相对便宜。此缓存中的平均条目约为346个字节。
27、show-connections
(1)说明: 列出当前活动的客户端SSH连接表,以及当前连接在内部服务器并在进行操作的用户;
(2)使用: gerrit show-connections [--] [--help (-h)] [--numeric (-n)] [--wide (-w)]
--numeric (-n) : 选填,显示客户端主机名为IP地址,而不是DNS主机名; --wide (-w) :选填,不要将输出格式适用到终端宽度(默认为80列);
(3)举例:
(输出结果集中的字段解释: Session:该服务器上的唯一会话标识符;会话标识符的周期为2 ^ 32-1,并且从随机值开始;
Start:该连接启动的时间(本地服务器); Idle:自上一次在此连接上数据传输以来的时间;
User:在此连接上已通过身份验证的用户名称;如果加了-n选项,则显示未用户ID;
Remote Host:反向查找主机名;如果加了-n选项,则显示为远程IP地址;)
A.$ ssh -p 29418 admin@127.0.0.0 gerrit show-connections
B.$ ssh -p 29418 admin@127.0.0.0 gerrit show-connections -n
28、show-queue
(1)说明:
列出Gerrit守护进程当前正在执行或将在不久后执行的挂起的活动列表;Gerrit包含一个类似于cron的内部调度程序,它用于对短期和长期活动进行排
队和调度,一旦完成或取消的任务进入当前状态,它们就会很快退出队列,但是可以观察到处于这些状态的任务。
(2)使用: gerrit show-queue [--] [--help (-h)] [--wide (-w)]
--wide (-w) : 选填,不要将输出格式适配终端宽度;
(3)举例:
显示当前活动列表: $ ssh -p 29419 yangqianwen@source.skyworth.com gerrit show-queue
输出结果集中的字段解释:
Task:该服务器上的唯一任务标识符。可以传递给 kill来取消或终止任务。任务标识符的周期为2 ^ 32-1,并且从随机值开始;
State:空白,说明任务正在进行中;done,说明任务已完成,但还未被收割;killed,说明任务已被杀死,但是还未停止或者未从队列中删除;
Command:对将在给定时间执行的任务做简短的文本介绍;
29、stream-events
(1)说明:实时事件监控;提供进入服务器上发生的主要事件的门户,实时输出活动数据到客户端;事件以JSON格式输出,每行一个事件;事件通过主叫用户的访问
权限进行过滤,确保主叫用户仅能接收自己访问权限允许的事件;
(2)使用: gerrit stream-events [--] [--help (-h)]
(3)举例:
(JSON消息由嵌套对象组成,这些对象引用change、 patchSet、所涉及的帐户以及其他适当的属性;请注意,JSON消息中可能缺少任何字段,
此此 JSON流的使用者应适当地处理相关消息) :$ ssh -p 29418 admin@127.0.0.0 gerrit stream-events
30、test-submit
(1)说明: 利用选定的变更测试prolog提交规则(rule)、类型(type);
(2)使用: gerrit test-submit [COMMAND] [ARG ...] [--] [--help (-h)]
A.gerrit test-submit rule 格式:gerrit test-submit rule VAL [--] [--help (-h)] [--no-filters (-n)] [-s]
参数: VAL:必填,prolog环境下载入的change id; --no-filters (-n) : 选填,不要运行来自父项目的Submit_type_filter / 2;
-s:选填,从输入流读取prolog脚本文件,而不是从refs/meta/config 中的rules.pl文件读取;
B.gerrit test-submit type 格式:gerrit test-submit type VAL [--] [--help (-h)] [--no-filters (-n)] [-s]
参数: VAL:必填,prolog环境下载入的change id; --no-filters (-n) : 选填,不要运行来自父项目的Submit_type_filter / 2;
-s:选填,从输入流读取prolog脚本文件,而不是从refs/meta/config 中的rules.pl文件读取;
(3)举例:
A.测试提交规则:$ cat rules.pl | ssh -p 29418 admin@127.0.0.0 gerrit test-submit rule -s If57a7e3 -n
$ ssh -p 29418 admin@127.0.0.0 gerrit test-submit rule If57a7e3 -n
B.测试提交类型:$ cat rules.pl | ssh -p 29418 admin@127.0.0.0 gerrit test-submit type -s If57a7e3 -n
$ ssh -p 29418 admin@127.0.0.0 gerrit test-submit type If57a7e3 -n
31、version
(1)说明: 显示当前运行的gerrit服务器的版本;
(2)使用: gerrit version [--] [--help (-h)]
(3)举例:
显示当前gerrit版本:$ ssh -p 29418 admin@127.0.0.0 gerrit version