首先选择manifest源,一般直接使用清华或中科大的镜像源
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest是清华提供的镜像源
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest是中国科学技术大学的镜像源

repo init推荐使用-b 分支标签、--depth=1和--platform=auto这几个选项加快速度

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-5.1.1_r9 --depth=1 --platform=auto
repo sync推荐使用--current-branch选项加快速度

repo sync --current-branch
另外:中科大限制了每个用户最多使用4线程,因此指定-j8选项并不能提高下载速度。

repo init 与 repo sync 区别

repo init:更新本地的repo

repo sync: 下载代码到本地。

repo init to bring down the latest version of Repo with all its most recent bug fixes.

repo sync,这一步才是真正的从服务器把源码下拉的过程,repo相当与是执行了多个git,期间有一个git出问题,比如网络卡神马的就中断,然后就是重复repo sync

关于repo的基本用法,这里有http://source.android.com/source/using-repo.html

普通repo init的用法

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

片刻等待之后,仓库初始化完成。此时,这个仓库只是更新了repo这个构建工具本身,并下载了整个Android源码仓库的一个清单的版本库, 在~/android/.repo下面能够看到这些文件

.repo 具体分析

其中 ~/android/.repo/repo 目录是构建工具的全部代码(及其.git目录)。

其次是.repo/下还包含一个manifest.xml指向 ~/android/.repo/manifests/default.xml文件,这个是整个Android源码库的清单文件,之后repo这个工具会 根据这个清单依次下载所有的代码。

然后是~/android/.repo/manifests/.git (指向~/android/.repo/manifest.git)它是这个清单文件的版本库

然后,repo init命令是根据default.xml里面的链接,逐个获取每个子项目的信息(将来repo sync的时候存在.repo/projects下),信息包括这些子项目的名称,服务器存放位置,client下载后应该的存放位置。一个default.xml的例子如下:

到这里repo init的工作就做完了,总结一下,repo init得到了repo工具本身,和一份子项目清单(default.xml,清单含版本信息,即repo init时 -b选项指定)

特殊的repo init用法,建立一个镜像

repo init还有两个不太常用的选项 --mirror 和 --reference

加--mirror的话,repo init变成把git server的特定branch镜像到本机(将来本机可以做镜像server。小公司局域网内部用很好) repo init --mirror之后sync的效果与不加mirror完全不同,本地出现git服务器的文件布局,试试才知道哦。 我觉得,这个功能直接叫repo mirror的话比较清楚。具体repo init --mirror封装了什么git命令,没有搞清楚,还不太懂git命令,也没研究repo的init.py的源码。

to-be-mirrored-branch的选取是有学问的,选的好,会提高后面下载的命中率。不加branch,用master也行。到底应该用什么呢?我也不知道... 我想master, gingerbread是两个不错的选择。  而如果你选了donut,一个很老的分支作为mirror,将来下面这一步你选下载gingerbread的话,肯定命中率就不高了(但是仍然可以这样做,不会出错才对。因为当mirror里面找不到时,还会回到原始server去找,只是mirror或者叫cache的命中率低而已。希望我的理解是正确的)

再另开一个目录加--reference试试看,跟普通repo init含义一样,但是需要指定一个本地mirror好的文件夹作为参数,代表说以后sync时优先参考这个本地mirror,这样下载速度就可以大大提高。  (光是提高下载速度么?应该是吧....)

另外镜像一个git server后,把远程仓库复制到本地文件夹,自己做server也有可能性了!!而且确实有人这样做,具体是通过修改(篡改)manifest.xml里面的url链接,架设自己的git server。但我想这大概不是mirror功能的本意,本意还是提高sync的速度。

repo init详解相关推荐

  1. red hat linux yum,Red Hat Enterprise Linux(RHEL)中yum的repo文件详解

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  2. Manifest和Repo使用详解

    Android使用repo来管理多个Git项目.它需要一个manifest  XML文件来指示这些git项目的属性. Manifest repo manifest XML可以包含下面的元素. 以如下, ...

  3. Red Hat Enterprise Linux(RHEL)中yum的repo文件详解

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  4. Linux init详解 (0,1,2,3,4,5,6)

    init是Linux系统操作中不可缺少的程序之一. 所谓的init进程,它是一个由内核启动的用户级进程. 内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过 ...

  5. linux下repo是什么文件夹,yum的repo文件详解、以及epel简介、yum源的更换

    vi /etc/yum.conf [main] cachedir=/var/cache/yum #cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/ ...

  6. linux配置repo文件夹,CentOS yum的配置文件 repo文件详解

    什么是repo文件? repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中 ...

  7. centos yum的配置文件 repo文件详解

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 什么是repo文件 ...

  8. yum的repo文件详解、yum源的更换

    目录 1 什么是repo文件 2 yum.conf 3 yum.repo.d 4 自己私有的yum仓库 1 什么是repo文件 repo文件是Fedora中yum源(软件仓库)的配置文件, 通常一个r ...

  9. alloc、init 详解

    原文地址 http://ios.jobbole.com/86324/   感谢作者 前言 这是一篇我记录对alloc.init分析思考的笔记.如果读者想看懂我的第二个思考,可能需要您至少了解内存的分段 ...

最新文章

  1. ORM框架SQLAlchemy学习笔记
  2. JAVA——基于HttpComponents(HttpClient)的简单网络爬虫DEMO
  3. python如何保持数据类型不变_python 可变和不可变数据类型、格式化输出和基础运算符...
  4. 案例 github_github 项目搜索技巧-让你更高效精准地搜索项目
  5. Intellij IDEA Debug调试技巧
  6. vue.js 常见面试题_使用Vue.js时应避免的常见错误
  7. nginx php上传大小设置
  8. Matlab多组条形图Bar多组误差棒绘制Errorbar位置设置
  9. Q96:PT(2):纹理的仿射变换(Textures And Transformations)
  10. 疯狂Java实战演义
  11. cpu内存和线程和pool多进程池 Python
  12. 创投“黑帮”,必须的
  13. 开发方法---形式化方法
  14. MATLAB中的单相与三相dq变换模块
  15. c语言点阵字库12*16,用C语言编程16点阵字库
  16. Windows10 Windows自动更新失败 更新错误代码0x8024002e 无法自动更新
  17. Python编写后门程序
  18. 【Java实战篇】SpringBoot+MyBatis快速实现登录注册
  19. win10时间不准_【装机教程】超详细WIN10系统安装教程,官方ISO直装与PE两种方法教程...
  20. 核桃编程python下载_核桃编程for Mac

热门文章

  1. win10卸载程序时提示找不到xxx.msi文件
  2. 景安虚拟主机SSL证书导入教程
  3. 各大互联网公司技术博客汇总
  4. win7企业版安装vmtool提示无法进行,需要更新到SP1。【不换镜像,已解决】
  5. 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线
  6. <微信小程序>登录界面实现密码输入错误3次,30分钟不允许该账号登录
  7. rt-link源码笔记,适用于自定义点对点的通信协议
  8. 第五章 CSS美化网页元素
  9. 好客租房 — 项目发布以及各种服务集群搭建
  10. 工作笔记--百度地图API卫星图 ,还有路网去除 。