blob: 95152c6115ac21340e3404a227fa467678334882 [file] [log] [blame] [view]
SUMMARY
=======
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
`manifest`.
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.
CONFIGURATION
=============
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 `platforms/manifest`.
valid value(s) for `toolType` right now is `repo`. It can be left blank to
default to `repo`.
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.
MANUAL TRIGGER
==============
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
```sh
curl -X POST
http://HOST/a/projects/platform%2Fmanifest/branches/master/update_manifest
```
JIRI
====
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.