====== 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