Git development
 help / color / mirror / Atom feed
* [Microproject] describe: pluralize tag/commit count messages
@ 2026-10-13 20:43 Antoni Borowski
  2026-10-14  9:29 ` Jeff King
  0 siblings, 1 reply; 6+ messages in thread
From: Antoni Borowski @ 2026-10-13 20:43 UTC (permalink / raw)
  To: git; +Cc: Antoni Borowski, Junio C Hamano, Josh Poimboeuf, Jeff King

These two verbose messages hardcoded the English plural form
("tags"/"commits") inside _(), which is wrong both grammatically
(e.g. "found 1 tags") and for i18n, since other languages have
different plural rules than English.

Switch both to Q_() so gettext picks the correct singular/plural
form based on the count.

Signed-off-by: Antoni Borowski <antekborowski11@gmail.com>
---
 builtin/describe.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/builtin/describe.c b/builtin/describe.c
index c0abc931a5..9fbb982417 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -481,10 +481,12 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 				label_width, _(prio_names[t->name->prio]),
 				t->depth, t->name->path);
 		}
-		fprintf(stderr, _("traversed %lu commits\n"), seen_commits);
+		fprintf(stderr, Q_("traversed %lu commit\n",
+				   "traversed %lu commits\n", seen_commits), seen_commits);
 		if (gave_up_on) {
 			fprintf(stderr,
-				_("found %i tags; gave up search at %s\n"),
+				Q_("found %i tag; gave up search at %s\n",
+				   "found %i tags; gave up search at %s\n", max_candidates),
 				max_candidates,
 				oid_to_hex(&gave_up_on->object.oid));
 		}
-- 
2.56.0


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

* Re: [Microproject] describe: pluralize tag/commit count messages
  2026-10-13 20:43 [Microproject] describe: pluralize tag/commit count messages Antoni Borowski
@ 2026-10-14  9:29 ` Jeff King
  2026-10-14 17:36   ` Junio C Hamano
  0 siblings, 1 reply; 6+ messages in thread
From: Jeff King @ 2026-10-14  9:29 UTC (permalink / raw)
  To: Antoni Borowski; +Cc: git, Junio C Hamano, Josh Poimboeuf

On Tue, Oct 13, 2026 at 10:43:51PM +0200, Antoni Borowski wrote:

> These two verbose messages hardcoded the English plural form
> ("tags"/"commits") inside _(), which is wrong both grammatically
> (e.g. "found 1 tags") and for i18n, since other languages have
> different plural rules than English.
> 
> Switch both to Q_() so gettext picks the correct singular/plural
> form based on the count.

OK. The patch looks obviously correct, though I do find it a little
funny that we bother to translate these debug messages in the first
place.

I wonder if there is even really value in keeping "--debug" here at all.
But that is a somewhat bigger change.

The patch here seems OK to me in the meantime (and totally fine for a
microproject).

-Peff

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

* Re: [Microproject] describe: pluralize tag/commit count messages
  2026-10-14  9:29 ` Jeff King
@ 2026-10-14 17:36   ` Junio C Hamano
  2026-10-16 17:18     ` [Microproject] describe: do not translate --debug output Antoni Borowski
  0 siblings, 1 reply; 6+ messages in thread
From: Junio C Hamano @ 2026-10-14 17:36 UTC (permalink / raw)
  To: Jeff King; +Cc: Antoni Borowski, git, Josh Poimboeuf

Jeff King <peff@peff.net> writes:

> OK. The patch looks obviously correct, though I do find it a little
> funny that we bother to translate these debug messages in the first
> place.
>
> I wonder if there is even really value in keeping "--debug" here at all.
> But that is a somewhat bigger change.
>
> The patch here seems OK to me in the meantime (and totally fine for a
> microproject).

Yeah, but a microproject that convincingly argues that output from
the "--debug" option should not even be translated and undoes _()
would make a much better case to see how a new person works well ;-).




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

* [Microproject] describe: do not translate --debug output
  2026-10-14 17:36   ` Junio C Hamano
@ 2026-10-16 17:18     ` Antoni Borowski
  2026-10-16 18:35       ` Junio C Hamano
  0 siblings, 1 reply; 6+ messages in thread
From: Antoni Borowski @ 2026-10-16 17:18 UTC (permalink / raw)
  To: gitster, peff; +Cc: git, jpoimboe, Antoni Borowski

The --debug flag is aimed at developers debugging describe's search
strategy, not at end users. Translating this output makes it harder
to grep for known strings, compare logs across locales, or paste
output into upstream bug reports written in English — all things
developers routinely need to do.

transport-helper.c already follows this convention: its "Debug: ..."
messages are plain C strings with no gettext wrapper.

Drop the _() and Q_() wrappers from describe_commit()'s debug-only
fprintf() calls accordingly, and prefix them with "Debug: " to match
transport-helper.c's style.

Signed-off-by: Antoni Borowski <antekborowski11@gmail.com>
---
 builtin/describe.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/builtin/describe.c b/builtin/describe.c
index c0abc931a5..775f9f27f1 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -351,7 +351,7 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 	if (!max_candidates)
 		die(_("no tag exactly matches '%s'"), oid_to_hex(&cmit->object.oid));
 	if (debug)
-		fprintf(stderr, _("No exact match on refs or tags, searching to describe\n"));
+		fprintf(stderr, "Debug: No exact match on refs or tags, searching to describe\n");
 
 	if (!have_util) {
 		struct hashmap_iter iter;
@@ -419,7 +419,7 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 			}
 			if ((c->object.flags & best_within) == best_within) {
 				if (debug)
-					fprintf(stderr, _("finished search at %s\n"),
+					fprintf(stderr, "Debug: finished search at %s\n",
 						oid_to_hex(&c->object.oid));
 				break;
 			}
@@ -477,14 +477,14 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 		}
 		for (cur_match = 0; cur_match < match_cnt; cur_match++) {
 			struct possible_tag *t = &all_matches[cur_match];
-			fprintf(stderr, " %-*s %8d %s\n",
+			fprintf(stderr, "Debug:  %-*s %8d %s\n",
 				label_width, _(prio_names[t->name->prio]),
 				t->depth, t->name->path);
 		}
-		fprintf(stderr, _("traversed %lu commits\n"), seen_commits);
+		fprintf(stderr, "Debug: traversed %lu commits\n", seen_commits);
 		if (gave_up_on) {
 			fprintf(stderr,
-				_("found %i tags; gave up search at %s\n"),
+				"Debug: found %i tags; gave up search at %s\n",
 				max_candidates,
 				oid_to_hex(&gave_up_on->object.oid));
 		}
@@ -565,7 +565,7 @@ static void describe(const char *arg, int last_one)
 	struct strbuf sb = STRBUF_INIT;
 
 	if (debug)
-		fprintf(stderr, _("describe %s\n"), arg);
+		fprintf(stderr, "Debug: describe %s\n", arg);
 
 	if (repo_get_oid(the_repository, arg, &oid))
 		die(_("Not a valid object name %s"), arg);
-- 
2.56.0


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

* Re: [Microproject] describe: do not translate --debug output
  2026-10-16 17:18     ` [Microproject] describe: do not translate --debug output Antoni Borowski
@ 2026-10-16 18:35       ` Junio C Hamano
  2026-10-16 18:54         ` [Microproject v2] " Antoni Borowski
  0 siblings, 1 reply; 6+ messages in thread
From: Junio C Hamano @ 2026-10-16 18:35 UTC (permalink / raw)
  To: Antoni Borowski; +Cc: peff, git, jpoimboe

Antoni Borowski <antekborowski11@gmail.com> writes:

> The --debug flag is aimed at developers debugging describe's search
> strategy, not at end users. Translating this output makes it harder
> to grep for known strings, compare logs across locales, or paste
> output into upstream bug reports written in English — all things
> developers routinely need to do.
>
> transport-helper.c already follows this convention: its "Debug: ..."
> messages are plain C strings with no gettext wrapper.
>
> Drop the _() and Q_() wrappers from describe_commit()'s debug-only
> fprintf() calls accordingly, and prefix them with "Debug: " to match
> transport-helper.c's style.

Nicely described.  One nit in the proposed log message is that you
are not removing any Q_() at all ;-).

> Signed-off-by: Antoni Borowski <antekborowski11@gmail.com>
> ---
>  builtin/describe.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)



> diff --git a/builtin/describe.c b/builtin/describe.c
> index c0abc931a5..775f9f27f1 100644
> --- a/builtin/describe.c
> +++ b/builtin/describe.c
> @@ -351,7 +351,7 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
>  	if (!max_candidates)
>  		die(_("no tag exactly matches '%s'"), oid_to_hex(&cmit->object.oid));
>  	if (debug)
> -		fprintf(stderr, _("No exact match on refs or tags, searching to describe\n"));
> +		fprintf(stderr, "Debug: No exact match on refs or tags, searching to describe\n");
>  
>  	if (!have_util) {
>  		struct hashmap_iter iter;
> @@ -419,7 +419,7 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
>  			}
>  			if ((c->object.flags & best_within) == best_within) {
>  				if (debug)
> -					fprintf(stderr, _("finished search at %s\n"),
> +					fprintf(stderr, "Debug: finished search at %s\n",
>  						oid_to_hex(&c->object.oid));
>  				break;
>  			}
> @@ -477,14 +477,14 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
>  		}
>  		for (cur_match = 0; cur_match < match_cnt; cur_match++) {
>  			struct possible_tag *t = &all_matches[cur_match];
> -			fprintf(stderr, " %-*s %8d %s\n",
> +			fprintf(stderr, "Debug:  %-*s %8d %s\n",
>  				label_width, _(prio_names[t->name->prio]),
>  				t->depth, t->name->path);
>  		}
> -		fprintf(stderr, _("traversed %lu commits\n"), seen_commits);
> +		fprintf(stderr, "Debug: traversed %lu commits\n", seen_commits);
>  		if (gave_up_on) {
>  			fprintf(stderr,
> -				_("found %i tags; gave up search at %s\n"),
> +				"Debug: found %i tags; gave up search at %s\n",
>  				max_candidates,
>  				oid_to_hex(&gave_up_on->object.oid));
>  		}
> @@ -565,7 +565,7 @@ static void describe(const char *arg, int last_one)
>  	struct strbuf sb = STRBUF_INIT;
>  
>  	if (debug)
> -		fprintf(stderr, _("describe %s\n"), arg);
> +		fprintf(stderr, "Debug: describe %s\n", arg);
>  
>  	if (repo_get_oid(the_repository, arg, &oid))
>  		die(_("Not a valid object name %s"), arg);

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

* [Microproject v2] describe: do not translate --debug output
  2026-10-16 18:35       ` Junio C Hamano
@ 2026-10-16 18:54         ` Antoni Borowski
  0 siblings, 0 replies; 6+ messages in thread
From: Antoni Borowski @ 2026-10-16 18:54 UTC (permalink / raw)
  To: gitster, peff; +Cc: git, jpoimboe, Antoni Borowski

The --debug flag is aimed at developers debugging describe's search
strategy, not at end users. Translating this output makes it harder
to grep for known strings, compare logs across locales, or paste
output into upstream bug reports written in English — all things
developers routinely need to do.

transport-helper.c already follows this convention: its "Debug: ..."
messages are plain C strings with no gettext wrapper.

Drop the _() wrapper from describe_commit()'s and describe()'s
debug-only fprintf() calls accordingly, and prefix them with
"Debug: " to match transport-helper.c's style.

Signed-off-by: Antoni Borowski <antekborowski11@gmail.com>
---
 builtin/describe.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/builtin/describe.c b/builtin/describe.c
index c0abc931a5..775f9f27f1 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -351,7 +351,7 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 	if (!max_candidates)
 		die(_("no tag exactly matches '%s'"), oid_to_hex(&cmit->object.oid));
 	if (debug)
-		fprintf(stderr, _("No exact match on refs or tags, searching to describe\n"));
+		fprintf(stderr, "Debug: No exact match on refs or tags, searching to describe\n");
 
 	if (!have_util) {
 		struct hashmap_iter iter;
@@ -419,7 +419,7 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 			}
 			if ((c->object.flags & best_within) == best_within) {
 				if (debug)
-					fprintf(stderr, _("finished search at %s\n"),
+					fprintf(stderr, "Debug: finished search at %s\n",
 						oid_to_hex(&c->object.oid));
 				break;
 			}
@@ -477,14 +477,14 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 		}
 		for (cur_match = 0; cur_match < match_cnt; cur_match++) {
 			struct possible_tag *t = &all_matches[cur_match];
-			fprintf(stderr, " %-*s %8d %s\n",
+			fprintf(stderr, "Debug:  %-*s %8d %s\n",
 				label_width, _(prio_names[t->name->prio]),
 				t->depth, t->name->path);
 		}
-		fprintf(stderr, _("traversed %lu commits\n"), seen_commits);
+		fprintf(stderr, "Debug: traversed %lu commits\n", seen_commits);
 		if (gave_up_on) {
 			fprintf(stderr,
-				_("found %i tags; gave up search at %s\n"),
+				"Debug: found %i tags; gave up search at %s\n",
 				max_candidates,
 				oid_to_hex(&gave_up_on->object.oid));
 		}
@@ -565,7 +565,7 @@ static void describe(const char *arg, int last_one)
 	struct strbuf sb = STRBUF_INIT;
 
 	if (debug)
-		fprintf(stderr, _("describe %s\n"), arg);
+		fprintf(stderr, "Debug: describe %s\n", arg);
 
 	if (repo_get_oid(the_repository, arg, &oid))
 		die(_("Not a valid object name %s"), arg);
-- 
2.56.0


---
v2: fixed commit message, no Q_() was actually touched

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

end of thread, other threads:[~2026-10-16 18:57 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-13 20:43 [Microproject] describe: pluralize tag/commit count messages Antoni Borowski
2026-10-14  9:29 ` Jeff King
2026-10-14 17:36   ` Junio C Hamano
2026-10-16 17:18     ` [Microproject] describe: do not translate --debug output Antoni Borowski
2026-10-16 18:35       ` Junio C Hamano
2026-10-16 18:54         ` [Microproject v2] " Antoni Borowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox