iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >repo init详解
  • 686
分享到

repo init详解

gitgithubpython 2023-09-06 07:09:26 686人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

首先选择manifest源,一般直接使用清华或中科大的镜像源 repo init -u https://aosp.tuna.tsinghua.edu.cn/platfORM/manifest是清华提供的镜像源 repo init -u gi

首先选择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

--结束END--

本文标题: repo init详解

本文链接: https://www.lsjlt.com/news/396654.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作