Manage multiple git repositories with ease.
gmux
allows you to work on multiple, predefined, Git managed repositories.
A pool is a collection of repositories and files.
Pools are at the heart of gmux
: they allow you to easily target or exclude
repositories from your Git commands, but you can also share them easily as they
are simple YAML files.
Building on the pool concept, you have two main commands using gmux
.
By using gmux pool
, you can manage your pools ; add new pools, automatically
populate them, clone repositories by using a pool, etc...
However, you can also forward any Git command by using gmux command
and its
powerful --filter
option.
gmux
shines best when used by multiple team members working on a large set
of repositories.
Whereas it's to bootstrap the cloning process, or to ensure multiple
repositories track the same branches, you can share gmux
configurations
to ensure everyone is on the same page.
gmux
is available on crates.io
as well as the AUR.
Using cargo:
cargo install gmux
Using an AUR helper:
paru -S gmux
yay -S gmux
pacaur -S gmux
Print the current pool to the console:
gmux pool
List all available pools:
gmux pool list
Create a new pool, starting from the current directory:
gmux pool new projects
Create a new pool in a specific directory:
gmux pool new python /home/user/projects/python
Discover all repositories and files from the current pool directory:
gmux pool discover
Clone, checkout branches and recreate files of the current pool:
gmux pool checkout
Print the pool repositories status:
gmux command status --short
Print the pool repositories active branch that are not master or develop:
gmux command --exclude-filter '(master|develop)' rev-parse --abbrev-ref HEAD
Print the pool repositories ahead/behind commit count if there is any:
gmux command --exclude-filter '0\s0' rev-list --left-right --count @...@{u}
Print the pool repositories commits to merge with commiter and time, from oldest to newest:
gmux command log --pretty=format:'%h%x09%cr%x09%cn%x09%s' --reverse @..@{u}