repo xml语法
Repo XML 语法详解
Repo 是 Google 为管理多个 Git 仓库而开发的工具,其配置文件使用 XML 格式。最近搞项目,也是刚接触这个,中途查资料学习了一下,这里记录一下:
1. 基本结构
Repo 的清单文件(manifest)通常命名为 default.xml ,基本结构如下:
<?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 仓库:
<remote name="唯一名称" fetch="仓库URL前缀" review="代码审查服务器URL" revision="默认分支" pushurl="推送URL(可选)"/>
2.2 default 元素
设置默认值,会被各项目继承:
<default remote="默认远程名称" revision="默认分支/标签" sync-j="并行同步线程数"sync-c="是否同步标签(布尔值)"sync-s="是否同步子模块(布尔值)"/>
2.3 project 元素
定义要管理的 Git 项目:
<project path="本地路径" name="远程仓库相对路径" remote="远程名称(可选)" revision="分支/标签/SHA1(可选)"groups="分组列表(逗号分隔)"sync-c="是否同步标签(可选)"sync-s="是否同步子模块(可选)"clone-depth="克隆深度(可选)"/>
3. 高级特性
3.1 包含其他清单文件
<include name="another_manifest.xml" />
3.2 扩展项目
<extend-project name="已有项目路径" revision="新分支" groups="新增分组"remote="新远程"/>
3.3 移除项目
<remove-project name="要移除的项目路径" />
3.4 注解元素
<annotation name="注解名称" value="注解值" keep="是否保留(可选)"/>
- 完整示例
<?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 风格斜杠(/)
元素和属性名称区分大小写
注释格式:
<!-- 注释 -->
<include name="custom_projects.xml" />
特殊字符需使用 XML 实体编码
清单文件通常保存在 .repo/manifests/ 目录下
Repo XML 语法简洁但功能强大,能够高效管理复杂项目的多仓库依赖关系。
