第1章 Gerrit 简介
Gerrit 是一个基于 web 的代码评审工具, 它基于 git 版本控制系统。旨在提供一个轻 量级框架, 用于在代码入库之前对每个提交进行审阅。开发人员的修改首先将上载到 Gerrit, 但 实际上并不成为项目的一部分, 直到它们被审阅和接受。它是标准开源过程的一个工具来支持提 交补丁程序, 然后由项目成员在应用到代码库之前进行评审。
Gerrit 首先是一个临时区域, 在提交的代码成为代码库的一部分之前, 可以对其修改进行 检查。普通开发人员可以随意提交代码,但是需要专家(特定权限)对提交的 代码进行评审 打分,对于不合格的代码,专家有废弃的权利,只有检视通过的代码,才能被专家提交入库。
第2章 环境配置
账号 管理
我们使用 LDAP(Lightweight Directory Access Protocol)作为 Gerrit 的账号管理服务系
统,并使用 LAM(LDAP Account Manager)web 前端应用程序来进行账号的配置,包括账号 的新建、修改、删除等操作,下面将对 LAM 做简单介绍。
2.1.1 初始配置
LAM 配置 http://192.168.15.37/lam 浏览截图页面如下:
2,进入 LAM 配置:Lam 配置有通用设置和服务器配置,如下图所示,前者用于配置密码 策略、日志、重设管理员密码等,我们保持默认即可,后者用于编辑服务器相关配置,需要配置 好了才能使用账号管理系统。
3,编辑服务器配置文件:输入管理员密码(默认 lam)后可以进入配置界面。
Gerrit 使用教程
4,编辑通用设置:如下图所示,我们需要设置树状结构后缀为 dc=sxkj,dc=com,缺省语 言为英文,需要改成中文,登陆方式改为固定,合法用户列表为 cn=admin,dc=sxkj,dc=com , 即只有 admin 用户能够登陆和使用系统。
5,账号类型设置:我们需要配置用户,组和主机的账号类型,如下图所示
6,模块设置:在模块设置中设置好用户,组和主机的 ID 范围,然后点击左下方的保存即可。
2.1.2 新建组
初始设置完成后,我们可以在 LAM 中添加用户账号,用于 gerrit 访问,添加账号之前需要 首先新建组,然后才能添加成员。
1,登入 LAM 系统:输入 LAM 账号管理密码,该密码在安装 LAM 时配置。
2,新建组:登入后直接点新建组(可以不用新建主机)
3,信息输入:输入完信息,设置好密码后保存,即可完成新建组
4,组管理:如下图所示,为第三步新建的组 成员,我们也可以对组进行编辑 ,删除,信息 查看等操作。
2.1.3 新建用户
新建组完成后,我们才能真正的开始新建用户。 1,点击新建组:登入 LAM 后,在用户栏目点击新建组
2,输入信息:输入个人信息和 unix 信息,并设置好密码后,新用户便新建完成,我们就可以使 用该账号登陆 gerrrit 系统了。
3, 用户管理:下 图是我们新建好的用户,我们可以对其记 性编辑,删除,信息查看等操作。
2.2 Gerrit 注册邮件 提醒
用户账号配置完成后,就可以使用该账号登陆 Gerrit web 端,在使用 Gerrit 前,我们先要注 册并激活邮件提醒机制。
1,登陆 Gerrit 系统,通过 Chrome 浏览器访问http://192.168.15.37:8080/login/并输入 LAM 中 配置好的账号和密码。
2,进入个人 Gerrit 设置:
3,输入 Email 信息:依次点击 Contact Information->Register New Email…,输入个人邮箱后 点 Register。
3,邮箱激活:登入上一步输入的邮箱,并进入如下所示的链接即可完成邮箱激活,邮箱激活 后,后续有检视等活动,会有邮件提醒提示账号所有人去处理这些活动。
2.3
本地 git 工具安装
本节仅介绍如何在 Windows 和 linux 环境下安装 git 工具。
2.3.1 Windows 环境安装 git 工具
下载 Git_V1.9.5_preview20150319.1435310867.exe 工具,并安装,主要有如下两个勾选情况, 其他步骤直接点下一步即可。
2.3.2 Linux 环境安装 git 工具
直接使用 sudo apt-get install git 命令即可。
2.4
本地 git 初始化配置 及代码下载
2.4.1 windows 环境下获取本机公钥
1,首先代码下载目录运行 Git Bash,如下图所示
2,如果之前没有生成过公钥,需要运行 ssh-keygen -t rsa -Cyour_email@xx.com,然后一直回 车,最终生成的公钥如下图所示。
2.4.2 linux 环境下获取本机公钥
打开 bash 窗口,输入与 windows 环境下同样的命令 ssh-keygen -t rsa -Cyour_email@xx.com, 一直回车,就可以生成公钥。
2.4.3 配置公钥
1, 登入 Gerrit 检视系统,并进入设置项目。
2,依次点击 SSH Public Keys->Add Key…
Gerrit 使用教程
3,输入获取的公钥,并点击 Add 即可添加公钥。
2.4.4 其他配置
配置好公钥后,在做如下配置,讲邮箱和用户名配置到 git 即可下载代码。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
2.4.5 代码下载
1,依次点击 Projects->List->TestProject,其中 TestProject 为我们举例需要下载的代码工程。
2,进入工程后,依次点击 Clone with commit-msg hook->ssh->复制按钮
Gerrit 使用教程
3,在 Bash 控制台粘贴下载地址并回车即可下载工程。
3.1
第3章 Gerrit 项 目管理
新建 项目或分支
Gerrit 提供可视化的前端 web 管理系统,可以方便开发者直接通过访问 web 网站的形式来管
理项目。我们可以在该平台创建项目或者新建分支等操作。 1,新建项目:登入 Gerrit 后依次点击 Project -> Create New Project
2,填写项目信息:
例如:
Project Name: testProject
Rights Inherit From: All-Projects (权限继承) 勾选 Create initial empty commit
然后点击 Create Project 即可创建工程
创建好的工程如下图所示:
3,工程配置:
Gerrit 使用教程
4,新建分支:如下图所示,点击 Branches,并输入 Branch Name 和需要继承的分支 Initial Revision,并点击 Create Branch 即可创建分支,创建完成后,两个分支代码便可以独立迭代演进, 互不影响。
3.2
项目 权限管理
上一节中,我们在创建项目时,指定 了 Rights Inherit From 的权限继承策略为 All-Projects,即
All-Projects 规定了“哪些人”有“哪些权限”对该项目进行相关操作,如提交,检视,入库权限。 下面介绍如何编辑 All-Projects 策略。
1 , 创 建 组 成 员 : 权 限 策 略 是 根 据 组 来 划 分 的 , 因 此 需 要 创 建 组 , 如 下 图 所 示 依 次 点 击 People->Create New Group->输入组名- >Create Group, 即可创建组
2,添加组成员:进入 sxkj_com 组,并添加成员,注意添加的成员必须是 Lam 中注册过的用 户,否则会添加失败。
3,依次点击 Project->List->All-Projects->Edit 即可对权限策略进行编辑
3.3
代码 review 流程
本节通过举例介绍一个完整的代码 review 流程。
1,代码下载:参考本文 2.4.5 章节介绍内容,如果已下载请务必使用 git pull 命令将代码拉到
最新状态。
2,通过 IDE 等工具对代码进行修改,修改内容如下图所示:
3,使用 git add 等命令讲代码提交到 gerrit 检视服务器,具体命令如下图所示:
4,通过浏览器访问第 3 步中提示的http://192.168.15.37:8080/6,或者登入 Gerrit 后,依次点 击 All->Open 可以看到目前已提交待审核的列表,进入我们刚才提交的修改,如下图所示。
5,添加检视人员:如下图所示,操作完成后检视人员会收到邮件提醒,或者不添加检视人员, 直接将http://192.168.15.37:8080/6 发送给检视人员也可以。
6,代码检视:检视人员打开链接后可以对代码进行检视,如下图所示。
7,检视结果:检视人员检视完成后,可以做的常用操作如下。
1)检视打分并提交;2)仅检视打分;3)修改意见备注;4)遗弃,删除修改,下面讲介绍 什么情况下,检视人员应该怎样处理检视任务。
■检视打分并提交,如果 检视人员认为开发者修改的代码无误,且有打 分+2 权限 ,以及有 commit 提交权限可以执行该操作,注意:完成该操作后,代码会直接入库,请谨慎处理,操作示 意如下。
■仅检视打分,如果检视人员仅有打分权限,可以在审核完代码后给代码打分,可以供有代 码 commit 提交权限的其他检视人员参考,操作示意图如下:
■修改意见备注,检视人员认为提交者写的代码有问题,可以直接在代码中写出修改备注意 见,操作如下,首先选中某代码片段,然后点击 press c to comment 或者按下键盘上的 C 键,即可 对修改进行评论,点击 save 后可以保存修改意见备注。
■遗弃,删除修改,检视人员检查完代码后,认为代码不合格或者不该提交,应该将该修改 删除或者遗弃,删除后 gerrit 将没有任何记录,遗弃后 gerrit 会保留提交记录,示意图如下。
第4章 常用命令和操作
4.1常用 git 命令
git pull //把远程库的代码更新到工作台
git pull --rebase origin master //强制把远程库的代码跟新到当前分支上面
git fetch //把远程库的代码更新到本地库
git add . //把本地的修改加到 stage 中
git commit -m 'comments here' //把 stage 中的修改提交到本地库
git branch 查看远程分支/全部分支
git checkout master/branch //切换到某个分支
git checkout -b test //新建 test 分支
git checkout -d test //删除 test 分支
git merge master //假设当前在 test 分支上面,把 master 分支上的修改同步到 test 分支上 git merge tool //调用 merge 工具
git stash //把未完成的修改缓存到栈容器中
git stash list //查看所有的缓存
git stash pop //恢复本地分支到缓存状态
git blame someFile //查看某个文件的每一行的修改记录()谁在什么时候修改的)
git status //查看当前分支有哪些修改
git log //查看当前分支上面的日志信息
git diff //查看当前没有 add 的内容
git diff --cache //查看已经 add 但是没有 commit 的内容
git diff HEAD //上面两个内容的合并
git show commit-id //显示某次 commit-id 的修改内容
git reset --hard HEAD //撤销本地修改
git reset --hard commit-id //撤销 commit-id 前面的所有修改
git apply test.patch //打包 patch
4.2常用 Gerrit 操 作
1,挑单,及讲分支 A 的修改挑到分支 B,操作示意图如下图所示,该操作可以将 master 分
支的修改合到 master_new 上面,而不需要修改任何代码,也不需要进行本地 git 操作(除非合入 有冲突)。
2,修改代码,如果开发人员认为自己提交的代码有点小问题,可以直接在 gerrit 进行修正, 而无需进行本地代码修改(类似于本地 git commit --amend),示意如下。
3,回退已提交修改,开发人员可以将已提交入库的修改进行回退操作,原理是用依次新的修 改 commit-id 来冲掉之前的 commit-id,回退操作完成后,会生成新的修改链接,需要检视人员检 视入库,操作示意如下:
4,查看记录,无论待检视、已提交、遗弃的修改,我们都可以在 gerrit 找到相关记录,示意 如下,点击 Open 可以查看待检视的记录,点击 Merger 可以查看已提交入库的记录,点击 Abandoned 可以查看已遗弃的修改记录。
5,收藏提交,操作如下,收藏后的提交可以在 My-Starred Changes 中查看
6,条件查询提交,收藏提交