mrh 0.13.2

Crawls filesystem and displays pending status of each git repo found
Documentation

mrh - Multi-(git)Repo Helper

crates.io build status

This repo provides a library that allows crawling a directory and its children for Git repos. It reports if those repos have:

  • uncommitted changes
  • unpushed commits
  • outdated branch
  • added files
  • deleted files
  • renamed files
  • untracked files (can be disabled)
  • uncommitted repos (can be disabled)
  • untagged HEAD (optional)
  • unpushed tags (optional)
  • unpulled tags (optional)
  • unfetched commits (optional)

It also offers a command line tool with all those features, one of which is to show all repos:

$ mrh
foo (uncommitted changes, untracked files, unpushed commits)
bar
baz (untracked files)
qux

Only show those repos that are pending action:

$ mrh --pending
foo (uncommitted changes, untracked files, unpushed commits)
baz (untracked files)

Ignore untracked files in results:

$ mrh --pending --ignore-untracked
foo (uncommitted changes, unpushed commits)

Include repos whose HEAD commits are not tagged:

$ mrh --pending --ignore-untracked --untagged-head
foo (uncommitted changes, unpushed commits, untagged HEAD)
bar (untagged HEAD)

Check which repos have unfetched commits, a relatively slow operation when the remote is on the network:

$ mrh --access-remote ssh-key
qux (unfetched commits)

For cases where JSON output is desired, use --output-json flag.

Notes

  • Ignores unreadable files/directories without warning
  • Ignores bare git repositories

Installation

You will need to first install a few packages before you can build mrh. On Debian/Ubuntu, here how you do:

apt install cmake libssl-dev pkg-config gcc

These are needed by the libssh2-sys crate, which itself is ultimately needed by the git2 crate.

Proceed to build and install mrh (assuming you have the Rust toolchain installed):

cargo install mrh

JSON output format is behind a feature flag:

cargo install mrh --features json

NOTE: minimum required rustc is v1.74, due to clap.

For library usage, check them API docs.

License