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="是否保留(可选)"/>
- 完整示例
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 语法简洁但功能强大,能够高效管理复杂项目的多仓库依赖关系。