logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

mgitstatus - Show uncommitted, untracked and unpushed changes for multiple Git repos.

Authors

       Ferry Boender.

                                                    Mar 2022                                       MGITSTATUS(1)

Description

mgitstatus shows uncommitted, untracked and unpushed changes in multiple Git repositories.   By  default,
       mgitstatus scans two directories deep.  This can be changed with the -d (--depth) option.  If DEPTH is 0,
       the scan is infinitely deep.

       mgitstatus shows:

       • Uncommittedchanges if there are unstaged or uncommitted changes on the checked out branch.

       • Untrackedfiles if there are untracked files which are not ignored.

       • Needspush(BRANCH) if the branch is tracking a (remote) branch which is behind.

       • Needsupstream(BRANCH)  if  a  branch  does  not  have a local or remote upstream branch configured.
         Changes in the branch may otherwise never be pushed or merged.

       • Needspull(BRANCH) if the branch is tracking a (remote) branch which is ahead.  This requires that the
         local git repo already knows about the remote changes (i.e. you’ve done a fetch), or that  you  specify
         the -f option.  mgitstatus does NOT contact the remote by default.

       • Xstashes if there are stashes.

       Since there are a lot of different states a git repository can be in, mgitstatus makes no guarantees that
       all states are taken into account.

Examples

       The following command scans two directories deep for Git projects and shows their status:

              $ mgitstatus
              ./fboender/sla: ok
              ./fboender/multi-git-status: Needs push (master) Untracked files
              ./other/peewee: ok

       To scan deeper (three dirs instead of two) in the current dir:

              $ mgitstatus -d 3

       The following command scans three levels deep in /opt/deploy/ and hides repos that are `ok'.  It does not
       show stashes:

              $ mgitstatus -e --no-stashes -d 3 /opt/deploy

       To ignore a repo, set the mgitstatus.ignore git configuration option for that repo to true.  E.g.:

              $ cd stupidrepo
              $ git config --local mgitstatus.ignore true

       Sort output by repo name while retaining colors:

              $ mgitstatus -c | sort
              ./ansible: ok
              ./ansible-cmdb: Needs push (master) Uncommitted changes Untracked files
              ./davis: ok
              ./espy: Uncommitted changes Untracked files
              ./garner: Untracked files
              ./garner-chains: ok
              ./mdpreview: ok

       Sort output by repo status while retaining colors:

              $ mgitstatus -c --flatten -e | sort -k2
              ./fboender/ansible-cmdb: Uncommitted changes
              ./fboender/espy: Uncommitted changes
              ./fboender/multi-git-status: Uncommitted changes
              ./fboender/ansible-cmdb: Needs push (master)
              ./fboender/ansible-cmdb: Untracked files
              ./fboender/espy: Untracked files
              ./fboender/garner: Untracked files
              ./fboender/multi-git-status: Untracked files

       Force color output and flatten the output so we can grep for things:

              $ mgitstatus --flatten -c | grep Uncommitted
              ./fboender/multi-git-status: Uncommitted changes
              ./fboender/ansible-cmdb: Uncommitted changes
              ./fboender/espy: Uncommitted changes

Name

       mgitstatus - Show uncommitted, untracked and unpushed changes for multiple Git repos.

Options

--version
              Show version

       -w     Warn about dirs that are not Git repositories

       -e     Exclude repos that are `ok'

       -f     Do a `git fetch' on each repo (slow for many repos)

       --throttleSEC
              Wait SEC seconds between each `git fetch' (-f option)

       -c     Force color output (preserve colors when using pipes)

       -d,--depth=2
              Scan this many directories deep.  Default is 2.  If 0, the scan is infinitely deep

       --no-depth
              Do not recurse into directories (incompatible with -d)

       --flatten
              Flatten  output  by  only  showing one status per line.  If a repo has multiple statuses, multiple
              lines are shown for that repo.  This aids in grepability.

       You can limit output with the following options:

       --no-push
              Do not show branches that need a push.

       --no-pull
              Do not show branches that need a pull.

       --no-upstream
              Do not show branches that need an upstream.

       --no-uncommitted
              Do not show branches that have unstaged or uncommitted changes.

       --no-untracked
              Do not show branches that have untracked files.

       --no-stashes
              Do now show stashes

       --no-ok
              Do now show repos that are `ok' (same as -e)

Synopsis

mgitstatus  [--version]  [-w]  [-e]  [-f]  [--throttle SEC] [-c] [-d/--depth=2] [--flatten] [--no-X] [DIR
       [DIR]...]

See Also