一、概述

要使用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”按钮,点击这个按钮,我们就可以将这笔提交到代码库里面

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  3. 如何在后台运行Linux命令?
  4. 一款常用的 Squid 日志分析工具
  5. No.11 使用firewall配置的防火墙策略的生效模式
  6. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  7. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  8. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  9. android 混淆规则详解

随机推荐

  1. 小白跟学系列之手把手搭建NLP经典模型(含
  2. NIPS2020 | 基于核的渐进式蒸馏的加法神
  3. CV学习笔记(三十一):人脸识别流程分析
  4. CV学习笔记(三十):交互式人脸活体检测
  5. CV学习笔记(二十九):活体检测总结②
  6. CV学习笔记(二十八):活体检测总结①
  7. CV学习笔记(二十七):Python Base64 格式图
  8. Exchange删除邮件
  9. CV学习笔记(二十六):NMS非极大值抑制算法
  10. CV学习笔记(二十五):数据集标注与制作