No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitignore
.travis.yml
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README.md
appveyor.yml

README.md

mrh - Multi-(git)Repo Helper

Linux build status Windows 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 or YAML output is desired, use --output-json or --output-yaml flags, respectively.

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 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 and YAML output formats are behind feature flags:

cargo install mrh --features "yaml json"

NOTE: minimum required rustc is v1.21, due to use of Iterator::for_each by structopt.

For library usage, check them API docs.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.