3 unstable releases
Uses new Rust 2024
| 0.2.1 | Dec 8, 2025 |
|---|---|
| 0.2.0 | Dec 8, 2025 |
| 0.1.0 | Dec 6, 2025 |
#492 in Concurrency
12KB
250 lines
multipull
Multipull keeps every multi-repo project up to date with one fast, parallel git pull. It scans the given directory, finds direct subdirectories that are git repositories, and runs the same two commands for each of them:
git status --short --branch
git pull --ff-only
Build
cargo build --release
The release binary is written to target/release/multipull.
Install
The easiest way to install the latest published release is from crates.io:
cargo install multipull
It copies the binary into $CARGO_HOME/bin (default ~/.cargo/bin). Ensure that directory is on your PATH.
Usage
multipull [ROOT] [--run] [--sort-by <name|duration>]
ROOT defaults to the current working directory. Multipull only touches the first level of directories inside ROOT.
Options
- Default: dry-run (shows commands but does not run them).
--run: actually run git commands instead of dry-run.--sort-by: choosename(default) ordurationfor the summary table.
Progress behavior
When stdout is a TTY, multipull shows a progress bar and per-repo status lines.
When stdout is not a TTY (e.g., redirected to a file/CI logs), it emits a simple, deterministic per-repo line followed by the full command output.
Summaries and timings
After processing, multipull prints a summary table with repo name, status, exit code, and per-repo duration, plus total runtime. Sort with --sort-by.
Multipull exits with a non-zero status if any repository command fails.
Dependencies
~5–16MB
~156K SLoC