The SuperManifest plugin is for projects that use the ‘repo’ tool to piece together a tree of git repositories. The repo tool reads an XML file that describes the layout of the tree.
The file is usually called
default.xml, and the repository is usually called
Notable projects that use ‘repo’ include the Android Open Source Project.
The plugin will update a superproject to contain the submodules defined in the manifest XML file whenever the manifest repo is changed.
It should be configured by adding
supermanifest.config to the
All-Projects project. The format for configuration is as follows:
[superproject "submodules:refs/heads/nyc"] srcRepo = platforms/manifest srcRef = refs/heads/nyc srcPath = manifest.xml toolType = repo
this configures a repository called
submodules to have a branch
nyc, for which the contents corresponds to the manifest file
manifest.xml on branch
refs/heads/nyc in project
valid value(s) for
toolType right now is
repo. It can be left blank to default to
The plugin supports the following options:
groups (defaults to
default). Sets the groups setting for JGit's RepoCommand
recordSubmoduleLabels (defaults to false). Sets recordSubmoduleLabels setting for JGit's RepoCommand
ignoreRemoteFailures = true (defaults to false). Sets ignoreRemoteFailures. Setting it true will cause repos that are not accessible to be ignored.
For the destination branch, you may also specify
refs/heads/* to copy all branches in the manifest repository. In this case the
srcRef field is not required (it will be ignored if present).
Branches that match the srcRef can still be skipped with the
exclude option. Its value is a comma-separated list of refs or ref patterns. Both of them fully qualified (i.e. with the
refs/heads/ prefix). Note that git ref patterns allow only one ‘*’.
[superproject "submodules:refs/heads/*"] srcRepo = platforms/manifest srcPath = manifest.xml exclude = refs/heads/ignoreme, refs/heads/*-release, refs/heads/auto-*
This plugin bypasses visibility restrictions, so edits to the manifest repo can be used to reveal existence of hidden repositories or branches.
Users that have the
administrateServer permission may simulate an update to the manifest repository. This is useful for debugging, and provides diagnostics that are otherwise written into the server logs. To do so, issue the following call
curl -X POST http://HOST/a/projects/platform%2Fmanifest/branches/master/update_manifest
There is also support for the Jiri manifest file used in the Fuchsia OS.
[superproject "submodules:refs/heads/master"] srcRepo = platforms/manifest srcRef = refs/heads/master srcPath = manifest.xml toolType = jiri
TODO(anmittal): provide more documentation.