[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…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
