# qiBuild documentation

# Parsing manifests

## How does it work?

Things happen in several stages.

### Fetching the manifest repository

This is done by `qisrc.sync.fetch_manifest` method.

We just add the manifest repository to the worktree, using

`qisrc.sync.clone_project`, then reset it to the branch the user asked us.

We then mark the project has being a manifest project, so that `qisrc sync` called later can now where to find the manifest XML file

### Manifest XML parsing

This is done by `qisrc.manifest.load` method.

We parse the XML in order to find every project, read what branch they need to track, what are there URLs, and whether or not they are under code review.

If we see them as being under code review, we call `qisrc.review.setup_project`

Once this is done, we call `worktree.set_project_review` so that `qisrc push` does not have to parse the manifest again to see whether or not the project is under code review.

If we see new projects, we add them to the worktree using `qisrc.sync.clone_project` and then call `worktree.set_git_project_config` so that `qisrc sync` does not have to parse the manifest again to get what is the remote branch we should synchronize with.

Changelog CMake index Python index Index