Skip to content

cloninator

build lint tests license codecov readthedocs pypi downloads

A CLI tool to manage Git repositories through YAML configuration.

cloninator allows you to define your Git repositories once in a YAML configuration file, then clone them all with a single command. Perfect for setting up development environments across multiple machines or managing large collections of repositories.

Features

  • Bulk cloning: Clone all configured repositories with one command
  • Multiple remotes: Automatically configure origin, upstream, and other remotes
  • Post-checkout automation: Run setup commands after cloning (e.g., pip install, npm install)
  • Nested organization: Mirror your desired directory structure in config
  • Split configurations: Organize configs across multiple files (personal, work, etc.)
  • Config generation: Scan existing repos to auto-generate configuration
  • Idempotent: Safe to run repeatedly; skips already-cloned repos

Quick Example

# ~/.config/cloninator/config.yaml
/root: ~/projects

personal:
    myproject:
        /remotes:
            - name: origin
              url: git@github.com:user/myproject.git

work:
    company-repo:
        /remotes:
            - name: origin
              url: git@gitlab.com:company/repo.git
            - name: upstream
              url: git@gitlab.com:upstream/repo.git
        /post_checkout:
            - pip install -r requirements.txt
$ cloninator clone
🟢 Cloning git@github.com:user/myproject.git at ~/projects/personal/myproject...
🟢 Cloning git@gitlab.com:company/repo.git at ~/projects/work/company-repo...
🟢 Adding remote upstream at git@gitlab.com:upstream/repo.git for ~/projects/work/company-repo...
🟢 Running post-checkout commands ['pip install -r requirements.txt'] for ~/projects/work/company-repo...

Getting Started

User Guide

Reference