6.1. Platform Manifest

This section contains direct excerpts and quotes from publicly accessible documentation: Manifest Format — © 2008–2021 Google LLC.

https://github.com/lipro-yocto/lpn-central-repo

<?xml version="1.0" encoding="UTF-8"?>
<manifest>

  <default sync-j="4" revision="master"/>

  <remote fetch="https://git.yoctoproject.org/git" name="yocto"/>
  <remote fetch="https://github.com/openembedded" name="oe"/>
  <remote fetch="https://github.com/meta-qt5" name="qt5"/>
  <remote fetch="https://github.com/lipro-yocto" name="lpy"/>

  <project remote="yocto" name="poky" path="sources/poky"/>
  <project remote="yocto" name="meta-mingw" path="sources/yocto/meta-mingw"/>
  <project remote="oe" name="meta-openembedded" path="sources/openembedded"/>
  <project remote="qt5" name="meta-qt5" path="sources/qt/meta-qt5" />

  <project remote="lpy" name="lpn-central" path="sources/central">
    <copyfile dest="setup-environment" src="scripts/setup-environment"/>
  </project>

</manifest>

https://gerrit.googlesource.com/git-repo/+/master/docs

Manifest Format, Configuration, Hooks

Element manifest

The root element of the file.

Element include

This element provides the capability of including another manifest file into the originating manifest. Normal rules apply for the target manifest to include – it must be a usable manifest on its own.

Attribute name

The name of the manifest file to include, specified relative to the manifest repository’s root.

Element default

At most one default element may be specified. Its remote and revision attributes are used when a project element does not specify its own remote or revision attribute.

Attribute remote

See projectremote. Name of a previously defined remote element. Project elements lacking a remote attribute of their own will use this remote.

Attribute revision

See remoterevision. Project elements lacking their own revision attribute will use this revision.

Attribute sync-j

Number of parallel jobs to use when synching.

Attribute sync-s

Set to true to also sync sub-projects (Git submodules).

Element remote

One or more remote elements may be specified. Each remote element specifies a Git URL shared by one or more projects and (optionally) the Gerrit review server those projects upload changes through.

Attribute name

A short name unique to this manifest file. The name specified here is used as the remote name in each project’s .git/config, and is therefore automatically available to commands like git fetch, git remote, git pull and git push.

Attribute alias

The alias, if specified, is used to override name to be set as the remote name in each project’s .git/config. Its value can be duplicated while attribute name has to be unique in the manifest file. This helps each project to be able to have same remote name which actually points to different remote URL.

Attribute fetch

The Git URL prefix for all projects which use this remote. Each project’s name is appended to this prefix to form the actual URL used to clone the project.

Attribute pushurl

The Git “push” URL prefix for all projects which use this remote. Each project’s name is appended to this prefix to form the actual URL used to git push the project. This attribute is optional; if not specified then git push will use the same URL as the fetch attribute.

Attribute review

Hostname of the Gerrit server where reviews are uploaded to by repo upload. This attribute is optional; if not specified then repo upload will not function.

Attribute revision

Name of a Git branch or specific reference (e.g. master or refs/heads/master, and also possible refs/tags/1.0.0). Tags and/or explicit SHA-1s should work in theory, but have not been extensively tested. Remotes with their own revision will override the defaultrevision.

Element project

One or more project elements may be specified. Each element describes a single Git repository to be cloned into the repo client workspace. You may specify Git submodules by creating a nested project. Git submodules will be automatically recognized and inherit their parent’s attributes, but those may be overridden by an explicitly specified project element.

Attribute name

A unique name for this project. The project‘s name is appended onto its remote’s fetch URL to generate the actual URL to configure the Git remote with. The URL gets formed as:

${remote_fetch}/${project_name}.git
Attribute path

An optional path relative to the top directory of the repo client where the Git working directory for this project should be placed. If not supplied the project name is used. If the project has a parent element, its path will be prefixed by the parent’s.

Attribute remote

Name of a previously defined remote element. If not supplied the remote given by the default element is used.

Attribute revision

Name of the Git branch the manifest wants to track for this project. See remoterevision. If not supplied the revision given by the remote element is used if applicable, else the default element is used.

Attribute sync-s

Set to true to also sync sub-projects (Git submodules).

Element copyfile

Zero or more copyfile elements may be specified as children of a project element. Each element describes a source-destination-pair of files; the src file will be copied to the dest place during repo sync command.

Copying from paths outside of the project or to paths outside of the repo client is not allowed. Directories or symlinks are not allowed. Intermediate paths must not be symlinks either.

Attribute src

The source file; is project relative and must be a file.

Attribute dest

The destination file; is relative to the top of the tree and must be a file. Parent directories will be automatically created if missing.

Element linkfile

It’s just like copyfile and runs at the same time as copyfile but instead of copying it creates a symlink.

The symlink is created at dest (relative to the top of the tree) and points to the path specified by src which is a path in the project. Parent directories of dest will be automatically created if missing. The symlink target may be a file or directory, but it may not point outside of the repo client.