Subject: Re: [PATCH] graph API: Added logic for colored edges

From: Allan Caffee <[email-masked]>
Date: Thu, 9 Apr 2009 18:08:16 -0400

On Thu, 09 Apr 2009, Teemu Likonen wrote:
> On 2009-04-07 14:57 (-0400), Allan Caffee wrote:
> 
> > Modified the graph drawing logic to colorize edges based on
> > parent-child relationships similiarly to gitk.
> 
> I like the colored graph very much, thanks. Unfortunately there are some
> problems with aligning of log messages and headers. For example, try
> this in git.git repository:
> 
> 
> $ git log -1 --graph 796b137
> 
> *   commit 796b13781aecce551b8f92049a66646e60f31dce
> |\ Merge: 6da14ee db12d97
> | | Author: Junio C Hamano <[email-masked]>
> | | Date:   2009-04-08 23:41:27 -0700
> 
> 
> Without colors or without your patch the alignment is correct:
> 
> $ git log -1 --graph --no-color 796b137
> 
> *   commit 796b13781aecce551b8f92049a66646e60f31dce
> |\  Merge: 6da14ee db12d97
> | | Author: Junio C Hamano <[email-masked]>
> | | Date:   2009-04-08 23:41:27 -0700
> 
> 
> (Perhaps the "Merge:" header could have two spaces befor the data, but
> this is  unrelated to --graph.)

Thanks for the feedback!  The problem here is that
graph_horizontal_padding was counting the number of characters in the
strbuf in order to decide how much whitespace to pad the row with.  The
ANSI escape sequences for colors and attributes are not printable
characters but do contribute to the length of the strbuf.  This can be
fixed by adding a new function that counts only printing
characters/spaces.  I'll include this in my next round.