Thanks to visit codestin.com
Credit goes to lib.rs

#git #git-pull #multi-repo #parallel #date

app multipull

Multipull keeps every multi-repo project up to date with one fast, parallel git pull

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

MIT license

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: choose name (default) or duration for 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