一:关于repo

repo是Google开发的用于管理Android版本库的一个工具,repo并不是用于取代git,而是用Python对git进行了一定的封装,简化了对多个Git版本库的管理。对于repo管理的任何一个版本库,都需要使用git命令进行操作。

repo的使用过程如下:

1.运行repo init 命令,克隆Android的一个清单库,这个清单库是通过xml技术建立的版本清单库。

2.清单库中的manifest.xml文件,列出了160多个版本库的克隆方式。包括版本库的地址和工作去地址的对应关系,以及分支的对应关系。

3.运行repo sync的命令,开始同步,即分别克隆这160个版本库到本地的工作区中。

4.同时对160多个版本库进行切换分支操作,切换到某个分支。

二:安装repo

首相下载repo的引导脚本,可以使用wget,curl甚至浏览器从http://android.git.kernel.org/repo上下载。把repo脚本设置为可执行,并复制到可执行的路径中。在Linux上可以用下面的指令将repo下载并复制到用户主目录的bin目录下。

curl -L -k http://android.git.kernel.org/repo >/bin/repo

chmod a+x ~/bin/repo

这里的repo只是一个引导脚本而不是直接称之为repo,因为repo大部分功能代码都不在其中,下载的只是帮助真个repo程序继续下载和加载的工具。

三,repo和清单库的初始化

下载并保存repo引导脚本后,建立一个工作目录,这个工作目录将作为Android工作区目录。在工作目录中执行repo init -u <url>,完成repo完整的下载及项目清单版本库的下载。

mkdir working-directory-name

cd working-directory-name

repo init -u git://android.git.kernel.org/platform/manifest.git

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

1.完成repo工具的完整下载,现在仅有的不过是repo 的引导程序。初始化操作会从android的代码中克隆repo.git库到当前的目录下.repo/repo目录下。在完成repo.git克隆之后,repo init命令会将控制权交给工作区的.repo/repo/main.py。

2.克隆android的清单库manifest.git(地址来自与-u参数)

3.克隆的清单库位于.repo/manifests.git中,本地克隆到.repo/manifests。

4.询问用户的姓名和邮件地址,如果和git默认的用户名,邮件地址不同,则记录在./repo/manifests.git库的config文件中。

5.命令repo init还可以附带--mirror参数,以建立和傻瓜女友Android的版本库一模一样的镜像。

3.1清单库是什么?从哪里下载?

清单库实际上只包含一个default.xml文件,这个XML文件定义了多个版本库和本地地址的映射关系,是repo工作的指引文件,所以在使用repo引导脚本进行初始化的时候,必须通过-u参数指定清单库的源地址。

清单库的下载,是通过repo init命令初始化时,用-u参数指定清单库的位置。例如repo针对Android代码库进行初始化时执行的命令:

repo init -u git://android.git.kernel.org/platform/manifest.git

repo引导脚本的init子命令可以使用下列和清单库相关的参数:

-u:设定清单库的git服务器地址

-b:检出清单库的特定分支

--mirror:只在repo第一次初始化的时候调用,以和Android服务器同样的结构在本地建立镜像

四,同步项目

repo sync

对于Android,这个操作需要通过网络传递接近2GB的内容,我们可以在repo sync后面跟上需要的项目的名称,项目的名称来自.repo/manifest.xml这个XML文件中project元素的name属性值。例如克隆platform/build项目:

repo sync platform/build

简单学习:repo入门的更多相关文章

  1. webpack简单学习的入门教程

    前言,如果按照官网的安装办法: npm install webpack -g 安装的是最新版的,然后就莫名其妙的有问题(可以安装,但运行有问题).我是小白,我也不知道具体原因,所以我换成2.5.1版本 ...

  2. Git与Repo入门(转载)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAykAAADuCAIAAACyDd+sAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu ...

  3. 【转】Git与Repo入门----不错

    原文网址:http://www.cnblogs.com/angeldevil/p/3238470.html Git与Repo入门   版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工 ...

  4. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  5. netty深入学习之一: 入门篇

    netty深入学习之一: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NI ...

  6. Java工程师学习指南 入门篇

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  7. Windows 下 Docker 的简单学习使用过程之一 dockertoolbox

    1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...

  8. Elasticsearch学习记录(入门篇)

    Elasticsearch学习记录(入门篇) 1. Elasticsearch的请求与结果 请求结构 curl -X<VERB> '<PROTOCOL>://<HOST& ...

  9. 学习Objective-C入门教程(分享)

    原百度文库连接:http://wenku.baidu.com/view/6786064fe518964bcf847c63.html PS:需要原文档的可以留邮箱发送! (我叫雷锋,不要谢我) 学习Ob ...

  10. AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享

    原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net       杨洋    wpfui.com      ...

随机推荐

  1. 《javascript高级程序设计》 第20章 JSON

    20.1 语法 20.1.1 简单值 20.1.2 对象 20.1.3 数组 20.2 解析与序列化 20.2.1 JSON 对象 20.2.2 序列化选项 20.2.3 解析选项 JSON 对象有两 ...

  2. emmet使用笔记及sublime常用快捷键

    2015.10.07补: 格式化JS代码: 安装JSformat插件,选中需要格式化的JS代码,Ctrl+Alt+f 使用笔记看:http://www.w3cplus.com/tools/emmet- ...

  3. Web总结

    Web总结 学习web前端理论基础必然是要过关的,这里我总结了一下比较基础的常用理论,还是比较有用哒! 一.名词解释 1.横切 在固定页面的宽度(按栅格化进行)并且对高度没有限制的容器称为一个标准横切 ...

  4. 多线程相关Interlocked.Increment问题

    今天群里有人问到如下代码打印出来的东西为什么不是连续得,所以有大神解释了原因.在这过程中遇到了些奇怪的情况 static void Main(string[] args) { for (int i = ...

  5. Generic泛型

    1.问题 未使用泛型时,元素的类型不安全:操作麻烦,可能需要强制转换import java.util.ArrayList;import java.util.List;import org.junit. ...

  6. Windows Store App 用户库文件操作

    (1)获取用户库位置 如果想要通过应用程序在用户库中创建文件,首先需要获得用户库中指定的位置,例如图片库.文档库等.这里值得注意的是,在获取用户库的位置之前,必须在Windows应用商店项目的清单文件 ...

  7. [转]JDK6和JDK7中的substring()方法

    substring(int beginIndex, int endIndex)在JDK6与JDK7中的实现方式不一样,理解他们的差异有助于更好的使用它们.为了简单起见,下面所说的substring() ...

  8. BZOJ1737 [Usaco2005 jan]Naptime 午睡时间

    断环然后裸DP就好了... $f[i][j][k]$表示1号时间段没有被算入答案,到了第$i$个时间段,一共选了$j$个时间段,$k = 0 /1$表示第i个时间段有没有被算进答案的最优值 $g[i] ...

  9. H5网页动画制作(页面切换、效果等)

    网址 http://www.ih5.cn/#mine/home/194080 13482289820 视频教程 http://file.ih5.cn/?nid=713629&key=aef10 ...

  10. 关于JavaScript是否会阻塞图片加载

    <?php //1.js.php sleep(5); file_put_contents("tmp.txt", __FILE__.'->'.__LINE__.' -&g ...