git-repo

Manifest 格式

Manifest 清单仓库和 Manifest 清单文件

定义多仓库关联的清单文件(manifest 文件)保存于一个仓库中,这个仓库称为 manifest 仓库。仓库中默认的 manifest 清单文件名为 default.xml,示例如下。(仓库中可以包含多个 XML 文件,但是除了默认的 default.xml 之外,其他 XML 文件需要通过命令行的相关参数显式的指定。)

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="origin"
       fetch=".."
       revision="master"
       review="https://codeup.aliyun.com" />
  <remote  name="github"
       fetch="https://github.com"
       revision="master"
       review="" />
  <default remote="origin"
           revision="master"
       sync-j="4" />

  <project name="alibaba/git-repo-go" path="git-repo" groups="app">
    <linkfile src="README.md" dest="README.md"></linkfile>
  </project>
  <project name="alibaba/git-repo-go-doc" path="website" groups="app"/>
  <project name="jiangxin/goconfig" path="lib/goconfig" groups="lib" remote="github" />
  <project name="jiangxin/multi-log" path="lib/multi-log" groups="lib" remote="github" />
</manifest>

这是一个标准的 XML 文件,根元素为 manifest,关于该文件格式的解读如下。

remote 元素

一个 Manifest 文件中可以包含多个 remote 元素。每一个 remote 元素定义了一个远程服务器。每个 project 元素都关联唯一一个 remote 元素。remote 元素包括的属性如下:

  • name 定义 remote 的名称。仓库克隆时将以该名称建立和远程仓库的关联。
  • fetch 定义服务器 URL 地址。如果是 fetch 是相对地址,则以 manifest 仓库地址(git-repo init -u <URL> 设定的地址)为基准,计算得出。当一个项目被克隆时,将通过 fetch 定义的服务器 URL 地址和项目 name 字段组合得到仓库的克隆地址。
  • revision 定义项目的默认分支。
  • review 参数设置 git-repo 发动集中式评审的服务器地址。

default 元素

当项目(project)元素没有设置 remote、revison 等属性,则直接使用 default 元素中相关设置。即 default 元素为 project 元素相关属性的缺省值。

project 元素

每一个 project 元素定义一个仓库。其中关键属性如下:

  • 属性 name 既作为项目的名称,又和 remote 的 fetch 字段一起组合出仓库的 URL 地址。
  • 属性 path 是一个相对路径,是仓库在本地工作区的检出路径。
  • 属性 groups 将项目分组,用作项目的筛选。例如在 git repo init -g <gorup 命令中进行设置。
  • 属性 remote 设置项目对应的远程源仓库。

元素 project 还可以嵌套,嵌套内部的 project 路径以嵌套外部项目的路径为基准。

元素 project 还可以包含 linkfile、copyfile 等元素,完成文件的链接和拷贝。

更多示例参见 Android 项目的 manifest 仓库:

地址:https://android.googlesource.com/platform/manifest