repositories: src/data/dataset: type: tar url: https://example.com/releases/dataset-2024.tar.gz version: dataset-2024 # strip-prefix during extraction
version: for tar and zip is a strip-prefix string, gaal removes that leading directory during extraction so the contents land cleanly under src/data/dataset/.
A first sync clones (or extracts) each entry into its destination path.
A subsequent sync fast-forwards or re-extracts based on version: and the remote state.
If the destination already exists and is not empty, gaal refuses to clone into it.
For existing Git checkouts, the working copy’s origin is authoritative. If gaal.yaml and origin disagree, sync stops with a remote URL mismatch error.
--dry-run reports + clone, ~ update, or = unchanged per entry.
Removing a repository entry from gaal.yaml does not delete its directory, --prune ignores repositories.
gaal owns the contents of each repository directory. Don’t make local edits inside a managed path, they’ll be lost on the next update. Use a separate working clone for development.