Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Getting Started

Create the config file

Every rsmultigit command reads ~/.config/rsmultigit/config.toml to learn which repositories to operate on. There is no --config flag and no directory scanning: the file is the single source of truth.

The quickest start is the interactive setup, which asks where your repositories are (with tab completion), checks that git repos are really there, and lets you pick the default build tool from a menu:

rsmultigit setup interactive

Or bootstrap the file from the fully commented built-in example and edit the repos list by hand:

mkdir -p ~/.config/rsmultigit
rsmultigit setup config-sample > ~/.config/rsmultigit/config.toml

The minimum useful config is one glob:

repos = ["~/git/*"]

Patterns are shell-expanded, and matches that are not git repositories are ignored. Check what was picked up:

rsmultigit list repos

Checking repository status

See which repos need attention, one line per repo:

rsmultigit status        # shortcut for `rsmultigit git status`
# [/home/me/git/myrepo]
# 2 modified, 1 untracked, ahead 1

Clean, in-sync repos print nothing. Pass --verbose for the full git status -s per-file output instead of the summary.

Count repos with uncommitted changes, untracked files, or unpushed commits:

rsmultigit git count dirty
rsmultigit git count untracked
rsmultigit git count unsynchronized    # repos ahead of or behind their upstream

Each prints the matching repos followed by a matched/total line.

Pulling all repos

rsmultigit git pull
rsmultigit git pull --quiet
rsmultigit -j 8 git pull           # eight repos at a time

Searching across repos

rsmultigit git grep "TODO"
rsmultigit git grep -l "TODO"      # filenames only

Running any command

A single argument is run through the shell; several arguments are executed directly:

rsmultigit run "git log -1 --oneline"
rsmultigit run cargo check

Repos with a .venv get it activated first, so rsmultigit run pytest runs each repo’s own pytest.

Building all projects

rsmultigit build make
rsmultigit build rsconstruct       # only repos with rsconstruct.toml
rsmultigit build                   # uses default_build_method from the config

Keeping shared files identical

Declare the files that must not drift between repos, then check them:

[[check-same]]
name = "gitignore"
select = "*"
path = ".gitignore"
rsmultigit check same              # report every rule
rsmultigit check same --diff       # show what differs
rsmultigit check same --copy       # interactively copy one version over the others

See Configuration for [[check-same]] and [[check-exists]] rules.

Error handling

By default, rsmultigit stops on the first error. To report errors and keep going:

rsmultigit --no-stop git pull