# [announce] text-based tree visualizer

15 messages from 2008-03-06 to 2008-03-18. Participants: Jan Engelhardt, Johannes Schindelin, David Brown, Jonas Fonseca, Miklos Vajna, Jakub Narebski, Ping Yin.
Thread: https://gitlist.dev/t/12545

## Jan Engelhardt, 2008-03-06 17:48

Subject: [announce] text-based tree visualizer
Message-ID: <Pine.LNX.4.64.0803061557320.7660@fbirervta.pbzchgretzou.qr>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803061557320.7660%40fbirervta.pbzchgretzou.qr

```
Hello everyone,


I spent the last two days writing a text-based tree visualizer;
gitk is really convenient, but unfortunately it needs an X display,
tigs tree view left me unimpressed, and I actually wanted a tool
that does not read all commits in like gitk/tig do, but just gives me 
the treeview.

Screenshot:
http://jengelh.hopto.org/other/git-forest.png
Program (perl):
http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
Top of file contains option overview.

Feedback is welcome.

thanks,
Jan

```

## Johannes Schindelin, 2008-03-06 18:24

Subject: Re: [announce] text-based tree visualizer
Message-ID: <alpine.LSU.1.00.0803061924350.3941@racer.site>
URL: https://gitlist.dev/e/alpine.LSU.1.00.0803061924350.3941%40racer.site
In-Reply-To: <Pine.LNX.4.64.0803061557320.7660@fbirervta.pbzchgretzou.qr>

```
Hi,

On Thu, 6 Mar 2008, Jan Engelhardt wrote:

> I spent the last two days writing a text-based tree visualizer; gitk is 
> really convenient, but unfortunately it needs an X display, tigs tree 
> view left me unimpressed, and I actually wanted a tool that does not 
> read all commits in like gitk/tig do, but just gives me the treeview.
> 
> Screenshot:
> http://jengelh.hopto.org/other/git-forest.png
> Program (perl):
> http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
> Top of file contains option overview.

Nice.  Have you tested how it compares against tig (hit 'g'...)?

Ciao,
Dscho


```

## Jan Engelhardt, 2008-03-06 18:49

Subject: Re: [announce] text-based tree visualizer
Message-ID: <Pine.LNX.4.64.0803061938550.7660@fbirervta.pbzchgretzou.qr>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803061938550.7660%40fbirervta.pbzchgretzou.qr
In-Reply-To: <alpine.LSU.1.00.0803061924350.3941@racer.site>

```

On Mar 6 2008 19:24, Johannes Schindelin wrote:
>On Thu, 6 Mar 2008, Jan Engelhardt wrote:
>
>> I spent the last two days writing a text-based tree visualizer; gitk is 
>> really convenient, but unfortunately it needs an X display, tigs tree 
>> view left me unimpressed, and I actually wanted a tool that does not 
>> read all commits in like gitk/tig do, but just gives me the treeview.
>> 
>> Screenshot:
>> http://jengelh.hopto.org/other/git-forest.png
>> Program (perl):
>> http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
>> Top of file contains option overview.
>
>Nice.  Have you tested how it compares against tig (hit 'g'...)?

Yes, see above? :-) "tig's treeview" - that meant the 'g' key.

It just uses boring ascii, fails to display octopus merges and
'octoups branching', is limited to 'one branch' (e.g. no apparent way
to pass --all to git-log/git-rev-list).

```

## Johannes Schindelin, 2008-03-06 19:46

Subject: Re: [announce] text-based tree visualizer
Message-ID: <alpine.LSU.1.00.0803062045371.3941@racer.site>
URL: https://gitlist.dev/e/alpine.LSU.1.00.0803062045371.3941%40racer.site
In-Reply-To: <Pine.LNX.4.64.0803061938550.7660@fbirervta.pbzchgretzou.qr>

```
Hi,

On Thu, 6 Mar 2008, Jan Engelhardt wrote:

> 
> On Mar 6 2008 19:24, Johannes Schindelin wrote:
> >On Thu, 6 Mar 2008, Jan Engelhardt wrote:
> >
> >> I spent the last two days writing a text-based tree visualizer; gitk 
> >> is really convenient, but unfortunately it needs an X display, tigs 
> >> tree view left me unimpressed, and I actually wanted a tool that does 
> >> not read all commits in like gitk/tig do, but just gives me the 
> >> treeview.
> >> 
> >> Screenshot:
> >> http://jengelh.hopto.org/other/git-forest.png
> >> Program (perl):
> >> http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
> >> Top of file contains option overview.
> >
> >Nice.  Have you tested how it compares against tig (hit 'g'...)?
> 
> Yes, see above? :-) "tig's treeview" - that meant the 'g' key.

Yes, I saw that, thank you.

> It just uses boring ascii, fails to display octopus merges and 'octoups 
> branching', is limited to 'one branch' (e.g. no apparent way to pass 
> --all to git-log/git-rev-list).

That was what I was interested in.

Thank you,
Dscho


```

## David Brown, 2008-03-06 20:14

Subject: Re: [announce] text-based tree visualizer
Message-ID: <20080306201429.GA24528@old.davidb.org>
URL: https://gitlist.dev/e/20080306201429.GA24528%40old.davidb.org
In-Reply-To: <Pine.LNX.4.64.0803061557320.7660@fbirervta.pbzchgretzou.qr>

```
On Thu, Mar 06, 2008 at 06:48:19PM +0100, Jan Engelhardt wrote:

>Program (perl):
>http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
>Top of file contains option overview.

Do you have a git URL instead of just a link to a single version of a
single file?  I haven't been able to figure one out.

Thanks,
David

```

## Jan Engelhardt, 2008-03-06 20:38

Subject: Re: [announce] text-based tree visualizer
Message-ID: <Pine.LNX.4.64.0803062137020.7660@fbirervta.pbzchgretzou.qr>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803062137020.7660%40fbirervta.pbzchgretzou.qr
In-Reply-To: <20080306201429.GA24528@old.davidb.org>

```

On Mar 6 2008 12:14, David Brown wrote:
> On Thu, Mar 06, 2008 at 06:48:19PM +0100, Jan Engelhardt wrote:
>
>> Program (perl):
>> http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
>> Top of file contains option overview.
>
> Do you have a git URL instead of just a link to a single version of a
> single file?  I haven't been able to figure one out.

No problem; git://dev.computergmbh.de/hxtools .

Any idea how I can make gitweb display an URL text like it does on
http://git.kernel.org/?p=git/git.git;a=summary ?

```

## Jonas Fonseca, 2008-03-06 20:46

Subject: Re: [announce] text-based tree visualizer
Message-ID: <2c6b72b30803061246j52c005f8nb76df3742776d0fd@mail.gmail.com>
URL: https://gitlist.dev/e/2c6b72b30803061246j52c005f8nb76df3742776d0fd%40mail.gmail.com
In-Reply-To: <Pine.LNX.4.64.0803061938550.7660@fbirervta.pbzchgretzou.qr>

```
On Thu, Mar 6, 2008 at 7:49 PM, Jan Engelhardt <jengelh@computergmbh.de> wrote:
>  On Mar 6 2008 19:24, Johannes Schindelin wrote:
>  >On Thu, 6 Mar 2008, Jan Engelhardt wrote:
>  >
>  >> I spent the last two days writing a text-based tree visualizer; gitk is
>  >> really convenient, but unfortunately it needs an X display, tigs tree
>  >> view left me unimpressed, and I actually wanted a tool that does not
>  >> read all commits in like gitk/tig do, but just gives me the treeview.
>  >>
>  >> Screenshot:
>  >> http://jengelh.hopto.org/other/git-forest.png
>  >> Program (perl):
>  >> http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
>  >> Top of file contains option overview.

It looks very interesting and inspiring.

>  Yes, see above? :-) "tig's treeview" - that meant the 'g' key.
>
>  It just uses boring ascii, fails to display octopus merges and
>  'octoups branching', is limited to 'one branch' (e.g. no apparent way
>  to pass --all to git-log/git-rev-list).

I agree to tig's revision graph renderer being boring and very limited.
As for passing --all you need to first pass --:

  $ tig -- --all --not pu

I am planning to change this awkwardness after next release.

-- 
Jonas Fonseca

```

## Miklos Vajna, 2008-03-07 00:46

Subject: Re: [announce] text-based tree visualizer
Message-ID: <20080307004654.GK27511@genesis.frugalware.org>
URL: https://gitlist.dev/e/20080307004654.GK27511%40genesis.frugalware.org
In-Reply-To: <Pine.LNX.4.64.0803062137020.7660@fbirervta.pbzchgretzou.qr>

```
On Thu, Mar 06, 2008 at 09:38:11PM +0100, Jan Engelhardt <jengelh@computergmbh.de> wrote:
> Any idea how I can make gitweb display an URL text like it does on
> http://git.kernel.org/?p=git/git.git;a=summary ?

use the cloneurl file (just like description) for example.

```

## Jakub Narebski, 2008-03-07 13:45

Subject: Re: [announce] text-based tree visualizer
Message-ID: <m3ablahcl4.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3ablahcl4.fsf%40localhost.localdomain
In-Reply-To: <Pine.LNX.4.64.0803062137020.7660@fbirervta.pbzchgretzou.qr>

```
Jan Engelhardt <jengelh@computergmbh.de> writes:

> On Mar 6 2008 12:14, David Brown wrote:
>> On Thu, Mar 06, 2008 at 06:48:19PM +0100, Jan Engelhardt wrote:
>>
>>> Program (perl):
>>> http://dev.computergmbh.de/gitweb.cgi?p=hxtools;a=blob_plain;f=bin/git-forest
>>> Top of file contains option overview.
>>
>> Do you have a git URL instead of just a link to a single version of a
>> single file?  I haven't been able to figure one out.
> 
> No problem; git://dev.computergmbh.de/hxtools .
> 
> Any idea how I can make gitweb display an URL text like it does on
> http://git.kernel.org/?p=git/git.git;a=summary ?

Please read gitweb/README and gitweb/INSTALL.

>From gitweb/README:

 * GITWEB_BASE_URL
   Git base URLs used for URL to where fetch project from, i.e. full
   URL is "$git_base_url/$project".  Shown on projects summary page.
   Repository URL for project can be also configured per repository; this
   takes precendence over URL composed from base URL and project name.
   Note that you can setup multiple base URLs (for example one for
   git:// protocol access, one for http:// access) from gitweb config
   file.  [No default]

[...]

 * @git_base_url_list
   List of git base URLs used for URL to where fetch project from, shown
   in project summary page.  Full URL is "$git_base_url/$project".
   You can setup multiple base URLs (for example one for  git:// protocol
   access, and one for http:// "dumb" protocol access).  Note that per
   repository configuration in 'cloneurl' file, or as values of gitweb.url
   project config.

[...]

 * cloneurl (or multiple-valued gitweb.url)
   File with repository URL (used for clone and fetch), one per line.
   Displayed in the project summary page. You can use multiple-valued
   gitweb.url repository configuration variable for that, but the file
   takes precendence.


P.S. Will you add short info about your tool to the GitWiki page
     http://git.or.cz/gitwiki/InterfacesFrontendsAndTools
     (somewhere along gitk and tig, in "History Viewers..." section)?
-- 
Jakub Narebski
Poland
ShadeHawk on #git

```

## Jan Engelhardt, 2008-03-08 15:01

Subject: Re: [announce] text-based tree visualizer
Message-ID: <Pine.LNX.4.64.0803081555080.26142@fbirervta.pbzchgretzou.qr>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803081555080.26142%40fbirervta.pbzchgretzou.qr
In-Reply-To: <m3ablahcl4.fsf@localhost.localdomain>

```

On Mar 7 2008 05:45, Jakub Narebski wrote:
>
>P.S. Will you add short info about your tool to the GitWiki page
>     http://git.or.cz/gitwiki/InterfacesFrontendsAndTools
>     (somewhere along gitk and tig, in "History Viewers..." section)?

Someone else already did by now (that was you, was not it :-) —
would it be possible to just merge the tiny tool into contrib/
so the file does not stand alone?


thanks,
Jan

```

## Jakub Narebski, 2008-03-09 12:36

Subject: Re: [announce] text-based tree visualizer
Message-ID: <200803091336.21931.jnareb@gmail.com>
URL: https://gitlist.dev/e/200803091336.21931.jnareb%40gmail.com
In-Reply-To: <Pine.LNX.4.64.0803081555080.26142@fbirervta.pbzchgretzou.qr>

```
On Sat, 8 Mar 2008, Jan Engelhardt wrote:
> 
> would it be possible to just merge the tiny tool into contrib/
> so the file does not stand alone?

I think it would be posible. Simply send a patch adding it somewhere
in the contrib/ directory.

-- 
Jakub Narebski
Poland

```

## Ping Yin, 2008-03-17 13:40

Subject: Re: [announce] text-based tree visualizer
Message-ID: <46dff0320803170640g52411015g7bbe315df2b0bb56@mail.gmail.com>
URL: https://gitlist.dev/e/46dff0320803170640g52411015g7bbe315df2b0bb56%40mail.gmail.com
In-Reply-To: <Pine.LNX.4.64.0803061557320.7660@fbirervta.pbzchgretzou.qr>

```
On Fri, Mar 7, 2008 at 1:48 AM, Jan Engelhardt <jengelh@computergmbh.de> wrote:
> Hello everyone,
>
>
>  I spent the last two days writing a text-based tree visualizer;
>  gitk is really convenient, but unfortunately it needs an X display,
>  tigs tree view left me unimpressed, and I actually wanted a tool
>  that does not read all commits in like gitk/tig do, but just gives me
>  the treeview.
>
Here is my view
║ ║ ║ ╟ Merge branch 'jk/portable'
║ ║ ║ ╠═╗
║ ║ ║ ╟ ║ Merge branch 'py/submodule'
║ ║ ║ ╠═╬═╗
║ ║ ║ ╟ ║ ║ Merge branch 'db/diff-to-fp'
║ ║ ║ ╠═╬═╬═╗
║ ║ ║ ╟ ║ ║ ║ Merge branch 'cc/help'
║ ║ ║ ╠═╬═╬═╬═╗
║ ║ ║ ╟ ║ ║ ║ ║ shortlog: do not require to
║ ║ ║ ╟ ║ ║ ║ ║ Merge branch 'maint'
║ ║ ║ ╠═╬═╬═╬═╬═╗

It seems messed up.



-- 
Ping Yin

```

## Jan Engelhardt, 2008-03-17 16:27

Subject: Re: text-based tree visualizer
Message-ID: <Pine.LNX.4.64.0803171716470.18817@fbirervta.pbzchgretzou.qr>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803171716470.18817%40fbirervta.pbzchgretzou.qr
In-Reply-To: <46dff0320803170640g52411015g7bbe315df2b0bb56@mail.gmail.com>

```

On Mar 17 2008 21:40, Ping Yin wrote:
>>
>>  I spent the last two days writing a text-based tree visualizer;
>>  gitk is really convenient, but unfortunately it needs an X display,
>>  tigs tree view left me unimpressed, and I actually wanted a tool
>>  that does not read all commits in like gitk/tig do, but just gives me
>>  the treeview.
>>
>Here is my view
>║ ║ ║ ╟ Merge branch 'jk/portable'
>║ ║ ║ ╠═╗
>║ ║ ║ ╟ ║ Merge branch 'py/submodule'
>║ ║ ║ ╠═╬═╗
>║ ║ ║ ╟ ║ ║ Merge branch 'db/diff-to-fp'
>║ ║ ║ ╠═╬═╬═╗
>║ ║ ║ ╟ ║ ║ ║ Merge branch 'cc/help'
>║ ║ ║ ╠═╬═╬═╬═╗
>║ ║ ║ ╟ ║ ║ ║ ║ shortlog: do not require to
>║ ║ ║ ╟ ║ ║ ║ ║ Merge branch 'maint'
>║ ║ ║ ╠═╬═╬═╬═╬═╗
>
>It seems messed up.

It looks pretty normal. Once a vine-branch (║) branches off [a merge is 
done in history], it stays in its column for the entire time. It is 
different from gitk which moves branches to the left/right so that
there are less crossovers (╬) in gitk. But in git-forest that is 
intentional.
Also note that ╬ is not a "go-everywhere" intersection --
see the top of the git-forest script and/or try --style=3 or =0
option to make it apparent:

│ ├ │ │ │ │ │ │         │ │ Merge branch 'jk/portable'
│ ╞═╪═╪═╪═╪═╪═╪═╕       │ │ 
│ ├ │ │ │ │ │ │ │       │ │ Merge branch 'py/submodule'
│ ╞═╪═╪═╪═╪═╪═╪═╪═╕     │ │ 
│ ├ │ │ │ │ │ │ │ │     │ │ Merge branch 'db/diff-to-fp'
│ ╞═╪═╪═╪═╪═╪═╪═╪═╪═╕   │ │ 
│ ├ │ │ │ │ │ │ │ │ │   │ │ Merge branch 'cc/help'
│ ╞═╪═╪═╪═╪═╪═╪═╪═╪═╪═╕ │ │ 
│ ├ │ │ │ │ │ │ │ │ │ │ │ │ shortlog: do not require to run from inside a git re

Or was it something else you meant to describe with being messed up?

```

## Ping Yin, 2008-03-18 00:26

Subject: Re: text-based tree visualizer
Message-ID: <46dff0320803171726o4d7c23b4jbaae3cb0b3e09723@mail.gmail.com>
URL: https://gitlist.dev/e/46dff0320803171726o4d7c23b4jbaae3cb0b3e09723%40mail.gmail.com
In-Reply-To: <Pine.LNX.4.64.0803171716470.18817@fbirervta.pbzchgretzou.qr>

```
On Tue, Mar 18, 2008 at 12:27 AM, Jan Engelhardt
<jengelh@computergmbh.de> wrote:
>
>  On Mar 17 2008 21:40, Ping Yin wrote:
>  >>
>  >>  I spent the last two days writing a text-based tree visualizer;
>  >>  gitk is really convenient, but unfortunately it needs an X display,
>  >>  tigs tree view left me unimpressed, and I actually wanted a tool
>  >>  that does not read all commits in like gitk/tig do, but just gives me
>  >>  the treeview.
>  >>
>  >Here is my view
>  >║ ║ ║ ╟ Merge branch 'jk/portable'
>  >║ ║ ║ ╠═╗
>  >║ ║ ║ ╟ ║ Merge branch 'py/submodule'
>  >║ ║ ║ ╠═╬═╗
>  >║ ║ ║ ╟ ║ ║ Merge branch 'db/diff-to-fp'
>  >║ ║ ║ ╠═╬═╬═╗
>  >║ ║ ║ ╟ ║ ║ ║ Merge branch 'cc/help'
>  >║ ║ ║ ╠═╬═╬═╬═╗
>  >║ ║ ║ ╟ ║ ║ ║ ║ shortlog: do not require to
>  >║ ║ ║ ╟ ║ ║ ║ ║ Merge branch 'maint'
>  >║ ║ ║ ╠═╬═╬═╬═╬═╗
>  >
>  >It seems messed up.
>
>  It looks pretty normal. Once a vine-branch (║) branches off [a merge is
>  done in history], it stays in its column for the entire time. It is
>  different from gitk which moves branches to the left/right so that
>  there are less crossovers (╬) in gitk. But in git-forest that is
>  intentional.
>  Also note that ╬ is not a "go-everywhere" intersection --
>  see the top of the git-forest script and/or try --style=3 or =0
>  option to make it apparent:
>
>  │ ├ │ │ │ │ │ │         │ │ Merge branch 'jk/portable'
>
> │ ╞═╪═╪═╪═╪═╪═╪═╕       │ │
>  │ ├ │ │ │ │ │ │ │       │ │ Merge branch 'py/submodule'
>  │ ╞═╪═╪═╪═╪═╪═╪═╪═╕     │ │
>  │ ├ │ │ │ │ │ │ │ │     │ │ Merge branch 'db/diff-to-fp'
>  │ ╞═╪═╪═╪═╪═╪═╪═╪═╪═╕   │ │
>  │ ├ │ │ │ │ │ │ │ │ │   │ │ Merge branch 'cc/help'
>  │ ╞═╪═╪═╪═╪═╪═╪═╪═╪═╪═╕ │ │
>  │ ├ │ │ │ │ │ │ │ │ │ │ │ │ shortlog: do not require to run from inside a git re
>
>  Or was it something else you meant to describe with being messed up?
>
Thanks. That's it. I thought the normal looking would be

║ ║ ║ ╟ Merge branch 'jk/portable'
║ ║ ║ ╠═╗
║ ║ ║ ╟  ║ Merge branch 'py/submodule'
║ ║ ║ ╠═╬═╗
║ ║ ║ ╟  ║  ║ Merge branch 'db/diff-to-fp'
║ ║ ║ ╠═╬═╬═╗
║ ║ ║ ╟  ║  ║  ║ Merge branch 'cc/help'
║ ║ ║ ╠═╬═╬═╬═╗
║ ║ ║ ╟  ║  ║  ║   ║ shortlog: do not require to
║ ║ ║ ╟  ║  ║  ║   ║ Merge branch 'maint'
║ ║ ║ ╠═╬═╬═╬═╬═╗

-- 
Ping Yin

```

## Jan Engelhardt, 2008-03-18 02:08

Subject: Re: text-based tree visualizer
Message-ID: <Pine.LNX.4.64.0803180300300.18817@fbirervta.pbzchgretzou.qr>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803180300300.18817%40fbirervta.pbzchgretzou.qr
In-Reply-To: <46dff0320803171726o4d7c23b4jbaae3cb0b3e09723@mail.gmail.com>

```

On Mar 18 2008 08:26, Ping Yin wrote:
>>  >Here is my view
>>  >║ ║ ║ ╟ Merge branch 'jk/portable'
>>  >║ ║ ║ ╠═╗
>>  >║ ║ ║ ╟ ║ Merge branch 'py/submodule'
>>  >║ ║ ║ ╠═╬═╗
>>  >║ ║ ║ ╟ ║ ║ Merge branch 'db/diff-to-fp'
>>  >║ ║ ║ ╠═╬═╬═╗
>>  >║ ║ ║ ╟ ║ ║ ║ Merge branch 'cc/help'
>>  >║ ║ ║ ╠═╬═╬═╬═╗
>>  >║ ║ ║ ╟ ║ ║ ║ ║ shortlog: do not require to
>>  >║ ║ ║ ╟ ║ ║ ║ ║ Merge branch 'maint'
>>  >║ ║ ║ ╠═╬═╬═╬═╬═╗
>>  >
>>  >It seems messed up.
>>
>>  │ ├ │ │ │ │ │ │         │ │ Merge branch 'jk/portable'
>>
>> │ ╞═╪═╪═╪═╪═╪═╪═╕       │ │
>>  │ ├ │ │ │ │ │ │ │       │ │ Merge branch 'py/submodule'
>>  │ ╞═╪═╪═╪═╪═╪═╪═╪═╕     │ │
>>  │ ├ │ │ │ │ │ │ │ │     │ │ Merge branch 'db/diff-to-fp'
>>  │ ╞═╪═╪═╪═╪═╪═╪═╪═╪═╕   │ │
>>  │ ├ │ │ │ │ │ │ │ │ │   │ │ Merge branch 'cc/help'
>>  │ ╞═╪═╪═╪═╪═╪═╪═╪═╪═╪═╕ │ │
>>  │ ├ │ │ │ │ │ │ │ │ │ │ │ │ shortlog: do not require to run from inside a git re
>>
>>  Or was it something else you meant to describe with being messed up?
>>
>Thanks. That's it. I thought the normal looking would be
>
>║ ║ ║ ╟ Merge branch 'jk/portable'
>║ ║ ║ ╠═╗
>║ ║ ║ ╟  ║ Merge branch 'py/submodule'
>║ ║ ║ ╠═╬═╗
>║ ║ ║ ╟  ║  ║ Merge branch 'db/diff-to-fp'
>║ ║ ║ ╠═╬═╬═╗
>║ ║ ║ ╟  ║  ║  ║ Merge branch 'cc/help'
>║ ║ ║ ╠═╬═╬═╬═╗
>║ ║ ║ ╟  ║  ║  ║   ║ shortlog: do not require to
>║ ║ ║ ╟  ║  ║  ║   ║ Merge branch 'maint'
>║ ║ ║ ╠═╬═╬═╬═╬═╗

git-forest relies on having a font with fixed-size cells.
xterm works (uses bitmap fonts, so no problem) works,
as does sakura (uses ttf, but fixed cells).

```
