关于党的知识Gerrit控制台命令
⼀、概述
1、查看所有控制台命令:
$ ssh -p 29418 admin@127.0.0.0 gerrit --help (使⽤⾃⼰的gerrit地址IP)
2、控制台命令列表:
(共31项:以下命令都可以通过“gerrit COMMAND --help”获取更详细的说明):
apropos ban-commit clo-connection create-account create-branch create-group create-project
flush-caches gc gsql logging ls-groups ls-members ls-projects ls-ur-refs plugin query
receive-pack rename-group review t-account t-members t-project t-project-parent
t-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为的提交:
$ ssh -p 29418 admin@127.0.0.0 gerrit ban-commit myproject 421919d015c062fd28901fe144a78a555d0b5984
3、clo-connection
(1)说明:关闭与指定ID的SSH连接;注意:如果找不到与指定会话ID的连接,则返回⼀条错误信息;
(2)使⽤:gerrit clo-connection SESSION_ID ... [--] [--wait]
SESSION_ID:必填,要关闭连接的SSH会话ID,可以指定多个; --:选项结束标识符;
--wait:在退出之前等待连接关闭(因为默认关闭连接是异步进⾏的)
三国演义典韦
(3)举例:
$ ssh -p 29418 admin@127.0.0.0 gerrit clo-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 Urs组中:
$ cat ~/.ssh/id_watcher.pub | ssh -p 29418 admin@127.0.0.0 gerrit create-account --group "'Non-Interactive Urs'" --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.baPath路径下创建⼀个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)] [--u-content-merge][--u-contributor-agreements (--ca)] [--u-signed-off-by (--so)]
NAME:必填,需要被创建的项⽬名称(如果该名称以.git结尾,则创建时⾃动移除后缀);
--branch (-b) BRANCH:选填,指定新建项⽬的初始分⽀;可以在命令⾏后同时指定多个分⽀,此时,第⼀个分⽀将作为该项⽬的HEAD;如果不指定任何值,则默认使⽤master;
--change-id [TRUE | FALSE | INHERIT]:选填,指定是否需要在任何上传供审核的提交中都需要提供change-id页脚(不适⽤于直接推送到分⽀或标签的提交);
--u-content-merge:选填,当⽬标分⽀和正在提交的变更同时修改了某⽂件时,gerrit将尝试针对该⽂本内容进⾏⼀个三向合并;如果某提交类型是FAST_FORWARD_ONLY,则该选项不会⽣效;此选
项默认为fal;
--content-merge [TRUE | FALSE | INHERIT]:选填,此选项默认为fal;
--u-contributor-agreements (--ca):选填,如果启⽤,作者在推送任何提交或者变更到新项⽬时,必须先在⽹站上完成贡献者协议;
--contributor-agreements [TRUE | FALSE | INHERIT]:选填,该选项默认为fal;
--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页脚;物质的密度
--u-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 ud by build system'"
8、flush-caches
(1)说明:
从内存中清除部分或者全部服务器缓存,此选项强制gerrit在需要信息时重新询问基本情况;当管理员直接在gerrit数据库中修改了数据记录,⽽不是通过gerrit⽹页修改时,则可能需要设置此选项,刷新缓存;
学年小结大一(2)使⽤:gerrit flush-caches [--] [--all] [--cache NAME] [--help (-h)] [--list]
--all:选填,清除所有已知的服务器缓存;(当该选项不指定任何参数时,默认为-all);此选项会⾃动跳过清除存在潜在危险的缓存,如 web_ssions,要清除这些缓存,需要在命令⾏中⽤--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;'"