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 |
#1630 in Command line utilities
106 downloads per month
28KB
478 lines
mrh - Multi-(git)Repo Helper
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
~13–22MB
~376K SLoC