# gmux
Manage multiple git repositories with ease.
`gmux` allows you to work on multiple, predefined, Git managed repositories.
## Pools
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.
## Commands
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.
## Use cases
`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.
However, you can also use it as a simple tool to query or edit multiple
repositories using Git commands.
## Examples
### Pools
Print the current pool to the console:
`gmux pool`
List all available pools:
`gmux pool`
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 discover`
### Commands
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}`