Tips & Tricks
Grouping by project directories
To make the most out of
mu-repo, it's recommended that the projects you work with specify
their own dependencies by committing the
.mu_repo file with relative paths so that it's
possible to go inside any of those repository dirs and issue commands not only to the repository,
but all the dependent repositories at once (and this will also enable you to clone the all
the needed repositories at once).
Say you have
projectC and have a dependency so that:
projectC -> projectB, projectA projectB -> projectA
It's recommended that you go into projectC and do:
mu register ../projectA mu register ../projectB
and in projectB:
mu register ../projectA
By doing so, when going into projectC and doing a command using
mu, the command will also be issued
projectA and by going into
projectB it'll also execute commands in
Also, this will enable the command
mu clone projectC to clone
projectC all at once
(See the Cloning for further details).
Tip: If you have several projects and need even finer grained control over where to execute a command, it's possible to create a group to identify a subset of the repositories (See the Grouping Repositories for further details).
.mu_repo file has a simple format (each line must be something as
name=var1, var2), so, it's straightforward
to edit it with your favorite editor.
mu provides some shortcuts which extend a bit on git and the
mu acp <commit message> (which stands for
commit -m <commit message>,
a really handy one, so, if you just checked your structure (with
mu dd and want to add all the changes, commit them and push in a single
mu acp (also, just
mu a or
mu ac <commit message> or
mu c <commit message> can be used just for one of those parts).
Calling a different executable
The whole concept of
mu-repo is calling git on multiple repositories, but it's actually possible
to specify any executable for it to work on (by assiging it to the
mu set-var git=c:\bin\myexecutable.exe
Previewing incoming changes
It's usually nice to know what you'll get when you update your repository. For that
mu-repo includes a nice
mu upd. It fetches changes for the current branch and compares the current branch with the fetched changes (using WinMerge or meld).
If changes are Ok, you can then use
mu rb to update your current version (it stashes your current changes, performs a rebase so that your current
committed changes are put on top of incoming changes and then unstashes what has been stashed). Note: be careful as it'll do rebase, so, if
your changes are already pushed in another branch don't use this command and do a manual merge instead.
Previewing and editing changes in the working directory
For comparing what would be committed in
mu ac, it's possible to use
mu dd. It'll create a directory structure with working dir vs head (for the multiple repositores) and opens
WinMerge on Windows or Meld on Linux with it (doing mu ac will commit exactly what's compared in this situation), allowing those changes to be edited.
See: mu dd on Commands for more details.