git-big-picture

git-big-picture visualises Git repositories as DAGs. The tool comes with some filters to show only the interesting areas, for example the hierarchy of tags and branches.

Examples

git big-picture -o git-big-picture.svg
Git graph with merges and tags
$ git big-picture -ao git-big-picture_all.svg
Git graph with merges, tags and commits

Installation

You can easily install git-big-picture with:

$ pipenv install git-big-picture
Installing git-big-picture…
Adding git-big-picture to Pipfile's [packages]…
✔ Installation Succeeded

Git-Integration

You can easily integrate the tool into Git by adding the script git-big-picture to $PATH. Then you can use it, for example with:

$ git big-picture -h
Usage: git-big-picture OPTIONS [<repo-directory>]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  --pstats=FILE         run cProfile profiler writing pstats output to FILE
  -d, --debug           activate debug output

  Output Options:
    Options to control output and format

    -f FMT, --format=FMT
                        set output format [svg, png, ps, pdf, ...]
    -g, --graphviz      output lines suitable as input for dot/graphviz
    -G, --no-graphviz   disable dot/graphviz output
    -p, --processed     output the dot processed, binary data
    -P, --no-processed  disable binary output
    -v CMD, --viewer=CMD
                        write image to tempfile and start specified viewer
    -V, --no-viewer     disable starting viewer
    -o FILE, --outfile=FILE
                        write image to specified file
    -O, --no-outfile    disable writing image to file

  Filter Options:
    Options to control commit/ref selection

    -a, --all           include all commits
    -b, --branches      show commits pointed to by branches
    -B, --no-branches   do not show commits pointed to by branches
    -t, --tags          show commits pointed to by tags
    -T, --no-tags       do not show commits pointed to by tags
    -r, --roots         show root commits
    -R, --no-roots      do not show root commits
    -m, --merges        include merge commits
    -M, --no-merges     do not include merge commits
    -i, --bifurcations  include bifurcation commits
    -I, --no-bifurcations
                        do not include bifurcation commits

Configuration

The standard git config infrastructure can be used to configure git-big-picture. Most of the command line arguments can be configured in a [big-picture] section. For example, to configure firefox as a viewer with

$ git config --global big-picture.viewer firefox

will create the following section in your ~/.gitconfig file:

[big-picture]
    viewer = firefox

Note

However, this disables other options at the same time. For example, you can no longer display the graph with Graphviz:

$ git-big-picture -g
fatal: Options '-g | --graphviz' and '-p | --processed' are incompatible with other output options.

In this case you must also specify the -V or --no-viewer option:

$ git-big-picture -g -V
digraph {
    "c509669a01b156900eed9f1c9f927b6d2f7bb95b"[label="origin/pyup-scheduled-update-2020-11-16", color="/pastel13/2", style=filled];