1 repo介绍
Android 使用 Git 作为代码管理工具,开发了 Gerrit 进行代码审核以便更好的对代码进行集中式管理,还开发了 Repo 命令行工具,对 Git 部分命令封装,将百多个 Git 库有效的进行组织。
1.1 清单库文件介绍
一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以xml格式组织的。
Ø
Ø
Ø
Ø
1.2 下载repo代码
$mkdir android2.3.4
$cd android2.3.4
$git clone git://172.16.1.31/repo.git
在本地开发的用户需要下载repo代码,在172.16.1.7服务器上开发的用户则不用下载repo代码,因为已经把repo脚本添加到了环境变量,执行repo
init 就会附加的下载repo代码。
2 repo常用指令
备注:“*”表示新添加的指令
2.1 repo init (下载repo并克隆manifest)
Usage:
repo init –u URL [OPTIONS]
Options:
l
l
l
命令repo init 要完成如下操作:
Ø
Ø
(地址来自于-u 参数)
Ø
Ø
init 可以任意选择其中一个,默认选择是default.xml
Example:
repo init
在android2.3.4目录下面出现了.repo文件夹。
repo
–m android.xml
选择的是android.xml里面的配置,.repo/manifest.xml便指向.repo/manifests/android.xml
2.2 repo sync(下载代码)
Usage:
repo sync [<project>…]
用于参照清单文件.repo/manifest.xml克隆并同步版本库。如果某个项目版本库尚不存在,则执行repo
sync 命令相当于执行git clone,如果项目版本库已经存在,则相当于执行下面的两条指令:
l
remote update
相当于对每一个remote源执行了fetch操作
l
rebase origin/branch
针对当前分支的跟踪分支执行rebase操作。
Example:
repo sync
也可以选择克隆其中的一个项目:
repo sync platform/build
2.3 repo start(创建并切换分支)
Usage:
repo start
start实际是对git checkout –b 命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与git
checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上创建特性分支,而repo
start是在清单文件设定分支的基础上创建特性分支。
Example:
假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对所有项目,在gingerbread-exdroid-stable的基础上创建特性分支stable。
platform/bionic
假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对platform/build、platform/bionic项目,在gingerbread-exdroid-stable的基础上创建特性分支stable
2.4 repo checkout(切换分支)
repo checkout <branchname>
实际上是对git checkout 命令的封装,但不能带-b参数,所以不能用此命令来创建特性分支。
Example:
repo checkout crane-dev
repo checkout crane-dev
2.5 repo branches(查看分支)
Usage: