现在的位置: 首页 > 综合 > 正文

repo使用

2013年07月16日 ⁄ 综合 ⁄ 共 2506字 ⁄ 字号 评论关闭

1 repo介绍

Android 使用 Git 作为代码管理工具,开发了 Gerrit 进行代码审核以便更好的对代码进行集中式管理,还开发了 Repo 命令行工具,对 Git 部分命令封装,将百多个 Git 库有效的进行组织。

1.1    清单库文件介绍

一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以xml格式组织的。


Ø         remote元素,定义了名为korg的远程版本库,其库的基址为git//172.16.1.31/

Ø         default元素,设置各个项目默认远程版本库为korg,默认的的分支为gingerbread-exdroid-stable。当然各个项目(project元素)还可以定义自己的remoterevision覆盖默认的配置

Ø         project元素,用于定义一个项目,path属性表示在工作区克隆的位置,name属性表示该项目的远程版本库的相对路径

Ø         project元素的子元素copyfile,定义了项目克隆后的一个附件动作,从src拷贝文件到dest

1.2 下载repo代码

$mkdir android2.3.4

$cd android2.3.4

$git clone git://172.16.1.31/repo.git

     于是在android目录下便有repo文件夹,里面包含了repo的源代码,里面有个repo脚本,用它来执行repo指令。

在本地开发的用户需要下载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         -u:指定一个URL,其连接到一个maniest仓库

l         -m:manifest仓库中选择一个xml文件

l         -b:选择一个maniest仓库中的一个特殊的分支

命令repo init 要完成如下操作:

Ø         完成repo工具的完整下载,执行的repo脚本只是引导程序

Ø         克隆清单库manifest.git
(
地址来自于-u 参数)

Ø         克隆的清单库位于manifest.git中,克隆到本地.repo/manifests.清单.repo/manifest.xml只是符号链接,它指向.repo/manifests/default.xml

Ø         如果manifests中有多个xml文件,repo
init
 可以任意选择其中一个,默认选择是default.xml

Example

repo init  -u git://172.16.1.31/manifest.git

 
   

android2.3.4目录下面出现了.repo文件夹。

 

repo  init  -u git://172.16.1.31/manifest.git
–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         git
remote update

相当于对每一个remote源执行了fetch操作

l         git
rebase origin/branch

针对当前分支的跟踪分支执行rebase操作。

Example:

repo sync

也可以选择克隆其中的一个项目:

repo sync platform/build

2.3 repo start(创建并切换分支)

Usage:

repo start  <newbranchname> [--all | <project>…]

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

Example

  repo start  stable  --all

假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对所有项目,在gingerbread-exdroid-stable的基础上创建特性分支stable

  repo start  stable  platform/build
platform/bionic

假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对platform/buildplatform/bionic项目,在gingerbread-exdroid-stable的基础上创建特性分支stable

    

2.4 repo checkout(切换分支)

 Usage

repo checkout <branchname>  [<project>…]

实际上是对git checkout 命令的封装,但不能带-b参数,所以不能用此命令来创建特性分支。

Example

repo checkout crane-dev 

repo checkout crane-dev  platform/build  platform/bionic

2.5 repo branches(查看分支)

Usage

抱歉!评论已关闭.