一:关于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. Rectangle Intersection Test (with C#)

    Rectangle Intersection Test (with C#) by Sebastian Krysmanskihttp://manski.net/2011/05/rectangle-int ...

  2. HTML5自学笔记[ 17 ]canvas绘图基础4

    绘制图像: drawImage(oImg,x,y),oImg是一个Image对象,(x,y)为绘制起点,绘制的图像大小和源图大小一样. drawImage(oImg,x,y,w,h),后两个参数设置绘 ...

  3. 重装系统(win7)

    -_-|| 第一次装,可谓艰难险阻 一:准备 1.U盘(大小至少4G)——本人用了4G的 2.查询自己的电脑进入BIOS的方法——本人电脑机型为华硕X550VC,开机长按F2(当时为保险起见,也同时按 ...

  4. PHP + Memcache 实现多服务器session共享

    很多时候一个完整的系统可能运行在多个服务器上,如果这多个服务器之间需要共享session的话,那么php默认的files保存session的方式就无能为力了.这时我们可以考虑使用memcache 来接 ...

  5. 你不知道的JavaScript--DOM基础详解2

    转载:http://blog.csdn.net/i10630226/article/details/49785165 先上几张图简要看看DOM的一些方法属性: 大概这些就是常用的,下面具体聊聊. 节点 ...

  6. js事件知识整理

    鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemove 如果按下鼠标上的设备(左键,右键,滚轮……),则触发mousedown ...

  7. 百度Tera数据库介绍——类似cassandra,levelDB

    转自:https://my.oschina.net/u/2982571/blog/775452 设计背景 百度的链接处理系统每天处理万亿级的超链数据,在过去,这是一系列Mapreduce的批量过程,对 ...

  8. [python学习]结合开源库学习python

    代码碎片1 #!/usr/bin/python # please add your code here! import matplotlib matplotlib.use('Agg') import ...

  9. Windows 下对目录建立软链接

    在Linux下,可以很方便的通过ln命令创建对文件和对文件夹的软链接.在Windows下,通过快捷方式,可以创建到文件和文件夹的链接,但是这软链接不是一个层面的上东西.软链接是底层文件系统层面的,而快 ...

  10. spring+springmvc+mybatis整合

    1.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app version=&qu ...