#git-repository #git #commit #tags #repos #optional #remote

bin+lib mrh

Crawls filesystem and displays pending status of each git repo found

43 releases

0.13.2 Mar 25, 2024
0.13.0 Oct 4, 2023
0.12.1 Feb 2, 2023
0.11.1 Oct 11, 2022
0.4.0 Nov 29, 2017

#1474 in Command line utilities

Download history 12/week @ 2024-02-15 15/week @ 2024-02-22 3/week @ 2024-02-29 9/week @ 2024-03-07 4/week @ 2024-03-14 189/week @ 2024-03-21 50/week @ 2024-03-28 14/week @ 2024-04-04

253 downloads per month

MIT/Apache

28KB
478 lines

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

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~16–27MB
~434K SLoC