repo xml语法

Repo XML 语法详解

Repo 是 Google 为管理多个 Git 仓库而开发的工具,其配置文件使用 XML 格式。最近搞项目,也是刚接触这个,中途查资料学习了一下,这里记录一下:

1. 基本结构

Repo 的清单文件(manifest)通常命名为 default.xml ,基本结构如下:

c 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <!-- 远程仓库定义 -->
  <remote name="origin" fetch="https://android.googlesource.com"  />
  
  <!-- 默认设置 -->
  <default revision="master" remote="origin" sync-j="4" />
  
  <!-- 项目定义 -->
  <project path="build/make" name="platform/build/make" />
</manifest>

2. 主要元素

2.1 remote 元素

定义远程 Git 仓库:

c 复制代码
<remote name="唯一名称" 
        fetch="仓库URL前缀" 
        review="代码审查服务器URL" 
        revision="默认分支" 
        pushurl="推送URL(可选)"/>

2.2 default 元素

设置默认值,会被各项目继承:

c 复制代码
<default remote="默认远程名称" 
         revision="默认分支/标签" 
         sync-j="并行同步线程数"
         sync-c="是否同步标签(布尔值)"
         sync-s="是否同步子模块(布尔值)"/>

2.3 project 元素

定义要管理的 Git 项目:

c 复制代码
<project path="本地路径" 
         name="远程仓库相对路径" 
         remote="远程名称(可选)" 
         revision="分支/标签/SHA1(可选)"
         groups="分组列表(逗号分隔)"
         sync-c="是否同步标签(可选)"
         sync-s="是否同步子模块(可选)"
         clone-depth="克隆深度(可选)"/>

3. 高级特性

3.1 包含其他清单文件

c 复制代码
<include name="another_manifest.xml"  />

3.2 扩展项目

c 复制代码
<extend-project name="已有项目路径" 
               revision="新分支" 
               groups="新增分组"
               remote="新远程"/>

3.3 移除项目

c 复制代码
<remove-project name="要移除的项目路径" />

3.4 注解元素

c 复制代码
<annotation name="注解名称" 
           value="注解值" 
           keep="是否保留(可选)"/>
  1. 完整示例
c 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote name="aosp" fetch="https://android.googlesource.com"  />
  <remote name="github" fetch="https://github.com"  />
  
  <default remote="aosp" revision="android-12.0.0_r1" sync-j="4" />
  
  <project path="build/make" name="platform/build/make" />
  
  <project path="frameworks/base" name="platform/frameworks/base" 
           revision="android-12.0.0_r2" groups="pdk,cts" />
           
  <project path="external/openssl" name="external/openssl" 
           remote="github" revision="OpenSSL_1_1_1-stable" />
           
  <include name="custom_projects.xml"  />
  <!-- 注释  -->
  <annotation name="BUILD_ID" value="SQ1A.211205.008" />
</manifest>

6. 注意事项

default元素只能有一个

路径使用 Unix 风格斜杠(/)

元素和属性名称区分大小写

注释格式:

c 复制代码
<!-- 注释  -->
<include name="custom_projects.xml"  />

特殊字符需使用 XML 实体编码

清单文件通常保存在 .repo/manifests/ 目录下

Repo XML 语法简洁但功能强大,能够高效管理复杂项目的多仓库依赖关系。

相关推荐
code2cat9 天前
Java工具篇之Maven:从pom.xml到测试通过的JAR
xml·java·maven
郭小李11 天前
mybatis的 Mapper.xml语法
xml·java·mybatis
步行cgn11 天前
为什么既要 web.xml 又要 springmvc.xml?能不能只配一个?
xml·前端·hive
SEO_juper13 天前
Go 站点地图生成器:从首页爬全站,一键生成 sitemap.xml
xml·开发语言·人工智能·golang·node.js·seo·外贸独立站
可爱系程序猿15 天前
XML 导入失败并指向 msxml6.dll:用最小样本区分解析错误与组件加载
xml·程序人生·电脑
SEO_juper16 天前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
步行cgn16 天前
Spring MVC 核心配置文件详解:springmvc.xml 每一行配置的意义
xml·spring·mvc
泡海椒17 天前
JQuick-SQL JQuickTable 模型:XML 动态 SQL 的表封装边界
xml·数据库·sql
supabc12318 天前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
zzu123zsw18 天前
当 GPU 加速渲染遇上无头组件:拆解 Yororen UI 在 GPUI 生态下的状态解耦与 XML 模板实践
xml·ui·rust·gui·gpui