编译环境搭建指南(Establishing a Build Environment Guide) - mehome/openthos GitHub Wiki

#OTO开发快速入门

代码下载/提交使用说明书

git命令三部曲

1.初始化并克隆manifest

repo init -u git://192.168.0.185/lollipop-x86/manifest.git -b multiwindow

2.下载代码(同步代码)

repo sync

3.创建并切换分支

repo start multiwindow --all

git来龙去脉

git是版本库管理工具。什么是版本库呢?版本库又名仓库,英文名repository,我们可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

repo与git的关系

repo来自英文:仓库、版本库:Repository    Android使用git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了repo命令行工具,对Git部分命令封装,将百多个git库有效的进行组织。

简而言之,repo是Google公司,在Android项目,对git命令封装,或者git命令简化。

命令详解

命令1:

repo init -u git://192.168.0.185/lollipop-x86/manifest.git -b multiwindow

-b:选择一个maniest仓库中的一个特殊的分支multiwindow,也就是multiwindow这个分支

命令2:

repo start multiwindow --all

创建multiwindow分支,并且切换到multiwindow分支来工作。

为什么不同的目录,有的有git仓库,有的没有git仓库

问题的关键在于:执行如下命令: repo start multiwindow --all

repo start实际是对git checkout –b 命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。 这条指令与git checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上创建特性分支,而repo start是在清单文件设定分支的基础上创建特性分支。

也就是说:repo start multiwindow --all 创建的分支,建立的git 仓库,目录是特定的

这也就是解释了为什么:

packages/apps没有仓库;

但是packages/apps/Settings是有仓库的。

multiwindow分支理解

  • 命令一:

repo init -u git://192.168.0.185/lollipop-x86/manifest.git -b multiwindow

  • 命令二:

repo start multiwindow --all

注:

  • 命令一:multiwindow是说获取服务器manifest.git 主干下的一个分支multiwindow下代码

  • 命令二:multiwindow是说在本地创建一个multiwindow分支,也就是在本地创建一个multiwindow仓库

如何提交代码,如何打补丁?

提交代码7大步骤

  • 第1步:创建本地multiwindow分支子分支lc

git checkout -b lc

  • 第2步:创建补丁,打补丁

git apply diff.patch

  • 第3步:提交补丁到本地分支lc

git commit -a -s

  • 第4步:格式化输出补丁至头节点HEAD

git format-patch -M HEAD^

  • 第5步:从子分支lc切换到本地分支multiwindow

git checkout multiwindow

  • 第6步:把代码上传到远程服务器的 multiwindow分支上

git push devorg multiwindow:refs/heads/multiwindow

把本地分支multiwindow代码,也就是头heads的代码,提交到服务器的multiwindow的分支上。

  • 第7步:发邮件通知

`git send-email --To [email protected] 0001-frameworks-base-SystemUI-Use-little-fonts-for-notifi.patch`