一, 概述
要使用 Android 代码, 您需要使用 Git 和 Repo. 在大多数情况下, 您可以使用 Git 而不是 Repo, 或者使用 Repo 和 Git 命令来形成复杂的命令. 然而, 使用 Repo 进行基本的跨网络操作将使您的工作更简单.
Git 是一个开源版本控制系统, 旨在处理分布在多个存储库中的大型项目. 在 Android 中, 我们使用 Git 进行本地操作, 如本地分支, 提交, 差异和编辑.
Repo 是在 Git 之上构建的存储库管理工具. Repo 在必要时统一了许多 Git 存储库, 上传到版本控制系统, 并自动部署了 Android 开发工作流程. Repo 并不意味着取代 Git, 只是为了在 Android 的中更容易使用 Git. repo 命令是可执行的 Python 脚本, 您可以将其放在路径的任何位置. 在使用 Android 源文件时, 您将使用
Repo 进行跨网络操作. 例如, 使用单个 Repo 命令, 您可以将文件从多个存储库下载到本地工作目录.
Gerrit 是使用 Git 的项目的基于 web 的代码审查系统. Gerrit 鼓励更多的集中使用 Git, 它允许所有授权用户提交更改, 如果通过代码审查, 这些更改将自动合并. 此外, Gerrit 通过在浏览器中并排显示更改并启用内联注释来更轻松地进行审阅.
二, 基本工作流
在 Android 里, 开发与代码库常用的交互模式如下:
下载代码
编辑文件, 提交修改
提交修改到 gerrit
Gerrit 触发 Jenkins 任务, 进行代码检查
Reviewer 对代码进行 Code review
Submit 到代码库
三, 下载代码
要同步所有可用项目的文件:
$ repo sync
要同步所选项目的文件:
$ repo sync PROJECT0 PROJECT1 PROJECT2 . . .
四, 编辑文件, 提交修改
按照需求修改好文件之后, 使用如下命令可以先暂存你的修改.
Git add -A
然后使用 Git commit 将暂存的文件提交.
五, 提交修改到 gerrit
在提交到 gerrit 之前, 现将本地代码更新到最新
repo sync
这个时候, 可能会出现代码冲突. 需要对产生冲突的文件进行修改, 然后重新 Git add . 和 Git commit 最后在执行
Git rebase --continue
然后执行
repo upload
这将列出您提交的更改, 并提示您选择要上传到 gerrit 上的分支. 如果只有一个分支, 您将看到一个简单的 y / n 提示符.
下图是代码在本地通过 Git 和 repo 的操作图表.
六, Gerrit 触发 Jenkins 任务, 进行代码检查
当修改提交到 gerrit 上之后, 会自动触发 jenkins 任务, 进行代码检查. 这时我们进行代码审查的第一步.
根据我们制定的代码检查规范, 检查当前的这笔提交是否满足我们的需要.
如果没有通过代码检查, 会对这笔提交进行 vertify -1; 通过的话, 会进行 vertify +1.
代码检查这一步, 是后面 reviewer 进行代码审查的一个重要依据. 没有通过的话, 开发一定要重新修改代码进行提交.
而且, 代码检查的通过率, 也是评价这个开发代码质量的一个重要标准.
七, Reviewer 对代码进行 Code review
代码在提交到 gerrit 上之后, 除了进行 jenkins 的代码审核之外, 还会给各个负责人 (Reviewer) 发送审核邀请, 由他们进行下一步的代码审核.
Reviewer 评审的依据:
Jenkins job 进行代码检查的结果;
代码设计是否合理;
是否满足需求;
是否可以解决已有的问题;
......
Reviewer 可以在代码添加 comments, 发表自己的建议, 质疑, 修改意见......
开发要回复这些 comment, 并对代码进行适当的修改, 重新提交, 直到 reviewer 认为你的修改满足要求, 并给你 Code Review +1 或 + 2.
而如果一笔提交长时间没有任何改动, 会自动 abandon 掉, 而不需要的修改, 也可以手动 abandon 掉.
八, Submit 到代码库
当一笔提交已经被 Code Review +2 了, 说明这笔提交已经满足了需要, 这时该笔提交的 gerrit 界面上会出现 "submit" 按钮, 点击这个按钮, 我们就可以将这笔提交到代码库里面
来源: http://www.bubuko.com/infodetail-2915419.html