repos
repos is a Go command-line utility for managing multiple Git repositories as a unified workspace from a single repos.list file.
Quick Start
Create a repos.list file in your project directory listing the repositories you want:
myorg/data-curation
myorg/analysis
myorg/documentation
hf:datasets/huggingface/stack
Hugging Face entries (hf:...) require huggingface-cli (pip install huggingface_hub[cli]).
Then run:
repos cloneThis clones all listed repositories into the parent directory of your current location.
By default, repos clone uses --fetch-all-deferred: a fast single-branch clone plus immediate wildcard fetch-refspec restoration. You can also use --fetch-single (strict isolation) or --fetch-all (full clone upfront).
Commands and capabilities
repos clone— clone repos listed inrepos.list(including branch/worktree patterns and fetch modes)repos workspace— generate or refreshentire-project.code-workspacerepos run— run scripts or explicit commands across managed reposrepos create— create missing GitHub repos fromrepos.listrepos codespace— configure devcontainer repository permissionsrepos install-r-deps— install R dependencies across managed repos
repos.list supports specific branches (owner/repo@branch), fallback @branch entries, Hugging Face entries (hf:owner/repo@revision), worktrees, visibility flags, and global flags. → repos.list reference
IDE integration — generate a VS Code multi-root workspace file (repos workspace) and configure GitHub Codespaces authentication (repos codespace). → VS Code integration
Run a pipeline across all repos — run run.sh (or another script), or run an explicit command in each repo. → Running pipelines
Language Packages
Use repos directly from R or Python — wrappers dispatch to the installed CLI.