当前位置: 首页 > news >正文

repo简介

repo是Android为了方便管理多个git库而开发的Python脚本。repo的出现,并非为了取代git,而是为了让Android开发者更为有效的利用git。

Android源码包含数百个git库,仅仅是下载这么多git库就是一项繁重的任务,所以在下载源码时,Android就引入了repo。

repo需要关注当前git库的数量、名称、路径等,有了这些基本信息,才能对这些git库进行操作。通过几种维护所有git库清单,repo可以方便的从清单中获取git库的信息。这份清单会随着版本演进升级而产生变化,同时也有一些本地的修改定制需求,所以,repo是通过一个git库来管理项目的清单文件的,这个git库的名字叫做manifests。

当打开repo这个可执行的python脚本后,发现代码量并不大,难道仅这一个脚本就完成AOSP(Android Open Source Project)数百个git库的管理吗?并非如此。repo是一系列脚本的集合,这个脚本也是通过git库来维护的,这个git库的名字叫做repo。

在客户端使用repo初始化一个项目时,就会从远程把manifests和repo这两个git库拷贝到本地,这对于开发人员来说,又是近乎无形的(一般通过文件管理器,是无法看到这两个git库的)。repo将自动化的管理信息都隐藏根目录的.repo目录中。

repo sync

将本地仓库更新到最新状态。它会从远程服务器下载最新的代码,并将本地仓库与之同步。如果本地仓库中已经存在某个项目,repo sync会自动检测本地仓库中该项目的版本,并将其更新到最新状态。
类似于git fetch和git merge命令组合使用。它会更新所有远程分支,并将本地仓库合并到最新状态

repo sync -l

将本地仓库的代码与本地manifest文件所列的代码同步。它不会从远程服务器下载最新的代码,而是使用本地的缓存,将本地仓库中各个项目的代码回滚到本地manifest文件中所列出的特定版本或分支。这对于调试、测试或开发时离线工作很有用。
类似于git checkout命令,可以将本地仓库恢复到指定的分支或标签。但与git checkout不同的是,repo sync -l会同时更新所有依赖的存储库,从而确保各个存储库之间的版本兼容性

repo sync -c

只同步当前分支的代码,类似于git fetch --depth=1命令,它只会下载当前分支的最新代码。

repo sync -c --no-tags --prune -j 4。

查看 repo help status 的帮助信息,对所给的各个选项具体说明如下:

-c, --current-branch:fetch only current branch from server.
这个选项指定只获取执行 repo init 时 -b 选项所指定的分支,不会获取远端服务器的分支信息。
例如服务器上新增了其他分支,使用 -c 选项同步后,在本地 git 仓库执行 git branch -r 命令看不到服务器新增的分支名。如果不加 -c 选项,那么同步的时候,会打印 “[new branch]” 这样的信息,使用 git branch -r 命令可查看到服务器新增的分支。

--no-tags:don't fetch tags. 该选项指定不获取服务器上的tag信息。

--prune:delete refs that no longer exist on the remote.
如果远端服务器已经删除了某个分支,在 repo sync 时加上 --prune 选项,可以让本地仓库删除对这个分支的跟踪引用。
查看 repo 的 .repo/repo/project.py 源码,这个选项实际上是作为 git fetch 命令的选项来执行。查看 man git-fetch 对自身 --prune 选项的说明如下,可供参考:
-p, --prune
After fetching, remove any remote-tracking references that no longer exist on the remote.

-j JOBS, --jobs=JOBS:projects to fetch simultaneously (default 2).
指定启用多少个线程来同步。
例如上面的 -j 4 指定用4个线程来同步。如果没有提供该选项,默认启用2个线程。
总的来说,在 repo sync -c --no-tags --prune -j 4 命令中,使用 -c 和 --no-tags 选项可以减少需要同步的内容,从而减少要占用的本地代码空间,也可以减少一些同步时间。

使用 -j 选项来指定启用多线程进行同步,可以加快执行速度,也就减少了同步时间。可根据服务器CPU性能设置合适的多线程数目。
使用 --prune 选项去掉已删除分支的跟踪引用,一般不会用到,这个选项可加可不加。
 

相关文章:

  • CUDA C++ 编程指南学习(待更)
  • ubuntu16.04安装ibus拼音 输入法
  • 使用功率器件比如MOSFET瞬态热阻曲线计算参数
  • 【myz_tools】Python库 myz_tools:Python算法及文档自动化生成工具
  • 基于NXP IMX6Q+FPGA全自动血液分析仪解决方案
  • 分布式事务和一致性
  • 基于 Konva 实现Web PPT 编辑器(一)
  • ORB-SLAM3(Failed to load image)问题解决(WSL2配置)
  • 电脑版视频剪辑软件哪个好?适合新手使用的剪辑软件!
  • 贪心算法介绍(Greedy Algorithm)
  • enhanced Input Action IA_Look中Action value引脚没有分割结构体引脚的选项
  • Repeat方法:取模运算教材与Unity控制台输出数值不同的原因
  • Linux 基本指令讲解 上
  • 详解Redis 高可用的方式 Redis Cluster
  • 【Hugging Face】 Hugging Face 公司和 Hugging Face 网站介绍
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • AHK 中 = 和 == 等比较运算符的用法
  • Apache Pulsar 2.1 重磅发布
  • echarts的各种常用效果展示
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • flutter的key在widget list的作用以及必要性
  • IDEA 插件开发入门教程
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java Agent 学习笔记
  • JavaScript HTML DOM
  • PHP 小技巧
  • Python学习之路13-记分
  • Rancher如何对接Ceph-RBD块存储
  • Spark学习笔记之相关记录
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 老板让我十分钟上手nx-admin
  • 类orAPI - 收藏集 - 掘金
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用parted解决大于2T的磁盘分区
  • 使用SAX解析XML
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小试R空间处理新库sf
  • 【干货分享】dos命令大全
  • ​2021半年盘点,不想你错过的重磅新书
  • #java学习笔记(面向对象)----(未完结)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $.ajax,axios,fetch三种ajax请求的区别
  • (10)ATF MMU转换表
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (纯JS)图片裁剪
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十八)Flink CEP 详解
  • (算法二)滑动窗口
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NetCore发布到IIS
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @Autowired 与@Resource的区别
  • @Autowired标签与 @Resource标签 的区别