我的编程空间,编程开发者的网络收藏夹
学习永远不晚

repo init详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

repo init详解

首先选择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的速度。
 

来源地址:https://blog.csdn.net/xxdw1992/article/details/128452601

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

repo init详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2023-09-06

spring bean标签中的init-method和destroy-method详解

这篇文章主要介绍了spring bean标签中的init-method和destroy-method,在很多项目中,经常在xml配置文件中看到init-method或者destroy-method,因此整理收集下,方便以后参考和学习,需要的朋友可以参考下
2023-05-16

如何理解RedHat Enterprise Linux中的repo文件

这篇文章将为大家详细讲解有关如何理解RedHat Enterprise Linux中的repo文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Yum(全称为 Yellow dog Upda
2023-06-04

详解Go语言中init的使用与常见应用场景

Go语言中的init函数在程序启动时自动执行,可用于包级初始化、资源管理、注册插件等。它不接受参数,也不返回值。通过init函数,开发者可在程序启动时执行必要的初始化,确保依赖关系正确初始化,并实现顺序或并行初始化。遵循最佳实践,如保持简洁、避免依赖、处理错误和使用defer,可有效使用init函数。
详解Go语言中init的使用与常见应用场景
2024-04-02

Go语言中init函数和defer延迟调用关键词详解

这篇文章主要介绍了Go语言中init函数和defer延迟调用关键词,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-24

kubeadm init快速搭建k8s源码解析

这篇文章主要为大家介绍了kubeadm init快速搭建k8s源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-14

linux为repo 'AppStream'下载元数据失败的解决

目录linux为repo AppStream下载元数据失败显示错误 解决Centos8下载元数据失败(Cannot download repomd.XML: Cannot download repodata/repomd.xml)背景问题分
2023-06-16

golang init函数没有执行怎么解决

如果在Go中没有执行init函数,可能存在以下几种情况和解决方法:忘记导入包:确保你已经正确导入了包,因为只有导入了包,包中的init函数才会被执行。文件名错误:确保你的Go源文件名以.go结尾,并且文件名与包名一致。Go编译器只会编译以.
2023-10-22

Spring init-method与destroy-method属性的用法解析

目录Spring init-method与destroy-method属性使用知识点介绍:操作步骤:init-method="init"和 destroy-method="close" 作用Spring init-method与destroy-method属性
2021-02-22

详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别

目录源码包编译实例下载编译工具,httpd以及其两个依赖包的源码包安装apr安装apr-util安装httpd源码编译报错信息处理init程序的三种风格init程序三种风格的特点源码包编译实例 下面通过编译安装httpd来深入理解源码包安装
2022-07-13

Android Init进程对信号的处理流程详细介绍

Android Init进程对信号的处理流程 在Android中,当一个进程退出(exit())时,会向它的父进程发送一个SIGCHLD信号。父进程收到该信号后,会释放分配给该子进程的系统资源;并且父进程需要调用wait()或waitpi
2022-06-06

Kotlin构造函数与成员变量和init代码块执行顺序详细讲解

这篇文章主要介绍了Kotlin构造函数与成员变量和init代码块执行顺序,kotlin里面的构造函数分为主构造函数和次构造函数。主构造函数只能有一个,次构造函数个数不限制,可以有一个或者多个
2022-11-16

System has not been booted with systemd as init system (PID 1). Can‘t operate.解决方法

在WSL(Windows Subsystem for Linux,适用于Linux的Windows子系统)下通过systemctl命令启动某些服务将造成System has not been booted with systemd as i
2023-08-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录