Skip to main content

manifest

CLI reference

Description

Inspect and manage manifests. Without a directory-management flag, manifest loads the workspace manifest, fetches remotes, and rewrites each project's revision to the corresponding commit hash, then prints the result (Google or native XML). That path is single-threaded and can take a while on large workspaces. --revision-as-head / -r selects the same rewrite task explicitly.

Separately, manifest manages manifest directories in the user config (named catalogs of known manifest repositories used by init -p): list, list projects, add, or delete.

manifest merge flattens two or more local manifest files into one XML file (ADR-0038). Native XML has no include element; this writes a single file for init / sync.

Usage

esysrepo manifest [options ...]
esysrepo manifest merge FILE FILE... [-o PATH]

Options

Available options:

  • --revision-as-head / -r: Rewrite revisions to commit hashes (same as the default when no directory flag is given)
  • --output-file / -o FILE: Write the rewritten manifest to FILE instead of stdout
  • --list-dirs / -l: List configured manifest directories
  • --list-projects / -p [NAME]: List projects from one or all manifest directories
  • --add-dir / -a NAME: Add a manifest directory; pass SSH and HTTPS URLs as positional arguments (ssh://… and https://…)
  • --del-dir / -d NAME: Delete a manifest directory by name
  • --output-file / -o PATH: For merge, write the combined manifest. PATH is a file, or a folder (existing directory, or a path ending with / or \\). A folder uses .esysrepo.manifest.xml (native) or default.xml (--format google). Omit -o to print to stdout
  • --format native|google: Merge output format (default native). google requires every input to be Google XML
  • --on-conflict fail|prefer-first|prefer-last: Merge collision policy (default fail)
  • --strict: Fail on unknown XML in merge inputs (default tolerant)
  • --folder / -f PATH: Workspace folder (common option; default is the current directory)

Examples

Rewrite the workspace manifest revisions to commit hashes on stdout:

esysrepo manifest

or equivalently:

esysrepo manifest -r

Write the result to a file:

esysrepo manifest -r -o pinned.xml

List configured manifest directories:

esysrepo manifest --list-dirs

List projects from those directories:

esysrepo manifest --list-projects

Add a manifest directory:

esysrepo manifest --add-dir myproj ssh://git@example.com/org/manifest.git https://example.com/org/manifest.git

Delete a manifest directory:

esysrepo manifest --del-dir myproj

Merge two native manifests into one file:

esysrepo manifest merge a.xml b.xml -o combined.xml

Merge into a folder (writes .esysrepo.manifest.xml there):

esysrepo manifest merge a.xml b.xml -o /path/to/ws

Example rewritten Google-style output (abbreviated):

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <remote name="origin" fetch="ssh://git@gitlab.com/libesys"/>
    <default revision="refs/heads/master" remote="origin" sync-j="4"/>
    <project path="." name="esysbuild/dev" revision="1c755ba07965fdb0c43ae5f575abd9326bed1b83"/>
    <project path="src/esysrepo" name="esysrepo/esysrepo" revision="ccd20a0490ed1e2fb4769ca8fcd9a22ba444ec8d"/>
</manifest>