Quickstart
# installation
pip install mu-repo
## register repos
mu register --recursive
mu list
# run git commands
mu status --short
mu diff -U0 --color | bat
# run shell commands
mu sh $(grep -iRl "KEDRO_GID=0" | xargs sed -i "s/KEDRO_GID=0/KEDRO_GID=5/g")
Registering Repos
mu register --all
mu register --all
mu register --recursive
mu unregister --all
https://waylonwalker.com/bash/
I have similar command line related shortcuts in my bash notes
Full Help
mu --help
* mu register repo1 repo2: Registers repo1 and repo2 to be tracked.
* mu register --all: Registers all subdirs with .git (non-recursive).
* mu register --current: Registers all subdirs with .git (non-recursive).
* mu register --recursive: Registers all subdirs with .git (recursive).
* mu unregister repo1 repo2 | --all: Stops tracking some repository.
* mu list: Lists the currently tracked repositories.
* mu set-var git=d:/bin/git/bin/git.exe: Set git location to be used.
* mu set-var serial=0|1: Set commands to be executed serially or in parallel.
* mu get-vars: Prints the configuration file.
* mu fix-eol: Changes end of lines to '\n' on all changed files.
* mu find-branch [-r] *pat*:
Finds all branches matching a given pattern (or simply mu fb).
* mu git-init-config: Initial git configuration (username, log, etc.)
* mu --version: Prints its version
* mu auto-update: Automatically updates mu-repo
(using git -- if it was installed from the repo as in the instructions).
* mu dd:
Creates a directory structure with working dir vs head and opens
WinMerge with it (doing mu ac will commit exactly what's compared in this
situation).
Also accepts a parameter to compare with a different commit/branch. I.e.:
mu dd HEAD^^
mu dd 9fd88da
mu dd development
* mu sh <command line>
Allows calling any command line in the registered repositories
e.g.: mu sh ls -la will call ls -la on all registered repositories.
* mu clone: Cloning multiple repos from a base url.
Use mu clone --help to open browser with more details.
* mu <command> repo:<repo1>,<repo2>
Allows specifying target repositories for a single command:
e.g.: mu st repo:repo1,repo2: Will do st on repo1 and repo2.
* mu group: Repository grouping
* mu group add <name> [--empty]:
Creates new group with current repositories, unless --empty is given
* mu group rm <name>: Removes a group
* mu group switch <name>: Switches to an existing group
* mu group reset: Stops using the current group (uses all repos again).
* mu group: With no parameters, just lists current groups
Use mu register normally to add repositories to the current group
Use mu list to list repositories in the current group
Shortcuts:
mu st = Nice status message for all repos (always in parallel)
mu co branch = git checkout branch
mu mu-branch = git rev-parse --abbrev-ref HEAD (print current branch)
mu up = git fetch origin curr_branch:refs/remotes/origin/curr_branch
mu up --all = git fetch origin (always in parallel)
mu upd | sync = up/diff incoming changes
mu a = git add -A
mu c msg = git commit -m "Message" (the message must always be passed)
mu ac msg = git add -A & git commit -m (the message must always be passed)
mu acp msg = same as 'mu ac' + git push origin current branch.
mu p = git push origin current branch.
mu rb = git rebase origin/current branch.
mu shell = On msysgit, call sh --login -i (linux-like env)
mu fb [-r] pat= Shortcut for find-branch
Any other command is passed directly to git for each repository:
I.e.:
mu pull
mu fetch
mu push
mu checkout release
Note: Actions considered safe may always be executed in parallel (i.e.: mu st)
Note: Passing --timeit in any command will print the time for the command.