[Repo Git] manifests的写法
-
manifests是个啥-
在
Repo中manifests描述了Repo客户端的结构,也就是可以从manifests中知道各个模块的代码应该从代码管理仓库当中哪个位置去获取。 -
manifests的基本结构是一个Git存储库,在顶层目录中持有一个default.xml文件。
由于
manifests保存在Git存储库中,在repo sync期间会同时将manifests的版本拉到最新 -
-
manifests格式<!DOCTYPE manifest [<!ELEMENT manifest (notice?,remote*,default?,manifest-server?,remove-project*,project*,extend-project*,repo-hooks?,include*)><!ELEMENT notice (#PCDATA)><!ELEMENT remote EMPTY><!ATTLIST remote name ID #REQUIRED><!ATTLIST remote alias CDATA #IMPLIED><!ATTLIST remote fetch CDATA #REQUIRED><!ATTLIST remote pushurl CDATA #IMPLIED><!ATTLIST remote review CDATA #IMPLIED><!ATTLIST remote revision CDATA #IMPLIED><!ELEMENT default EMPTY><!ATTLIST default remote IDREF #IMPLIED><!ATTLIST default revision CDATA #IMPLIED><!ATTLIST default dest-branch CDATA #IMPLIED><!ATTLIST default upstream CDATA #IMPLIED><!ATTLIST default sync-j CDATA #IMPLIED><!ATTLIST default sync-c CDATA #IMPLIED><!ATTLIST default sync-s CDATA #IMPLIED><!ATTLIST default sync-tags CDATA #IMPLIED><!ELEMENT manifest-server EMPTY><!ATTLIST manifest-server url CDATA #REQUIRED><!ELEMENT project (annotation*,project*,copyfile*,linkfile*)><!ATTLIST project name CDATA #REQUIRED><!ATTLIST project path CDATA #IMPLIED><!ATTLIST project remote IDREF #IMPLIED><!ATTLIST project revision CDATA #IMPLIED><!ATTLIST project dest-branch CDATA #IMPLIED><!ATTLIST project groups CDATA #IMPLIED><!ATTLIST project sync-c CDATA #IMPLIED><!ATTLIST project sync-s CDATA #IMPLIED><!ATTLIST project sync-tags CDATA #IMPLIED><!ATTLIST project upstream CDATA #IMPLIED><!ATTLIST project clone-depth CDATA #IMPLIED><!ATTLIST project force-path CDATA #IMPLIED><!ELEMENT annotation EMPTY><!ATTLIST annotation name CDATA #REQUIRED><!ATTLIST annotation value CDATA #REQUIRED><!ATTLIST annotation keep CDATA "true"><!ELEMENT copyfile EMPTY><!ATTLIST copyfile src CDATA #REQUIRED><!ATTLIST copyfile dest CDATA #REQUIRED><!ELEMENT linkfile EMPTY><!ATTLIST linkfile src CDATA #REQUIRED><!ATTLIST linkfile dest CDATA #REQUIRED><!ELEMENT extend-project EMPTY><!ATTLIST extend-project name CDATA #REQUIRED><!ATTLIST extend-project path CDATA #IMPLIED><!ATTLIST extend-project groups CDATA #IMPLIED><!ATTLIST extend-project revision CDATA #IMPLIED><!ATTLIST extend-project remote CDATA #IMPLIED><!ELEMENT remove-project EMPTY><!ATTLIST remove-project name CDATA #REQUIRED><!ELEMENT repo-hooks EMPTY><!ATTLIST repo-hooks in-project CDATA #REQUIRED><!ATTLIST repo-hooks enabled-list CDATA #REQUIRED><!ELEMENT include EMPTY><!ATTLIST include name CDATA #REQUIRED> ]>-
<manifest> 配置的顶层元素 -
<remote> 可以指定一个或者多个远程仓库,每一个remote元素都指定了项目上传或者下载的地址。-
<name> 必填 指定该<remote>元素的名称,该值会被各个项目中.git/config引用,用于git pull、git fetch等操作。 -
<alias> 设定<name>元素的别名,<name>元素在manifests中必须是唯一的,但是该元素可以重复出现在manifests中。 -
<fetch> 必填 该<remote>元素的Git URL前缀,Gitlab中有群组,也就是群组的链接,例:https://android.googlesource.com/ -
<pushurl> 用于git push时推送的URL前缀,如果没有指定,那就是使用<fetch>元素的值。 -
<review> 指定gerrit的服务器名,用于repo upload操作。如果没有指定,则repo upload没有效果。 -
<revision> Git 分支的名称(例如master或refs/heads/master)。具有自己版本的遥控器将覆盖默认版本。
-
-
<default> 设定所有projects的默认属性值,如果在<project>元素里没有指定一个属性,则使用<default>元素的属性值。-
<remote> 远程服务器的名字,<remote>元素的<name>元素,<project>元素没有指定<name>则使用该值。 -
<revision> 可以指定分支或者标签,如果<project>元素里没有指定,就用这里的值。 -
<dest-branch> Git分支的名称(例如master)。如果没有设置自己的目标分支的<project>元素将继承此值。如果未设置此值,则项目将默认使用版本。 -
<upstream> Git ref的名称,其中可以找到sha1。在-c模式下同步锁定修订manifests时使用,以避免必须同步整个ref空间。未设置自身上游的项目元素将继承此值。 -
<sync-j>repo sync时默认并行的核数,等同于repo sync -j。 -
<sync-c> 设置为 true 时,仅同步指定的 Git 分支,而不是整个 ref 空间。如果<project>元素没有指定<sync-c>元素,则使用此值。 -
<sync-s> 设置为true时,同时同步子项目。 -
<sync-tags> 将其设置为false,则只同步给定的Git分支(在revision属性中指定),而不同步其他ref标签。
-
-
<manifest-server> 它的url属性用于指定manifest服务的URL,通常是一个XML RPC 服务 -
<project> 单独Git 项目-
<name> 必填 项目的名称,用于和<remote>元素下的<fetch>元素值合成Git URL。 -
<path> clone到本地的目录,如果没有指定则在<name>元素值的文件夹下。 -
<remote> 远程服务器的名字,<remote>元素的<name>元素。 -
<revision> 指定分支或者标签,分支:refs/heads/master,标签:refs/tags/tag -
<dest-branch> Git分支的名称(例如master)。 -
<groups> 列出<project>所属的组,以空格或者逗号分隔多个组名。所有的<project>都自动属于"all"组。每一个<project>自动属于name:‘name’ 和path:'path’组。例如,它自动属于default, name:monkeys, and path:barrel-of组。如果一个project属于notdefault组,则,repo sync时不会下载 -
<sync-c> 如果设置为true,则只同步指定的分支(revision 属性指定),而不是所有的ref内容。 -
<sync-s> 如果设置为true,则会同步git的子项目 -
<upstream> Git ref的名称,其中可以找到sha1。在-c模式下同步锁定修订manifests时使用,以避免必须同步整个ref空间。 -
<clone-depth> 设置获取此项目使用的深度。如果已指定,此值将覆盖命令行中通过--depth 选项给repo init 指定值。[机器翻译] -
<force-path> 将此属性设置为 true 可强制此项目根据其路径属性(如果提供)而不是名称属性创建本地镜像存储库。此属性仅适用于本地镜像同步,在同步客户端工作目录中的项目时将忽略它。[机器翻译]
-
-
<extend-project>修改已命名项目的属性。此元素在本地清单文件中最为有用,可以修改现有项目的属性而不必完全替换现有的项目定义。这使得本地清单更加健壮,不易受到原始清单更改的影响。[机器翻译]
-
<annotation> 一个项目元素可以指定零个或多个注释元素作为其子元素。每个元素描述了一个名称-值对,在“forall”命令期间,该名称-值对将带有REPO__前缀导出到每个项目的环境中。此外,还有一个可选属性“keep”,它接受不区分大小写的值“true”(默认值)或“false”。此属性确定在使用清单子命令导出时是否保留注释。[机器翻译] -
<copyfile> 项目元素可以指定零个或多个copyfile元素作为子元素。每个元素描述一个源文件和目标文件对;在repo同步命令执行期间,将“src”文件复制到“dest”位置。[机器翻译] -
<linkfile> 这就像是复制文件,并与复制文件同时运行,但它不复制文件,而是创建一个符号链接。符号链接在“dest”(相对于树的顶部)创建,并指向由“src”指定的路径,该路径是项目中的一个路径。
如果“dest”的父目录缺失,将自动创建。
符号链接的目标可以是一个文件或目录,但它不能指向存储库客户端之外的位置。[机器翻译]
-
<remove-project> 从内部的manifest表中删除指定的<project>。经常用于本地的manifest文件,用户可以替换一个<project>的定义 -
<include> 通过<name>属性可以引入另外一个manifest文件(路径相对与当前的manifest.xml 的路径)-
<name> 引入另外一个manifest文件名
-
-
-
使用例子
Reference:https://www.cnblogs.com/helloworldtoyou/p/6430545.html
<?xml version="1.0" encoding="UTF-8"?> <manifest><remote name="github" // 远程服务器名称是“github”,后面用github表示fetchfetch=".." // 获取数据的位置是"..",上一级目录review="review.cyanogenmod.org" /> // gerrit审核的位置<remote name="private" // 远程服务器名称“private”fetch="ssh://git@github.com" /> // 从”ssh://git@github.com下载代码<remote name="aosp" // aospfetch="https://android.googlesource.com" // 代码下载地址review="android-review.googlesource.com"revision="refs/tags/android-7.1.1_r6" /> // 默认的git分支<default revision="refs/heads/cm-14.1" // 默认的代码下载地址remote="github" // github,表示上面的remote设置的name="github"的一项,那么下载的地址fetch就是”..“sync-c="true" // 只同步指定的分支sync-j="4" /> // repo sync 默认的并行数目// path:将代码下载到本地的build目录中 // name:${remote fetch}/${project name}.git // remote 没有指定,那么久采用default地址,name=github,从”.."上一层目录下载。 // 结合name的值,就从../CyanogenMod/android_build.git这个仓库下载地址。查看作者github仓库,就能找到android_build这个仓库。<project path="build" name="CyanogenMod/android_build" groups="pdk,tradefed"><copyfile src="core/root.mk" dest="Makefile" /></project><project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" remote="aosp" /><project path="build/kati" name="CyanogenMod/android_build_kati" groups="pdk,tradefed" /><project path="build/soong" name="platform/build/soong" groups="pdk,tradefed" remote="aosp" ><linkfile src="root.bp" dest="Android.bp" /><linkfile src="bootstrap.bash" dest="bootstrap.bash" /></project><project path="abi/cpp" name="platform/abi/cpp" groups="pdk" remote="aosp" /><project path="art" name="CyanogenMod/android_art" groups="pdk" /><project path="bionic" name="CyanogenMod/android_bionic" groups="pdk" />... -
总结
对于
manifests,方便了开发者在一个项目需要控制多个代码仓库对代码版本的控制,而且manifests使用的xml格式的文档,对于用户而言,上手简单。
https://gerrit.googlesource.com/git-repo/+/refs/heads/master/README.md
https://blog.csdn.net/wwwlyj123321/article/details/122361538
相关文章:
[Repo Git] manifests的写法
manifests是个啥 在Repo中manifests描述了Repo客户端的结构,也就是可以从manifests中知道各个模块的代码应该从代码管理仓库当中哪个位置去获取。 manifests的基本结构是一个Git存储库,在顶层目录中持有一个default.xml文件。 由于m…...
位置编码与长度外推
位置编码 位置编码从前到后包括:绝对位置编码、余弦位置编码、旋转位置编码、ALiBi相对位置编码。 1 绝对位置编码(Absolute Positional Encoding) 应用的模型:BERT、GPT等Transformer基础模型广泛使用绝对位置编码来处理序列数据。 算法思想:绝对位置编码通过为序列中的…...
Linux信号补充——信号发送和保存
三、信号的发送与保存 3.1信号的发送 必须有操作系统来保存信号,因为他是管理者; 信号给进程的task_struct发送信号,在task_struct中维护了一个整数signal有0-31位,共32个bit位;对于信号的管理使用的是位图结…...
Vue3 中应该使用 Ref 还是 Reactive?
一、引言 在Vue 3中,构建响应式数据结构是构建用户界面和交互体验的核心部分。而在创建这些响应式数据时,我们有两个主要工具:reactive和ref。选择使用哪一个,实际上取决于你的数据结构和访问需求。 reactive主要用于处理复杂的数…...
红外相机和RGB相机标定:实现两种模态数据融合
1. 前期准备 RGB相机:森云智能SG2-IMX390,1个红外相机:艾睿光电IR-Pilot 640X-32G,1个红外标定板:https://item.taobao.com/item.htm?_ujp3fdd12b99&id644506141871&spma1z09.2.0.0.5f822e8dKrxxYI 2.操作步…...
前端项目,个人笔记(五)【图片懒加载 + 路由配置 + 面包屑 + 路由行为修改】
目录 1、图片懒加载 步骤一:自定义全局指令 步骤二:代码中使用 编辑步骤三:效果查看 步骤四:代码优化 2、封装组件案例-传对象 3、路由配置——tab标签 4、根据tab标签添加面包屑 4.1、实现 4.2、bug:需要…...
【MySQL】2.MySQL数据库的基本操作
目录 数据库基本操作 查看数据库信息 查看数据库结构 显示数据表的结构(字段) 常用的数据类型 数据库管理操作 SQL语句概述 SQL分类 1.DDL:数据定义语言 1.1创建数据库和表 创建数据库 创建数据表 1.2删除数据库和表 删除数据表…...
常见技术难点及方案
1. 分布式锁 1.1 难点 1.1.1 锁延期 同一时间内不允许多个客户端同时获得锁; 1.1.2 防止死锁 需要确保在任何故障场景下,都不会出现死锁; 1.2.3 可重入 特殊的锁机制,它允许同一个线程多次获取同一个锁而不会被阻塞。 1.2…...
c#关键字 static
static 修饰符可用于声明 static 类。 在类、接口和结构中,可以将 static 修饰符添加到字段、方法、属性、运算符、事件和构造函数。 static 修饰符不能用于索引器或终结器 尽管类的实例包含该类的所有实例字段的单独副本,但每个 static 字段只有一个副…...
redis 如何保证数据同步(数据变化时)
redis 如何保证数据同步(数据变化时) 思路 1.新增、删除和修改都先对数据库进行操作,这时数据库的数据将域缓存中数据不同。 2.数据库进行变动后,返回结果,根据返回的结果判断数据库操作是否成功。 3.如果数据库操…...
Ubuntu18.04桌面版设置静态IP地址
引用: Ubuntu配置静态IP_ubuntu配置静态ip地址-CSDN博客 正文 默认Unbuntu 18.04 Desktop桌面版使用 netplan 管理网卡网络地址。使用Unbuntu 18.04 桌面版配置,可以通过桌面上的设置图标配置网卡的静态IP地址。 点击桌面右上角下拉框,点击“设置”按…...
Aztec的客户端证明
1. 引言 隐私保护 zk-rollup 的证明生成与通用 zk-rollup 的证明生成有很大不同。原因是给定交易中存在特定数据(由私有函数处理),我们希望保持完全私有。在本文中,我们探讨了用于证明私有函数正确执行的客户端证明生成ÿ…...
面试官:小伙子知道synchronized的优化过程吗?我:嘚吧嘚吧嘚,面试官:出去!
写在开头 面试官:小伙子,多线程中锁用过吗? 我:那是自然! 面试官:那你知道synchronized的优化吗? 我:synchronized作为重锁,开销大,在早期不被推荐使用&…...
100天精通风控建模(原理+Python实现)——第23天:风控建模中的贝叶斯优化是什么?怎么实现?
在当今风险多变的环境下,风控建模已经成为金融机构、企业等组织的核心工作之一。在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述风控建模中的召回率是什么,怎么实现。并提供风控建模原理和Python实现文章清单。 之前已经阐述了100天精通…...
Http 超文本传输协议基本概念学习摘录
目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字…...
模拟-算法
文章目录 替换所有的问号提莫攻击Z字形变换外观数列数青蛙 替换所有的问号 算法思路: 从前往后遍历整个字符串,找到问号之后,就遍历 a ~ z 去尝试替换即可。 class Solution {public String modifyString(String s) {char[] ss s.toCharA…...
深入了解鸿鹄工程项目管理系统源码:功能清单与项目模块的深度解析
工程项目管理软件是现代项目管理中不可或缺的工具,它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件,该软件采用先进的Vue、Uniapp、Layui等技术框架,涵盖了项目策划决策、规划设计、施工建设到竣工交付…...
Unbuntu20.04 git push和pull相关问题
文章目录 Unbuntu20.04 git push和pull使用1.下载[Git工具包](https://git-scm.com/downloads)2.建立本地仓库3.将本地仓库与github远程仓库关联4.将本地仓库文件上传到github远程仓…...
hive SQL 移位、运算符、REGEXP正则等常用函数
orderflag & shiftleft(1,14) shiftleft(1,14) SQL中使用的运算符号详解_sql中各种符号-CSDN博客 Hive函数_hive shift-CSDN博客 (内建函数(类型排序)_云原生大数据计算服务 MaxCompute(MaxCompute)-阿里云帮助中心)...
33-Java服务定位器模式 (Service Locator Pattern)
Java服务定位器模式 实现范例 服务定位器模式(Service Locator Pattern)用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术在首次请求某个服务时,服务定位器在 JNDI…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
