Repo入门:边玩边学
前一篇文章Git入门:边玩边学我们介绍了Git
,那接下来就介绍他的好基友Repo
,Repo
是以 Git
为基础构建的代码库管理工具。Repo
可以在必要时整合多个 Git
代码库,将相关内容上传到版本控制系统。借助单个 Repo
命令,可以将文件从多个代码库下载到本地工作目录。
Repo
命令是一段可执行的 Python
脚本,你可以将其放在路径中的任何位置。
下载Repo
确保主目录下有一个 bin/
目录,并且该目录包含在路径中:
mkdir ~/bin
PATH=~/bin:$PATH
下载 Repo
工具,并确保它可执行:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Repo
命令
使用 Repo
需遵循的格式如下:
repo <COMMAND> <OPTIONS>
可选元素显示在方括号 [ ] 中。例如,许多命令会将项目列表用作参数。你可以为项目指定项目列表,作为名称列表或本地源代码目录的路径列表:
repo sync [<PROJECT0> <PROJECT1> <PROJECTN>]
repo sync [</PATH/TO/PROJECT0> ... </PATH/TO/PROJECTN>]
help
安装 Repo
后,你可以通过在 Repo
树中运行以下命令来获取有关某个命令的信息:
repo help <COMMAND>
例如,以下命令会生成 Repo init
参数的说明和选项列表,该参数会在当前目录中初始化 Repo
。
repo help init
init
repo init -u <URL> [<OPTIONS>]
在当前目录中安装 Repo
。这会创建一个 .repo/
目录,其中包含用于 Repo
源代码和源代码清单文件的 Git
代码库。该 .repo/
目录中还包含 manifest.xml
,这是一个指向 .repo/manifests/
目录中所选清单的符号链接。
选项:
-u:指定要从中检索清单代码库的网址。您可以在 https://android.googlesource.com/platform/manifest 中找到常见清单
-m:在代码库中选择清单文件。如果未选择任何清单名称,则会默认选择 default.xml。
-b:指定修订版本,即特定的清单分支。
sync
repo sync [<PROJECT_LIST>]
下载新的更改并更新本地环境中的工作文件。如果你在未使用任何参数的情况下运行 repo sync
,则该操作会同步所有项目的文件。
upload
repo upload [<PROJECT_LIST>]
对于指定的项目,Repo
会将本地分支与最后一次 repo sync
时更新的远程分支进行比较。Repo
会提示你选择一个或多个尚未上传以供审核的分支。
forall
repo forall [<PROJECT_LIST>] -c <COMMAND>
在每个项目中运行指定的 shell
命令。
prune
repo prune [<PROJECT_LIST>]
删除已合并的项目。
start
repo start <BRANCH_NAME> [<PROJECT_LIST>]
从清单中指定的修订版本开始,创建一个新的分支进行开发。比较常用的是对所有的项目都创建开发分支:
repo start iot --all
status
repo status [<PROJECT_LIST>]
对于每个指定的项目,将工作树与临时区域(索引)以及此分支 (HEAD
) 上的最近一次提交进行比较。在这三种状态存在差异之处显示每个文件的摘要行。
Manifest
(清单)
Repo
用Manifest XML
来管理多个git
项目,以下是项目清单XML
文件的示例:
<?xml version="1.0" encoding="UTF-8"?><manifest><remote fetch="." name="seL4"/><remote fetch="../sel4proj" name="sel4proj"/><default remote="seL4" revision="master"/><project name="musllibc.git" path="projects/musllibc" revision="f58dacf44a679a2d7c10fbb8d8bc8f58e2123791" upstream="sel4"/><project name="riscv-pk" path="projects/riscv-pk" remote="sel4proj" revision="db937e995b09d343fb7146c447b0780ab1dca66b" upstream="fix-32bit"/><project name="seL4.git" path="kernel" revision="757c3ac98246afd0593367f1fa19054316a77495" upstream="master"/><project name="seL4_libs.git" path="projects/seL4_libs" revision="1697cb16ecbc7820cbda78d7c7c1896e884195a1" upstream="master"/><project name="seL4_tools.git" path="projects/tools" revision="930b6467eae8404e4a72555b693120ac0d64fc48" upstream="master"><linkfile dest="CMakeLists.txt" src="cmake-tool/default-CMakeLists.txt"/><linkfile dest="init-build.sh" src="cmake-tool/init-build.sh"/></project><project name="sel4test.git" path="projects/sel4test" revision="dbd96aa862b8519165aaa8ae7bd5a1787048e34a" upstream="master"/><project name="util_libs.git" path="projects/util_libs" revision="c575f7280ce6184dbb2876f83a6c591c91de219e" upstream="master"/>
</manifest>
下面是清单元素的简要概述:
<remote name="seL4" fetch="." />
这里remote
元素指定了远程git仓库。
<project name="musllibc.git" remote="seL4" path="projects/musllibc" revision="sel4"/>
该project
元素声明下面的属性:
name: 远程git服务器的名字
path: 是相对于项目初始化所在目录的存储库检出位置。
revision:指定要使用的存储库版本。支持分支和修订哈希。支持标签,但属性值的结构必须为refs/tags/tagname。
<default revision="master" remote="seL4"/>
设定所有projects
的默认属性值,如果在project
元素里没有指定一个属性,则使用default
元素的属性值。
常见问题
如何检出项目的发行版本?
repo init -u https://github.com/seL4/sel4test-manifest.git -b refs/tags/10.1.1
repo sync
如何更改已签出项目的清单?
repo init -m master.xml
repo sync
这将在清单存储库中把当前清单更改master.xml
如何创建固定清单?
repo manifest -r -o pinned.xml
如何更快步项目
repo init -u https://github.com/seL4/sel4test-manifest.git --no-clone-bundle --depth=1
repo sync --jobs=8 --current-branch --no-clone-bundle
Repo入门:边玩边学相关推荐
- python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)
关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...
- python做电脑软件-程序员带你十天快速入门Python,玩转电脑软件开发(二)
关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...
- python好学嘛-爬虫Python入门好学吗?学什么?
爬虫Python入门好学吗?学爬虫需要具备一定的基础,有编程基础学Python爬虫更容易学.但要多看多练,有自己的逻辑想法.用Python达到自己的学习目的才算有价值.如果是入门学习了解,开始学习不难 ...
- 爬虫好学吗python-爬虫Python入门好学吗?学什么?
爬虫Python入门好学吗?学爬虫需要具备一定的基础,有编程基础学Python爬虫更容易学.但要多看多练,有自己的逻辑想法.用Python达到自己的学习目的才算有价值.如果是入门学习了解,开始学习不难 ...
- python是什么意思中文、好学吗-爬虫Python入门好学吗?学什么?
爬虫Python入门好学吗?学爬虫需要具备一定的基础,有编程基础学Python爬虫更容易学.但要多看多练,有自己的逻辑想法.用Python达到自己的学习目的才算有价值.如果是入门学习了解,开始学习不难 ...
- ironbot智能编程机器人_边玩边学,编程启蒙,IronBot机器人套件视频图文评测
前言 当今世界充满竞争和挑战,你的对手可能不是人.早在2015年,教育部就颁发了指导意见,鼓励以编程为核心的,包括科学(S).技术(T).工程(E).艺术和航空(A),以及数学(M)五个方面的&quo ...
- 中国式家长计算机入门怎么去的,中国式家长新手入门怎么玩_新手入门注意事项...
中国式家长新手入门怎么玩是玩家都比较想知道的,那么安致小编今天就给大家来说明一下中国式家长新手入门注意事项! 中国式家长新手入门注意事项 脑洞 每层都是随机的,没有规律,层数的属性加成意义不大,主要点 ...
- ironbot智能编程机器人_IronBot机器人套件评测:边玩边学 编程启蒙从机器人开始(视频+图文评测)...
前言 当今世界充满竞争和挑战,你的对手可能不是人.早在2015年,教育部就颁发了指导意见,鼓励以编程为核心的,包括科学(S).技术(T).工程(E).艺术和航空(A),以及数学(M)五个方面的&quo ...
- python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)
本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...
最新文章
- 深度学习遇上稀缺数据就无计可施?这里有几个好办法
- 菜鸟学Linux 第033篇笔记 bootloader,inittab
- 「后端小伙伴来学前端了」Vue-Router 路由各种跳转、传参、小知识
- 【Android】3.3 MapFragment的使用
- mysql中group by的排序问题_Mysql之group by 和order by 一起用时的排序问题
- Flash与.NET的通信(三):LoadVars对象的应用
- 如何让五层楼都有wifi?
- 的内怎么放_燕窝买回来怎么炖?资深窝友告诉你!
- 软考高级 真题 2013年下半年 信息系统项目管理师 综合知识
- 【原创】2021-2001重庆统计年鉴面板数据、重庆市统计年鉴、重庆年鉴、重庆区县数据(可直接使用)
- 都说ApiPost香,它到底香在哪里?
- java通过键盘输入数组赋值并交换数组元素最大值和最小值
- 钢铁侠2 蓝光BD高清下载
- 22年5月14日面试随笔
- ThinkPad 水货笔记本
- NVT SDK开关机LOGO替换实践
- 2018.11.03 NOIP模拟 地球发动机(线性dp)
- mysql 0xc0000005_duilib菜单开发遇见“0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突”...
- socket.io搭建聊天室
- 无法激活windows应用商店应用程序,应用进程已启动,但激活请求失败,错误为“应用未启动”
热门文章
- 【前端用法】$.ajax()方法详解,以及$.ajax()标准写法
- 解决新版chrome无法手动拖动安装插件
- SCI投稿过程总结、投稿状态解析、拒稿后处理对策及接受后期相关问答综合荟萃目录
- JavaWeb课程设计-学生信息管理系统(Jsp+Servlet+MySql
- 问卷星突破复制黏贴限制
- 手机连无线网后没有网络连接到服务器,手机无线网络连接上但上不了网
- android 设备管理和凭证,设备管理下载-设备管理安卓版下载-Appfound
- 物联网平台教育培训探讨
- 小程序 js 遍历数组
- 510分学计算机能上哪所大学,浙江全部59所大学排名,可分为6个档次,想去浙江上大学必看...