All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
	"Bagas Sanjaya" <bagasdotme@gmail.com>,
	"Josh Steadmon" <steadmon@google.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v6 0/6] object-name: make ambiguous object output translatable + show tag date
Date: Tue, 28 Dec 2021 15:34:56 +0100	[thread overview]
Message-ID: <cover-v6-0.6-00000000000-20211228T143223Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-v5-0.6-00000000000-20211125T215529Z-avarab@gmail.com>

This topic improves the output we emit on ambiguous objects as noted
in 4/6, and makes it translatable, see 3/6. See [1] for v5.

This iteration addresses various small feedback from Josh
Steadmon. I've incorporated a variable rename fixups here, and
hopefully answered small questions on the v5 thread with amended
commit messages.

For the case of "dead" prefixed objects being unused but "beef" being
used I just added a test for the "dead" objects. They're not strictly
needed, but having them for the "dead...beef" symetry and for use in
future tests is probably better, so I kept them in.

1. http://lore.kernel.org/git/cover-v5-0.6-00000000000-20211125T215529Z-avarab@gmail.com

Ævar Arnfjörð Bjarmason (6):
  object-name tests: add tests for ambiguous object blind spots
  object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
  object-name: make ambiguous object output translatable
  object-name: show date for ambiguous tag objects
  object-name: iterate ambiguous objects before showing header
  object-name: re-use "struct strbuf" in show_ambiguous_object()

 object-name.c                       | 112 +++++++++++++++++++++++++---
 t/t1512-rev-parse-disambiguation.sh |  84 +++++++++++++++++++++
 2 files changed, 184 insertions(+), 12 deletions(-)

Range-diff against v5:
1:  767165d096d ! 1:  27f267ad555 object-name tests: add tests for ambiguous object blind spots
    @@ Commit message
         prefix are the same for both SHA-1 and SHA-256. This uses strings that
         I mined, and have the same prefix when hashed with both.
     
    +    We "test_cmp" the full output to guard against any future regressions,
    +    and because a subsequent commit will tweak it. Showing a diff of how
    +    the output changes is helpful to explain those subsequent commits.
    +
         1. https://lore.kernel.org/git/YZwbphPpfGk78w2f@coredump.intra.peff.net/
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
    @@ t/t1512-rev-parse-disambiguation.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
     +		echo 1bbfctrkc | git hash-object -w --stdin
     +	) &&
     +
    ++	test_must_fail git -C blob.prefix rev-parse dead &&
     +	cat >expect <<-\EOF &&
     +	error: short object ID beef... is ambiguous
     +	hint: The candidates are:
2:  ee86912f1c1 ! 2:  c78243dc701 object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
    @@ Commit message
         added in the preceding commit.
     
         So saying "unknown type" here was always misleading, we really meant
    -    to say that we had a failure parsing the object at all, if the problem
    -    is only that it's type is unknown we won't reach this code.
    +    to say that we had a failure parsing the object at all, i.e. that we
    +    had repository corruption. If the problem is only that it's type is
    +    unknown we won't reach this code.
     
         So let's emit a generic "[bad object]" instead. As our tests added in
         the preceding commit show, we'll have emitted various "error" output
3:  b79964483e8 ! 3:  daebc95542c object-name: make ambiguous object output translatable
    @@ Commit message
            then SHA-1, 2018-05-10)
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
    +    Signed-off-by: Josh Steadmon <steadmon@google.com>
     
      ## object-name.c ##
     @@ object-name.c: static int show_ambiguous_object(const struct object_id *oid, void *data)
    @@ object-name.c: static int show_ambiguous_object(const struct object_id *oid, voi
     -	strbuf_addstr(&desc, type_name(type));
      
      	if (type == OBJ_COMMIT) {
    -+		struct strbuf ad = STRBUF_INIT;
    -+		struct strbuf s = STRBUF_INIT;
    ++		struct strbuf date = STRBUF_INIT;
    ++		struct strbuf msg = STRBUF_INIT;
      		struct commit *commit = lookup_commit(ds->repo, oid);
     +
      		if (commit) {
      			struct pretty_print_context pp = {0};
      			pp.date_mode.type = DATE_SHORT;
     -			format_commit_message(commit, " %ad - %s", &desc, &pp);
    -+			format_commit_message(commit, "%ad", &ad, &pp);
    -+			format_commit_message(commit, "%s", &s, &pp);
    ++			format_commit_message(commit, "%ad", &date, &pp);
    ++			format_commit_message(commit, "%s", &msg, &pp);
      		}
     +
     +		/*
    @@ object-name.c: static int show_ambiguous_object(const struct object_id *oid, voi
     +		 *
     +		 *    "deadbeef commit 2021-01-01 - Some Commit Message"
     +		 */
    -+		strbuf_addf(&desc, _("%s commit %s - %s"), hash, ad.buf, s.buf);
    ++		strbuf_addf(&desc, _("%s commit %s - %s"),
    ++			    hash, date.buf, msg.buf);
     +
    -+		strbuf_release(&ad);
    -+		strbuf_release(&s);
    ++		strbuf_release(&date);
    ++		strbuf_release(&msg);
      	} else if (type == OBJ_TAG) {
      		struct tag *tag = lookup_tag(ds->repo, oid);
     +		const char *tag_tag = "";
4:  36b6b440c37 = 4:  b5aa6e266f6 object-name: show date for ambiguous tag objects
5:  8880c283559 = 5:  644b076b2a6 object-name: iterate ambiguous objects before showing header
6:  78bb0995f08 ! 6:  6a31cfcfc29 object-name: re-use "struct strbuf" in show_ambiguous_object()
    @@ object-name.c: static int show_ambiguous_object(const struct object_id *oid, voi
      		 *
      		 *    "deadbeef commit 2021-01-01 - Some Commit Message"
      		 */
    --		strbuf_addf(&desc, _("%s commit %s - %s"), hash, ad.buf, s.buf);
    -+		strbuf_addf(sb, _("%s commit %s - %s"), hash, ad.buf, s.buf);
    +-		strbuf_addf(&desc, _("%s commit %s - %s"),
    +-			    hash, date.buf, msg.buf);
    ++		strbuf_addf(sb, _("%s commit %s - %s"), hash, date.buf,
    ++			    msg.buf);
      
    - 		strbuf_release(&ad);
    - 		strbuf_release(&s);
    + 		strbuf_release(&date);
    + 		strbuf_release(&msg);
     @@ object-name.c: static int show_ambiguous_object(const struct object_id *oid, void *data)
      		 * object.c, it should (hopefully) already be
      		 * translated.
-- 
2.34.1.1257.g2af47340c7b


  parent reply	other threads:[~2021-12-28 14:35 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-04  1:42 [PATCH 0/2] i18n: improve translatability of ambiguous object output Ævar Arnfjörð Bjarmason
2021-10-04  1:42 ` [PATCH 1/2] object-name tests: tighten up advise() output test Ævar Arnfjörð Bjarmason
2021-10-04  2:52   ` Eric Sunshine
2021-10-04  7:05   ` Jeff King
2021-10-04  1:42 ` [PATCH 2/2] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2021-10-04  7:35   ` Jeff King
2021-10-04  8:26     ` Ævar Arnfjörð Bjarmason
2021-10-04  9:29       ` Jeff King
2021-10-04 11:16         ` Ævar Arnfjörð Bjarmason
2021-10-04 12:07           ` Jeff King
2021-10-04 14:27 ` [PATCH v2 0/2] i18n: improve translatability of ambiguous object output Ævar Arnfjörð Bjarmason
2021-10-04 14:27   ` [PATCH v2 1/2] object.[ch]: mark object type names for translation Ævar Arnfjörð Bjarmason
2021-10-04 18:54     ` Eric Sunshine
2021-10-05  9:37     ` Bagas Sanjaya
2021-10-05 15:52       ` Ævar Arnfjörð Bjarmason
2021-10-06 19:05     ` Jeff King
2021-10-06 19:46       ` Junio C Hamano
2021-10-06 20:38         ` Jeff King
2021-10-07 18:06           ` Junio C Hamano
2021-10-04 14:27   ` [PATCH v2 2/2] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2021-10-06 19:11     ` Jeff King
2021-10-08 19:34   ` [PATCH v3 0/3] i18n: improve translatability of ambiguous object output Ævar Arnfjörð Bjarmason
2021-10-08 19:34     ` [PATCH v3 1/3] object-name: remove unreachable "unknown type" handling Ævar Arnfjörð Bjarmason
2021-10-08 19:34     ` [PATCH v3 2/3] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2021-10-08 19:34     ` [PATCH v3 3/3] object-name: show date for ambiguous tag objects Ævar Arnfjörð Bjarmason
2021-11-22 17:53     ` [PATCH v2 0/3] object-name: make ambiguous object output translatable + show tag date Ævar Arnfjörð Bjarmason
2021-11-22 17:53       ` [PATCH v4 1/3] object-name: remove unreachable "unknown type" handling Ævar Arnfjörð Bjarmason
2021-11-22 22:37         ` Jeff King
2021-11-22 17:53       ` [PATCH v4 2/3] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2021-11-22 17:53       ` [PATCH v4 3/3] object-name: show date for ambiguous tag objects Ævar Arnfjörð Bjarmason
2021-11-25 22:03       ` [PATCH v5 0/6] object-name: make ambiguous object output translatable + show tag date Ævar Arnfjörð Bjarmason
2021-11-25 22:03         ` [PATCH v5 1/6] object-name tests: add tests for ambiguous object blind spots Ævar Arnfjörð Bjarmason
2021-12-23 21:51           ` Josh Steadmon
2021-11-25 22:03         ` [PATCH v5 2/6] object-name: explicitly handle OBJ_BAD in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2021-12-23 21:51           ` Josh Steadmon
2021-12-23 22:42           ` Junio C Hamano
2021-11-25 22:03         ` [PATCH v5 3/6] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2021-12-23 21:54           ` [PATCH] fixup! " Josh Steadmon
2021-12-23 22:48             ` Junio C Hamano
2021-11-25 22:03         ` [PATCH v5 4/6] object-name: show date for ambiguous tag objects Ævar Arnfjörð Bjarmason
2021-11-25 22:03         ` [PATCH v5 5/6] object-name: iterate ambiguous objects before showing header Ævar Arnfjörð Bjarmason
2021-11-25 22:03         ` [PATCH v5 6/6] object-name: re-use "struct strbuf" in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2021-12-28 14:34         ` Ævar Arnfjörð Bjarmason [this message]
2021-12-28 14:34           ` [PATCH v6 1/6] object-name tests: add tests for ambiguous object blind spots Ævar Arnfjörð Bjarmason
2021-12-30 23:36             ` Junio C Hamano
2021-12-28 14:34           ` [PATCH v6 2/6] object-name: explicitly handle OBJ_BAD in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2021-12-28 14:34           ` [PATCH v6 3/6] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2021-12-30 23:46             ` Junio C Hamano
2021-12-28 14:35           ` [PATCH v6 4/6] object-name: show date for ambiguous tag objects Ævar Arnfjörð Bjarmason
2021-12-30 21:43             ` Junio C Hamano
2021-12-28 14:35           ` [PATCH v6 5/6] object-name: iterate ambiguous objects before showing header Ævar Arnfjörð Bjarmason
2021-12-28 14:35           ` [PATCH v6 6/6] object-name: re-use "struct strbuf" in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2021-12-28 15:18           ` [PATCH v8 0/7] progress: test fixes / cleanup Ævar Arnfjörð Bjarmason
2021-12-28 15:18             ` [PATCH v8 1/7] leak tests: fix a memory leak in "test-progress" helper Ævar Arnfjörð Bjarmason
2021-12-28 15:18             ` [PATCH v8 2/7] progress.c test helper: add missing braces Ævar Arnfjörð Bjarmason
2021-12-28 15:18             ` [PATCH v8 3/7] progress.c tests: make start/stop commands on stdin Ævar Arnfjörð Bjarmason
2021-12-28 16:25               ` Johannes Altmanninger
2021-12-28 15:19             ` [PATCH v8 4/7] progress.c tests: test some invalid usage Ævar Arnfjörð Bjarmason
2021-12-28 16:33               ` Johannes Altmanninger
2021-12-28 15:19             ` [PATCH v8 5/7] progress.c: add temporary variable from progress struct Ævar Arnfjörð Bjarmason
2021-12-28 16:05               ` René Scharfe
2021-12-28 16:13               ` Johannes Altmanninger
2021-12-28 15:19             ` [PATCH v8 6/7] pack-bitmap-write.c: don't return without stop_progress() Ævar Arnfjörð Bjarmason
2021-12-28 15:19             ` [PATCH v8 7/7] *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO) Ævar Arnfjörð Bjarmason
2021-12-28 16:47               ` René Scharfe
2021-12-28 23:56                 ` Ævar Arnfjörð Bjarmason
2022-01-08  0:45             ` [PATCH v8 0/7] progress: test fixes / cleanup Junio C Hamano
2022-01-12 12:39           ` [PATCH v7 0/6] object-name: make ambiguous object output translatable + show tag date Ævar Arnfjörð Bjarmason
2022-01-12 12:39             ` [PATCH v7 1/6] object-name tests: add tests for ambiguous object blind spots Ævar Arnfjörð Bjarmason
2022-01-13 22:39               ` Junio C Hamano
2022-01-14 12:07                 ` Ævar Arnfjörð Bjarmason
2022-01-14 18:45                   ` Junio C Hamano
2022-01-12 12:39             ` [PATCH v7 2/6] object-name: explicitly handle OBJ_BAD in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2022-01-12 12:39             ` [PATCH v7 3/6] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2022-01-12 12:39             ` [PATCH v7 4/6] object-name: show date for ambiguous tag objects Ævar Arnfjörð Bjarmason
2022-01-13 22:46               ` Junio C Hamano
2022-01-14 12:05                 ` Ævar Arnfjörð Bjarmason
2022-01-14 19:04                   ` Junio C Hamano
2022-01-14 19:35                     ` Ævar Arnfjörð Bjarmason
2022-01-12 12:39             ` [PATCH v7 5/6] object-name: iterate ambiguous objects before showing header Ævar Arnfjörð Bjarmason
2022-01-12 12:39             ` [PATCH v7 6/6] object-name: re-use "struct strbuf" in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2022-01-27  5:26             ` [PATCH v8 0/7] object-name: make ambiguous object output translatable + show tag date Ævar Arnfjörð Bjarmason
2022-01-27  5:26               ` [PATCH v8 1/7] object-name tests: add tests for ambiguous object blind spots Ævar Arnfjörð Bjarmason
2022-01-27  5:26               ` [PATCH v8 2/7] object-name: explicitly handle OBJ_BAD in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2022-01-27  5:26               ` [PATCH v8 3/7] object-name: explicitly handle bad tags " Ævar Arnfjörð Bjarmason
2022-01-27  5:26               ` [PATCH v8 4/7] object-name: make ambiguous object output translatable Ævar Arnfjörð Bjarmason
2022-01-27  5:26               ` [PATCH v8 5/7] object-name: show date for ambiguous tag objects Ævar Arnfjörð Bjarmason
2022-01-27  5:26               ` [PATCH v8 6/7] object-name: iterate ambiguous objects before showing header Ævar Arnfjörð Bjarmason
2022-01-27  5:26               ` [PATCH v8 7/7] object-name: re-use "struct strbuf" in show_ambiguous_object() Ævar Arnfjörð Bjarmason
2022-01-27 20:14               ` [PATCH v8 0/7] object-name: make ambiguous object output translatable + show tag date Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover-v6-0.6-00000000000-20211228T143223Z-avarab@gmail.com \
    --to=avarab@gmail.com \
    --cc=bagasdotme@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=steadmon@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.