Subject: Re: [PATCH] blame: add color

From: Junio C Hamano <[email-masked]>
Date: Tue, 08 Oct 2013 08:16:38 -0700

Chris J Arges <[email-masked]> writes:

> Add colorized text for git blame when color.interactive is enabled.

It does not make any sense to tie this to color.interactive at all,
at least to me.  The "check color.blame and if absent fall back to
color.ui", which is the usual pattern, would be more appropriate.

> +static char blame_colors[][COLOR_MAXLEN] = {
> +	GIT_COLOR_RESET,
> +	GIT_COLOR_NORMAL,	/* PLAIN */
> +	GIT_COLOR_YELLOW,	/* COMMIT */
> +	GIT_COLOR_BOLD,		/* NAME */
> +	GIT_COLOR_CYAN,		/* LINE */
> +	GIT_COLOR_GREEN,	/* TIME */
> +};

Unlike "git grep", where some pieces of a single line are more
interesting (i.e. the exact text matching the pattern given) than
others (i.e. other text on the same line), and "git diff", where
some lines have different meanings from others (i.e. hunk header,
deleted lines, added lines, context lines), the output from "git
blame" is already columnar and it is obvious to the reader of the
output that everything on the leftmost part of all lines is commit
object name, without distraction of extra colours; I do not see much
point in painting the output into vertical stripes of colours.

It may make more sense to assign one colour to each blame origin
(i.e. <commit, path> pair), to make it clear that first five lines
came from the same origin that is different from the two lines that
follow, etc., showing horizontal stripes of colours. If we were to
go that route, I suspect that it would be too distracting to paint
the whole line (like "git diff" does for added or deleted
lines). Perhaps paint only the commit object name part in different
colors to show which lines form a group that came from the same
origin?  The way "git show-branch" paints its output might give an
inspiration.