用户工具


Gerrit 管理手册


Gerrit 安装

  1. gerrit常被用于一个开发团队用浏览器共同维护软件 ,基于 java+mysql。底层是Git,所以安装前确保java,mysql,git已被安装
  2. 一般用下面这2个命令就能安装完成,安装过程中有很多选择,一直回车(默认)就行。因为最后的参数文件可以手动修改,默认使用H2数据库
  3. java -jar gerrit-2.7.war init -d gerrit-site(安装目录,下面会多次用到)
  4. 第一个用户将自动成为管理员(这点要非常注意)

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<luxfang@1v.cn>
            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