repos

Test Installation Methods Test Suite

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 clone

This 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 in repos.list (including branch/worktree patterns and fetch modes)
  • repos workspace — generate or refresh entire-project.code-workspace
  • repos run — run scripts or explicit commands across managed repos
  • repos create — create missing GitHub repos from repos.list
  • repos codespace — configure devcontainer repository permissions
  • repos 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.

Python package
R package

Installation

Installation guide