4 releases

0.1.5 Jan 12, 2022
0.1.4 Oct 27, 2020
0.1.2 Oct 27, 2020
0.1.1 Oct 27, 2020
0.1.0 Oct 27, 2020

#1025 in Development tools

28 downloads per month

MIT license

40KB
875 lines

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}

Dependencies

~15–25MB
~451K SLoC