repo 工具使用手册【转】
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/counsellor/article/details/86591081
0x00 前言
该说点什么好呢,看到这个系列的第一篇的时间戳,已经是2年前了,生活总是这样要温故知新。安卓的项目已经从30个G变成了40多G,完全就是一个monstor一样的进化过程,不得不承认,能维护这么庞大的开源代码,是一件很不可思议的事情。
前一段时间微软宣布放弃edge浏览器内核的开发,准备启用chrome内核,一方面说明浏览器的复杂程度已经超出了自己预期成本,另一方面体现了开源项目的生命力。
0x01 repo工具
需求:在一个项目中包含了很多git仓库,一旦想更新代码,岂不是要到每个git目录下分别pull一遍代码?
当然,快捷的方式是写一个shell脚本,一键pull多个仓库。
repo就是这样的增强版工具。Google使用Python脚本统一管理多个git仓库,用于下载,回退版本等操作。
0x02 安装repo
工具比较小,而且没啥更新,直接用国内的即可。
创建工具所在bin目录
mkdir ~/bin
1
向zsh导入执行路径
比较习惯使用oh-my-zsh,所以需到在~/.zshrc中添加一句
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/home/counsellor/.oh-my-zsh"
export PATH=~/bin:$PATH # 这句是自己加的
下载repo
国内下载地址(推荐)
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
异世界下载地址
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
增加执行权限
chmod a+x ~/bin/repo
0x03 repo init
repo init的过程主要是下载一堆manifest配置文件,项目的remote url,项目包含的所有git仓库的地址,项目的版本等等。
建立工作目录
mkdir aosp
cd aosp
初始化仓库
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
如果需要某个特定的 Android 版本(列表):
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r30
真 · 初始化
repo init --depth=1 -u https://aosp.tuna.tsinghua.edu.cn/platform/manifestt -b android-9.0.0_r30
--depth=1 表示只下载最近版本的代码,只保留最近的commit版本。
使用--depth 可以节省本地磁盘空间,加速下载,对于开发够用了。
0x04 repo sync
他喵的,我初始化的时候指定了android -4的版本,结果发现同步过程有android-9.0.0的日志,down了3天3夜,140多G还没有同步完,眼泪哗哗的。
同步命令
repo sync
多线程并发同步
特步 - 飞一般的感觉
repo sync -j`nproc`
-j 参数指定同时运行多少个job,nproc是当前计算机的处理单元个数
这个命令的完整意思就是,开足马力,带你飞。
真 · 同步
repo sync -c -f --no-tags --no-clone-bundle -j`nproc`
-c 或者--current-branch表示只拉取当前分支代码,坑爹啊,我在init指定了分支,同步的时候,你却悄悄给我拉些没用的。
--no-tags 不拉取tags,tag虽然不大,但架不住多
--no-clone-bundle 不使用clone.bundle,clone.bundle是git bundle一样的打包文件,使用bundle文件可以做cdn下载的分流,cdn听上去不错,但是如果cdn到google的服务器,或者clone.bundle本来就占空间,不是很划算,所以不使用clone.bundle
-f 如果sync失败,继续同步(想想当年LZ写了一个while循环解决同步失败终止问题的)
--force-sync 如果文件目录有差异,强制覆盖掉
sync 失败的时候,就能想到-f
0x05 repo回滚
repo sync -d 可以将所有git 仓库的HEAD重置为manifest文件的指定版本。同时,处于暂存或者修改的目录变化不会被重置。
当然,-d 重置版本的妙用就是回滚,结合以下命令,可以让被指飞的git仓库门,全部恢复成干净的代码。
repo sync -d
repo forall -c 'git reset --hard' # Remove all working directory (and staged) changes.
repo forall -c 'git clean -f -d' # Clean untracked files
0x06 小结
repo主要用到两个功能,一个是init项目,另一个是下载项目;
AOSP项目本身很庞大,为了节约空间,尽量关注一个版本的代码比较好;
repo的本质是git,所以是可以使用代理【传送门】下载asop的。
0x07 参考文献
https://github.com/zawzaww/aosp-android
https://blog.csdn.net/zerooffdate/article/details/79348925
https://blog.csdn.net/u012842255/article/details/68941379
https://stackoverflow.com/questions/23300245/what-to-do-about-curl-clone-bundle-error-on-aosp-repo-sync
https://blog.csdn.net/mmh19891113/article/details/78476580
http://www.mashangxue123.com/git/3727190879.html
https://www.git-tower.com/learn/git/faq/detached-head-when-checkout-commit
————————————————
版权声明:本文为CSDN博主「counsellor」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/counsellor/article/details/86591081
repo 工具使用手册【转】相关推荐
- repo 工具使用手册
0x00 前言 该说点什么好呢,看到这个系列的第一篇的时间戳,已经是2年前了,生活总是这样要温故知新.安卓的项目已经从30个G变成了40多G,完全就是一个monstor一样的进化过程,不得不承认,能维 ...
- Myisamchk小工具使用手册
Myisamchk小工具使用手册 =========================================================== 作者: logzgh(http://logzg ...
- centos7常用工具安装手册
centos7常用工具安装手册 文章目录 1. CentOS 7安装 ifconfig 2. CentOS 7 上安装vim 3. centos7 安装wget 4. CentOS7下zip解压和un ...
- tpch测试mysql_MySQL-tpch 测试工具简要手册
tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能.它包含了一 ...
- java test使用手册,啄木鸟(woodpecker)自动化测试工具使用手册
啄木鸟(woodpecker)自动化测试工具使用手册 GitHub下载地址:https://github.com/xudashen/woodpecker 微云下载地址:链接:https://share ...
- Android内核开发:理解和掌握repo工具
由于Android源码是用repo工具来管理的,因此,搞Android内核开发,首先要搞清楚repo是什么东西,它该怎么使用?作为<Android内核开发>系列文章的第二篇,我们首先谈谈对 ...
- 计算机专业使用的工具,电子投标工具使用手册计算机软件及应用it计算机专业资料.doc...
电子投标工具使用手册计算机软件及应用it计算机专业资料 国信创新电子[投标工具]使用手册 PAGE 9 TOC \o "1-3" \h \z \u HYPERLINK \l &qu ...
- tpch测试mysql_MySQL数据库之MySQL-tpch 测试工具简要手册
本文主要向大家介绍了MySQL数据库之MySQL-tpch 测试工具简要手册 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. tpch是TPC(Transaction Proce ...
- Android内存泄漏检测工具使用手册
Android内存泄漏检测工具使用手册 前言 LeakCanary 在Android中接入LeakCanary LeakCanary内存泄漏分析 内存泄漏上报到服务端 Shark Shark分析当前应 ...
最新文章
- Netty Channel源码分析
- php数组排序面试题,PHP按子数组值对数组排序
- mybatisplus的详细使用(自动填充,乐观锁,分页,条件查询)
- Response.ContentType 详细列表
- 一款不错的网站压力测试工具webbench
- Linux memcached
- Linux系统编程2:基础篇之详解Linux中的权限问题
- prototype.js 源码解读v1.3.1版本
- c# c均值聚类及DBSCAN聚类
- 红橙Darren视频笔记 OKHttp基本使用 对http框架进行封装 链式调用
- docx文档怎么排列图片_格式转换太麻烦?仅需一行命令,搞定图片、音频、视频、文本批量转换!...
- SAP自学指南:案例公司的概括
- OpenCV-风景—天空滤镜
- onClick,onServerClick,onClientClick
- [译] 在浏览器里使用 TenserFlow.js 实时估计人体姿态
- Mysql主从同步及主从同步延迟解决方案
- 一文介绍解银行卡验证api接口详情
- .NET方面的框架的整理和总结
- Redis集群 install安装
- 如何浏览自己的新浪微博图床
热门文章
- 2009.02.24 奥巴马总统发表国情咨文(全文)
- java设计模式——浅显易懂之七大原则
- 0-1整数规划的LINGO求解
- 解忧杂货店—你的问题,我来解答
- H3C_交换机_二层/三层链路聚合
- 你看好我国网约车生态吗?
- “Spark上流式机器学习算法实现”终期检查报告
- SETCLIENTID
- 颠覆性AI程序:人工智能如何推动天文学创新?
- Visio 2010、2013中找不到“拆分”,“联合”,“相交”等开发工具