====== Gerrit 管理手册 ======
----
==== Gerrit 安装====
- gerrit常被用于一个开发团队用浏览器共同维护软件 ,基于 java+mysql。底层是Git,所以安装前确保java,mysql,git已被安装
- 一般用下面这2个命令就能安装完成,安装过程中有很多选择,一直回车(默认)就行。因为最后的参数文件可以手动修改,默认使用H2数据库
- wget http://gerrit-releases.storage.googleapis.com/gerrit-2.7.war
- java -jar gerrit-2.7.war init -d gerrit-site(安装目录,下面会多次用到)
- 第一个用户将自动成为管理员(这点要非常注意)
----
==== Gerrit 启动,停止 ====
* 启动:gerrit-site/bin/gerrit.sh start
* 停止:gerrit-site/bin/gerrit.sh stop
* 重启:gerrit-site/bin/gerrit.sh restart
----
==== Gerrit 配置 ====
* vim gerrit-site/etc/gerrit.config
* [gerrit]
basePath = git
canonicalWebUrl = http://203.195.187.200:8080/ 经过测试,这里不能写localhost,改成真实ip
[ldap] 增加ldap配置
server = ldap://localhost ldap服务器地址
accountBase = ou=People,dc=1v,dc=cn ldap用户基后缀
groupBase = ou=group,dc=1v,dc=cn ldap组基后缀
accountFullName = ${cn}用户名
[sendemail] 支持email
enable = true
smtpServer = smtp.exmail.qq.com
smtpUser = luxfang@1v.cn
smtpPass = ****
from = Admin
smtpServerPort = 25
[gitweb] 配置gitweb。这里要先安装gitweb,让然后指定gitweb路径,让gerrit找到gitweb就行
cgi = /var/www/git/gitweb.cgi
* 最后,重启gerrit,使配置生效
----
==== Gerrit 升级 ====
* gerrit 升级,其实步骤很简单,只要覆盖安装就可以了,但是我却折腾了很久LOL
----
==== Gerrit 的修改 ====
* gerrit 不能直接修改仓库,用户和组。有些需要修改数据库操作
* 删除仓库:直接删除 gerrit-site/git/pro-name
* 删除用户或组:需要修改数据库
进入 gerrit安装包(gerrit-2.7.war)所在的目录下
java -jar gerrit-2.7.war gsql -d /data/gerrit // 进入H2 数据库
show tables; // 查看所有表,用户都在表accounts中,组都在account_groups中,直接对这些表操作就可以了
BACKUP TO 'backup.zip'; // 备份整个 H2 数据库
----
==== Gerrit 监控项目 ====
* 设置要监控的项目
* 点击又上角的: 用户名——Settings——Watched Projects——在Project Name输入要监视的项目名称——点击**Watch**确认监视
* 这时你可以监视以下5个动作,一有变化就会给你邮件通知。
* New Changes
* New Patch Sets
* All Comments
* Submitted Changes
* Abandoned Changes
----
==== Gerrit 管理 ====
仓库管理
* Gerrit的仓库有两种,一种是可被继承的虚仓库,另一种是承载项目的实仓库。 前者用于给多个实仓库提供一个关联(多个仓库继承于同一个父仓库)。
* 如果可以的话,最好让多用有共同点的仓库继承于同一个父仓库。这种方式,主要是为了方便权限的分配。
* 而且最好所有的建库工作统一由管理员完成。因为这样可以同步其他操作(比如你需要手动更新repo仓库的manifest.xml的话)
----
分组管理
* Gerrit分组。组时gerrit分配权限的最小单位,所以分组很重要。尽量以多个用户最小的共同点为基准进行分组。同样是方便权限分配。
----
权限管理
* 权限可以赋虚仓库,也可以分配给实仓库。要注意的是:分配给虚仓库,那继承这个虚仓库的所有子仓库都会继承这个权限。
* Gerrit权限分配。如果是单一的项目,直接在该上面上赋最小且够用的权限。如果是由同一个用户组使用的多个项目,将最小且够用的权限赋给这多个项目的最小的公共父类。
* 最后介绍一下Gerrit的基本权限:
* 创建里程碑。需要权限: refs/tags/* 下 push annotated tag 权限
* 创建分支。需要权限: refs/heads/* 下 Create Reference 权限
* push权限,经过gerrit审核。需要权限: refs/for/* 下 push 权限
* 直接push,不经过gerrit审核。需要权限:refs/heads/* 下 push 权限
* 向分支推送,需要权限:refs/* 下 push 权限
* 撤销已经推送到gerrit的等待审核的版本。需要权限: ref/* 下 Abandon 权限
* 删除draft,拥有者不需要权限也可以删除。需要权限: ref/* 下 delete draft 权限
* 编辑topic。需要权限: refs/* 下 Edit Topic Name
* 审核项目的权限: refs/for/* 下 Label Code-Review 权限(审核级别分成-2,-1,0,1,2五个等级,一个项目只有凭为2才算审核通过)
* 审核通过的push commit到主线中: refs/heads/* 下 submit 权限
* 合并提交:Push Merge Commit 相当于在refs/heads/* 下直接push