BLOG

Record, summarize, and improve.

Git

Gerrit 工作流程

Image in a image block

面向 Gerrit 的工作流程最好用三个分支的集合和一个小故事来说明。

Image in a image block

最新的工程师 Fritz 被分配了 TICKET-123 来添加一项功能。在使用 git pull 同步 master 分支后(她已经从 Gerrit 克隆了仓库),她开始了这个舞蹈:

  1. 她发出了:git checkout -b TICKET-123 开始她的工作 自己的开发分支(在上图中,标记为 developer-branch 的 Branch)。
  2. 在她从事该项目时,她发布了很多小的提交。
  3. 这个项目花费的时间比她想象的要长,所以她发布了:git sync 从 master 拉取。虽然她必须进行合并,但她觉得现在合并总比以后合并好。
  4. 将所有小提交压缩为一个提交。
  5. 她创建了 Gerrit 评论。
  6. 她去了 Gerrit 仪表板,发现了她的更改,但是,当她这样做时,Jenkins 验证系统发现她的代码中存在语法错误。好在团队中没有人能把这个变化拉到他们的代码库中。
  7. 她很快在她的开发分支上进行了修复,并使用 git commit --amend 提交了它
  8. 重新运行 Gerrit review 命令,修补了她原来的评论。
  9. 她将团队的成员添加到审阅者列表中(松了一口气,因为 Jenkins 已经给了审阅 +1 验证)。Gerrit 向他们发送了所有电子邮件,但其中一位审阅者注意到她没有更新 README 文件,并给该评价打了 2 分。
  10. 她更新了开发分支上的 README 文件,并使用了另一个 git commit --amend 命令进行提交。
  11. 她再次重新运行 Gerrit review 命令,该命令将另一个 “补丁” 应用于审阅。
  12. 这一次,审阅者给审阅者打了 +2 分,更改通过 Gerrit 接口合并到 master 分支。

现在,团队的每个成员,包括 Fritz,一旦从 master 拉取,就会得到这个变化。