Scroll to navigation

git-forest(1) hxtools git-forest(1)

Name

Syntax

git-forest [-a] [--no-rebase] [--style=number] [--sha] [--svdepth=depth] [rev-list-options] [refspec...]

Description

git-forest is a command-line zero-lookahead git repository history visualizer with Unicode output with a bit of gitk resemblance.

Why another program?

The tree visualization of gitk is very useful, but there were (git 1.5.4 timeframe) no decent visualizers that can run in a console window, without the need to have X around (which gitk depends on). tig has numerous limitations, it cannot display octopus merges or octopus branching. As of git 1.5.6, there are still no other Unicode-output programs known to me.

Options

Display author for each commit.
Do not show the rebase pseudo-refs.
Use single-line visuals (default).
Use double-line visuals.
Use specific rounded Unicode visuals for edges; glyphs might only be available with X11 terminals and appropriate fonts.
Use single bold-line visuals. Not readily usable with VGA console fonts without special unimaps.
Display (abbreviated) SHAs for each commit.
This option controls the maximum look-ahead window. If M0's parent (M1) appears within distance or fewer lines of M0, a "sub-vine" will be drawn in the space between the regular vines.
Default: 3

$ git-forest --svdepth=3 --topo-order
┌─ M0: Merge G into M
├─┐
│ ├ G0
│ ├ G1: Merge N into G
│ ├─┐
│ │ ├ N0
│ │ ├ N1
│ │ ├ N2
│ │ ├ N3
├─┘ │
├   │ G2/M1
├───┘
└ N4/M2
$ git-forest --svdepth=5 --topo-order
┌─ M0: Merge G into M
├─┐
│ ├ G0
│ ├ G1: Merge N in to G
│┌┤
││├ N0
││├ N1
││├ N2
││├ N3
├┘│
├ │ G2/M1
├─┘
└ N4/M2

For comparison, this is the date-order representation of this example, in case you want to reproduce it:

$ git-forest --date-order
┌─ M0: Merge G into M
├─┐
│ ├ G0
│ ├ G1: Merge N into G
│┌┤
├┘│
├ │ G2/M1
│ ├ N0
│ ├ N1
│ ├ N2
│ ├ N3
├─┘
└ N4/M2

All other options and arguments are passed down to git-log. Commonly useful options are --all and --topo-order.

Examples

git-forest --all | less -RS
git-forest origin/master | less -RS

This tool does not try to minimize the empty space between branches like gitk does. Take it as a feature.

See also

hxtools(7)

2008-07-06 hxtools