Skip to content
goobitsPublic

About

Batch git operations across multiple repositories. One command instead of dozens of cd + git loops.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

repos

Inspect and coordinate Git work across a fleet of repositories.

See what needs attention, save bounded changes, synchronize safe remote work, and keep nested-repository drift visible.

Why repos · Quick start · Daily workflow · Safety model · Documentation


Why repos

A workspace with many Git repositories makes ordinary status, commit, pull, and push work easy to miss or perform in the wrong place. repos discovers the fleet, reports actionable state, and applies explicit Git workflows across the selected repositories.

It does not turn every worktree into one repository. Each repository keeps its own branch, remote, upstream, ignore rules, and commit history.

Quick start

Requires Rust and Cargo 1.78 or newer. Build from this checkout while keeping Cargo output outside the source tree:

export CARGO_TARGET_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/goobits-repos/target"
cargo build --locked --release
"$CARGO_TARGET_DIR/release/repos" --help

install.sh builds and installs the binary into a user or system binary directory. Review it before use: when Rust is absent it can offer to install Rust and update shell configuration.

Daily workflow

repos status --needs-work
repos save "describe the change" --dry-run
repos save "describe the change"
repos sync

The CLI also exposes focused fetch, pull, push, stage, unstage, commit, config, audit, doctor, publish, and subrepository workflows. Use repos <command> --help for exact options.

Safety model

Status and dry-run paths are the preview surfaces. save stages tracked files by default; --all explicitly widens that scope to all non-ignored files. It rejects unresolved conflicts before staging, then commits new work and can push commits that were already locally ahead. Untracked-only files stay untouched by the default save without preventing an existing commit from being published. sync pulls safe remote changes, pushes local commits, and reports nested drift; a dirty repository is neither pulled nor pushed. Missing remotes, upstreams, conflicts, dirty state, and failed inspection remain visible rather than being silently repaired.

Repository discovery does not authorize mutation. Review the selected targets and dry-run output before fleet-wide commands, especially when nested repositories or submodules are present.

Documentation

Development

The project gates formatting, locked Clippy and tests across all targets, features, and doctests, Rust 1.78 compatibility, and the locked dependency set against RustSec advisories and warnings. See AGENTS.md for the local commands. Keep generated Cargo state outside the checkout.

License

MIT © repos contributors.

About

Batch git operations across multiple repositories. One command instead of dozens of cd + git loops.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages