Git Mailing List Archive mirror
 help / color / mirror / Atom feed
* [PATCH] log: omit tag prefix for color decoration
@ 2023-02-19 17:46 Andy Koppe
  2023-02-20 21:36 ` Junio C Hamano
  0 siblings, 1 reply; 3+ messages in thread
From: Andy Koppe @ 2023-02-19 17:46 UTC (permalink / raw
  To: git; +Cc: pclouds, Andy Koppe

Omit the "tag: " prefix for tags in commit decorations when coloring is
enabled. The prefix isn't necessary as such when tags are distinguished
by color already, and omitting it saves a bit of space and visual noise.

It also avoids a problem: when the %d or %D placeholders are used while
a %w wrapping specifier is in force in a format string, lines can be
broken between the prefix and the tag name. In that case, the prefix
gets colored correctly, but the tag name gets the default color instead.

Also remove the tag prefix from test t4207 for color decorations, and
add --no-color to a test t6002 check of the output of rev-list --bisect
that expects tag prefixes to be present.

Signed-off-by: Andy Koppe <andy.koppe@gmail.com>
---

CI run: https://github.com/ak2/git/actions/runs/4211957381

 log-tree.c                       |  3 ++-
 t/t4207-log-decoration-colors.sh | 22 +++++++++++-----------
 t/t6002-rev-list-bisect.sh       |  2 +-
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/log-tree.c b/log-tree.c
index 1dd5fcbf7b..64ea15e0a0 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -324,7 +324,8 @@ void format_decorations_extended(struct strbuf *sb,
 			strbuf_addstr(sb, prefix);
 			strbuf_addstr(sb, color_reset);
 			strbuf_addstr(sb, decorate_get_color(use_color, decoration->type));
-			if (decoration->type == DECORATION_REF_TAG)
+			if (!use_color &&
+			    decoration->type == DECORATION_REF_TAG)
 				strbuf_addstr(sb, "tag: ");
 
 			show_name(sb, decoration);
diff --git a/t/t4207-log-decoration-colors.sh b/t/t4207-log-decoration-colors.sh
index ded33a82e2..a5ee7b19d7 100755
--- a/t/t4207-log-decoration-colors.sh
+++ b/t/t4207-log-decoration-colors.sh
@@ -55,13 +55,13 @@ test_expect_success 'commit decorations colored correctly' '
 	cat >expect <<-EOF &&
 	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_HEAD}HEAD -> \
 ${c_reset}${c_branch}main${c_reset}${c_commit}, \
-${c_reset}${c_tag}tag: v1.0${c_reset}${c_commit}, \
-${c_reset}${c_tag}tag: B${c_reset}${c_commit})${c_reset} B
-${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A1${c_reset}${c_commit}, \
+${c_reset}${c_tag}v1.0${c_reset}${c_commit}, \
+${c_reset}${c_tag}B${c_reset}${c_commit})${c_reset} B
+${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}A1${c_reset}${c_commit}, \
 ${c_reset}${c_remoteBranch}other/main${c_reset}${c_commit})${c_reset} A1
 	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_stash}refs/stash${c_reset}${c_commit})${c_reset} \
 On main: Changes to A.t
-	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A${c_reset}${c_commit})${c_reset} A
+	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}A${c_reset}${c_commit})${c_reset} A
 	EOF
 
 	git log --first-parent --no-abbrev --decorate --oneline --color=always --all >actual &&
@@ -78,10 +78,10 @@ test_expect_success 'test coloring with replace-objects' '
 	cat >expect <<-EOF &&
 	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_HEAD}HEAD -> \
 ${c_reset}${c_branch}main${c_reset}${c_commit}, \
-${c_reset}${c_tag}tag: D${c_reset}${c_commit})${c_reset} D
-	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: C${c_reset}${c_commit}, \
+${c_reset}${c_tag}D${c_reset}${c_commit})${c_reset} D
+	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}C${c_reset}${c_commit}, \
 ${c_reset}${c_grafted}replaced${c_reset}${c_commit})${c_reset} B
-	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A${c_reset}${c_commit})${c_reset} A
+	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}A${c_reset}${c_commit})${c_reset} A
 EOF
 
 	git log --first-parent --no-abbrev --decorate --oneline --color=always HEAD >actual &&
@@ -102,11 +102,11 @@ test_expect_success 'test coloring with grafted commit' '
 	cat >expect <<-EOF &&
 	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_HEAD}HEAD -> \
 ${c_reset}${c_branch}main${c_reset}${c_commit}, \
-${c_reset}${c_tag}tag: D${c_reset}${c_commit}, \
+${c_reset}${c_tag}D${c_reset}${c_commit}, \
 ${c_reset}${c_grafted}replaced${c_reset}${c_commit})${c_reset} D
-	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: v1.0${c_reset}${c_commit}, \
-${c_reset}${c_tag}tag: B${c_reset}${c_commit})${c_reset} B
-	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A${c_reset}${c_commit})${c_reset} A
+	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}v1.0${c_reset}${c_commit}, \
+${c_reset}${c_tag}B${c_reset}${c_commit})${c_reset} B
+	${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}A${c_reset}${c_commit})${c_reset} A
 	EOF
 
 	git log --first-parent --no-abbrev --decorate --oneline --color=always HEAD >actual &&
diff --git a/t/t6002-rev-list-bisect.sh b/t/t6002-rev-list-bisect.sh
index 162cf50778..924923afaa 100755
--- a/t/t6002-rev-list-bisect.sh
+++ b/t/t6002-rev-list-bisect.sh
@@ -305,7 +305,7 @@ test_expect_success '--bisect-all --first-parent' '
 	# expect results to be ordered by distance (descending),
 	# commit hash (ascending)
 	sort -k4,4r -k1,1 expect.unsorted >expect &&
-	git rev-list --bisect-all --first-parent E ^F >actual &&
+	git rev-list --bisect-all --first-parent --no-color E ^F >actual &&
 	test_cmp expect actual
 '
 
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] log: omit tag prefix for color decoration
  2023-02-19 17:46 [PATCH] log: omit tag prefix for color decoration Andy Koppe
@ 2023-02-20 21:36 ` Junio C Hamano
  2023-02-21 21:28   ` Andy Koppe
  0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2023-02-20 21:36 UTC (permalink / raw
  To: Andy Koppe; +Cc: git, pclouds

Andy Koppe <andy.koppe@gmail.com> writes:

> Omit the "tag: " prefix for tags in commit decorations when coloring is
> enabled. The prefix isn't necessary as such when tags are distinguished
> by color already, and omitting it saves a bit of space and visual noise.

As somebody whose color perception is weaker than other people, I am
torn about this line of changes.  Accessibiilty folks often warn us
against designing UI that differentiates two things only by painting
them in two different colors "to be inclusive", and the above goes
directly against their guidelines.

The only saving grace in this case is that I expect that tags are
named very differently from topics in well managed projects, and
users can tell withotu "tag:" prefix even in the output without
colors, and that si why I said "I am torn", not I am not outright
100% negative, but still I doubt that the upside of shortening 4
display spaces is worth going directly against inclusion advocates.

So...

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] log: omit tag prefix for color decoration
  2023-02-20 21:36 ` Junio C Hamano
@ 2023-02-21 21:28   ` Andy Koppe
  0 siblings, 0 replies; 3+ messages in thread
From: Andy Koppe @ 2023-02-21 21:28 UTC (permalink / raw
  To: Junio C Hamano; +Cc: git, pclouds

On Mon, 20 Feb 2023 at 21:36, Junio C Hamano wrote:
>
> Andy Koppe writes:
>
> > Omit the "tag: " prefix for tags in commit decorations when coloring is
> > enabled. The prefix isn't necessary as such when tags are distinguished
> > by color already, and omitting it saves a bit of space and visual noise.
>
> As somebody whose color perception is weaker than other people, I am
> torn about this line of changes.  Accessibiilty folks often warn us
> against designing UI that differentiates two things only by painting
> them in two different colors "to be inclusive", and the above goes
> directly against their guidelines.
>
> The only saving grace in this case is that I expect that tags are
> named very differently from topics in well managed projects, and
> users can tell withotu "tag:" prefix even in the output without
> colors, and that si why I said "I am torn", not I am not outright
> 100% negative, but still I doubt that the upside of shortening 4
> display spaces is worth going directly against inclusion advocates.

I can't argue with that, particularly when changing default behavior.

Would you welcome a patch instead that implements a new %r pretty
format placeholder alongside %d and %D that lists the refs separated
by spaces only, i.e. without parentheses, commas or tag prefixes?

               %d
                   ref names, like the --decorate option of git-log(1)

               %D
                   ref names without the " (", ")" wrapping.

               %r
                   ref names only

(Having looked at the relevant code, I think it should still be a
fairly small change.)

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-02-21 21:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-19 17:46 [PATCH] log: omit tag prefix for color decoration Andy Koppe
2023-02-20 21:36 ` Junio C Hamano
2023-02-21 21:28   ` Andy Koppe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).