Skip to content

optionfactory/digit

Repository files navigation

digit - learn git by visualizing it

Digit shows a realtime visual representation of a git repo structure, making it easier to understand how git works and what is the effect of each and every git command you run.

Digit is meant to be a learning tool, developed for our mid-level git workshop (http://www.optionfactory.net/courses/details/Git/). As such, it is not designed to scale to large repositories.

How does it look like

Main interface

Features

  • monitors a local git repo
  • realtime updates using fsnotify and websockets
  • optionally monitors a second repo to experiment with remotes, push, pull, fetch, etc
  • shows git graph, including unreachable nodes
  • shows references: tags, branches, HEAD, stash pointers
  • commit metadata in tooltip
  • display current repo status (as in "output of git status")
  • visualizes node ancestry (for reachability)

Binary downloads

Digit requires git to be installed on your machine

More screenshots

Reachability and commit metadata

Reachability and commit metadata

Local and remote repo

Local and remote repo

Usage

digit [--bind-to <bind-address>:<bind-port>] local_repo_path [origin_repo_path]

and point your browser to http://localhost:9000 (or any other address specified in --bind-to)

Both paths must reside on the local filesystem (no network support yet).

Building from source

This repo uses a submodule in embedded_data/graph-algorithm.

When cloning, make sure to use --recursive in order to properly initialize the submodule.

The build system relies on docker and GNU Make.

  • make local: builds for the local os/arch
  • make all: builds for all architectures

Known Limitations

  • just a learning aid
  • not meant to scale (tested with repos with a couple hundred commits)

Authors

  • Francesco Degrassi
  • Davide Salvador

Thanks

To Wei Wang: several ideas taken from Explain Git With D3