Tool to help working with multiple git repositories (short for Multiple Repositories).


mu is a command line tool that helps you execute the same commands in multiple git repositories.

Suppose you have repositories that are related, and want to execute the same git commands in each (for instance, create a branch with the same name in all of them).

$ cd my-project
$ ls 
repo1 repo2
$ cd repo1
$ git fetch && git checkout -b my-feature origin/master
$ cd repo2
$ git fetch && git checkout -b my-feature origin/master

Besides being tedious, it is easy to forget some of the repositories when you're dealing with several.

Using mu, you register the repositories you want only once and then issue commands to all of them at once:

cd my-project
mu register repo1 repo2
mu fetch && mu checkout -b my-feature origin/master

mu also provides other useful features such as:

New on 1.8.0

It's possible to specify a MU_REPO_SERIAL=True|False environment variable to force mu repo to run serially or in parallel (overriding the contents of the .mu_repo file).

mu p -f may be used to force pushing all repos to remote.

Fix checking out by partial branch name on Python 3.

Fix: when a group is loaded, passing repo:<repo_name> in the command line only affects the passed repo.

New on 1.6.0

Created mu sh action to execute non git commands (i.e.: mu sh make or mu sh python install or mu mvn install).

Fixed issue in mu open-url action when dealing with relative repositories. See Open Url.

mu --version can be used to get the current mu repo version.

New on 1.5.0

Fixed issue where the colors were not being properly shown on Python 3.

Fixed issue on mu clone on Python 3.

Created mu open-url action to help on creating pull requests on multiple repositories at once. See Open Url.

New on 1.4.0

Fix for issue on mu-repo not working if .mu_repo file was still not created.

If a commit message is not given on mu ac, open the git-configured editor and ask for it.

Fixed issue on mu dd when executed with a repository referencing ano ther repository in the same level (i.e.: ./A references ../B).

New on 1.3.0

This version allows you to call mu in subdirectories (it'll search directories upwards for the first directory containing a .mu_repo file or a .git directory).

New on 1.2.0

This version allows you to clone multiple repositories at once. See: Cloning multiple repositories

Proceed to: