git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4 1/3] object-name: remove unreachable "unknown type" handling

From
Jeff King <peff@peff.net>
Date
Nov 22, 2021, 22:37 UTC
Message-ID
<YZwbphPpfGk78w2f@coredump.intra.peff.net>
In-Reply-To
<patch-v4-1.3-2e7090c09f9-20211122T175219Z-avarab@gmail.com>
On Mon, Nov 22, 2021 at 06:53:23PM +0100, Ævar Arnfjörð Bjarmason wrote:
Show 12 quoted lines
> Remove unreachable "unknown type" handling in the code that displays
> the ambiguous object list. See [1] for the current output, and [1] for
> the commit that added the "unknown type" handling.
> 
> The reason this code wasn't reachable is because we're not passing in
> OBJECT_INFO_ALLOW_UNKNOWN_TYPE, so we'll die in sort_ambiguous()
> before we get to show_ambiguous_object():
> 
>     $ git rev-parse 8315
>     error: short object ID 8315 is ambiguous
>     hint: The candidates are:
>     fatal: invalid object type

I'm not so sure about this reasoning. In the code we are getting the type fresh from oid_object_info():

Show 6 quoted lines
> @@ -361,6 +361,8 @@ static int show_ambiguous_object(const struct object_id *oid, void *data)
>  		return 0;
>  
>  	type = oid_object_info(ds->repo, oid, NULL);
> +	assert(type == OBJ_TREE || type == OBJ_COMMIT ||
> +	       type == OBJ_BLOB || type == OBJ_TAG);

so at the very least we have to worry about the answer changing between the two spots. You talk above about ALLOW_UNKNOWN_TYPE, but can't we just get a straight "-1" if there's an error opening the object?

I'm also confused about the mention of die in sort_ambiguous(). It looks like it would just produce a funny sort order in that case.

Here's a case that triggers the difference:
  git init repo
  cd repo
  one=$(echo 851 | git hash-object -w --stdin)
  two=$(echo 872 | git hash-object -w --stdin)
  oid=$(echo $two | cut -c1-4)
  fn=.git/objects/$(echo $two | perl -pe 's{..}{$&/}')
  chmod +w $fn
  echo broken >$fn
  git show $oid
Without your patch, it produces:
  error: short object ID ee3d is ambiguous
  hint: The candidates are:
  error: inflate: data stream error (incorrect header check)
  error: unable to unpack ee3d8abaa95a7395b373892b2593de2f426814e2 header
  error: inflate: data stream error (incorrect header check)
  error: unable to unpack ee3d8abaa95a7395b373892b2593de2f426814e2 header
  hint:   ee3d8ab unknown type
  hint:   ee3de99 blob
With your patch:
  error: short object ID ee3d is ambiguous
  hint: The candidates are:
  error: inflate: data stream error (incorrect header check)
  error: unable to unpack ee3d8abaa95a7395b373892b2593de2f426814e2 header
  error: inflate: data stream error (incorrect header check)
  error: unable to unpack ee3d8abaa95a7395b373892b2593de2f426814e2 header
  git: object-name.c:364: show_ambiguous_object: Assertion `type == OBJ_TREE || type == OBJ_COMMIT || type == OBJ_BLOB || type == OBJ_TAG' failed.
  Aborted
-Peff
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 29 of 90 in “i18n: improve translatability of ambiguous object output”
  1. 0/2 i18n: improve translatability of ambiguous object outputÆvar Arnfjörð Bjarmason, Oct 4, 2021
  2. 1/2 object-name tests: tighten up advise() output testÆvar Arnfjörð Bjarmason, Oct 4, 2021
  3. Eric SunshineOct 4, 2021
  4. Jeff KingOct 4, 2021
  5. 2/2 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Oct 4, 2021
  6. Jeff KingOct 4, 2021
  7. Ævar Arnfjörð BjarmasonOct 4, 2021
  8. Jeff KingOct 4, 2021
  9. Ævar Arnfjörð BjarmasonOct 4, 2021
  10. Jeff KingOct 4, 2021
  11. 0/2 i18n: improve translatability of ambiguous object outputÆvar Arnfjörð Bjarmason, Oct 4, 2021
  12. 1/2 object.[ch]: mark object type names for translationÆvar Arnfjörð Bjarmason, Oct 4, 2021
  13. Eric SunshineOct 4, 2021
  14. Bagas SanjayaOct 5, 2021
  15. Ævar Arnfjörð BjarmasonOct 5, 2021
  16. Jeff KingOct 6, 2021
  17. Junio C HamanoOct 6, 2021
  18. Jeff KingOct 6, 2021
  19. Junio C HamanoOct 7, 2021
  20. 2/2 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Oct 4, 2021
  21. Jeff KingOct 6, 2021
  22. 0/3 i18n: improve translatability of ambiguous object outputÆvar Arnfjörð Bjarmason, Oct 8, 2021
  23. 1/3 object-name: remove unreachable "unknown type" handlingÆvar Arnfjörð Bjarmason, Oct 8, 2021
  24. 2/3 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Oct 8, 2021
  25. 3/3 object-name: show date for ambiguous tag objectsÆvar Arnfjörð Bjarmason, Oct 8, 2021
  26. 0/3 object-name: make ambiguous object output translatable + show tag dateÆvar Arnfjörð Bjarmason, Nov 22, 2021
  27. 3/3 object-name: show date for ambiguous tag objectsÆvar Arnfjörð Bjarmason, Nov 22, 2021
  28. 1/3 object-name: remove unreachable "unknown type" handlingÆvar Arnfjörð Bjarmason, Nov 22, 2021
  29. Jeff KingNov 22, 2021
  30. 2/3 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Nov 22, 2021
  31. 0/6 object-name: make ambiguous object output translatable + show tag dateÆvar Arnfjörð Bjarmason, Nov 25, 2021
  32. 1/6 object-name tests: add tests for ambiguous object blind spotsÆvar Arnfjörð Bjarmason, Nov 25, 2021
  33. Josh SteadmonDec 23, 2021
  34. 2/6 object-name: explicitly handle OBJ_BAD in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Nov 25, 2021
  35. Josh SteadmonDec 23, 2021
  36. Junio C HamanoDec 23, 2021
  37. 3/6 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Nov 25, 2021
  38. fixup! object-name: make ambiguous object output translatableJosh Steadmon, Dec 23, 2021
  39. Junio C HamanoDec 23, 2021
  40. 4/6 object-name: show date for ambiguous tag objectsÆvar Arnfjörð Bjarmason, Nov 25, 2021
  41. 5/6 object-name: iterate ambiguous objects before showing headerÆvar Arnfjörð Bjarmason, Nov 25, 2021
  42. 6/6 object-name: re-use "struct strbuf" in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Nov 25, 2021
  43. 0/6 object-name: make ambiguous object output translatable + show tag dateÆvar Arnfjörð Bjarmason, Dec 28, 2021
  44. 1/6 object-name tests: add tests for ambiguous object blind spotsÆvar Arnfjörð Bjarmason, Dec 28, 2021
  45. Junio C HamanoDec 30, 2021
  46. 3/6 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Dec 28, 2021
  47. Junio C HamanoDec 30, 2021
  48. 2/6 object-name: explicitly handle OBJ_BAD in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Dec 28, 2021
  49. 4/6 object-name: show date for ambiguous tag objectsÆvar Arnfjörð Bjarmason, Dec 28, 2021
  50. Junio C HamanoDec 30, 2021
  51. 5/6 object-name: iterate ambiguous objects before showing headerÆvar Arnfjörð Bjarmason, Dec 28, 2021
  52. 6/6 object-name: re-use "struct strbuf" in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Dec 28, 2021
  53. 0/7 progress: test fixes / cleanupÆvar Arnfjörð Bjarmason, Dec 28, 2021
  54. 1/7 leak tests: fix a memory leak in "test-progress" helperÆvar Arnfjörð Bjarmason, Dec 28, 2021
  55. 2/7 progress.c test helper: add missing bracesÆvar Arnfjörð Bjarmason, Dec 28, 2021
  56. 3/7 progress.c tests: make start/stop commands on stdinÆvar Arnfjörð Bjarmason, Dec 28, 2021
  57. Johannes AltmanningerDec 28, 2021
  58. 4/7 progress.c tests: test some invalid usageÆvar Arnfjörð Bjarmason, Dec 28, 2021
  59. Johannes AltmanningerDec 28, 2021
  60. 6/7 pack-bitmap-write.c: don't return without stop_progress()Ævar Arnfjörð Bjarmason, Dec 28, 2021
  61. 5/7 progress.c: add temporary variable from progress structÆvar Arnfjörð Bjarmason, Dec 28, 2021
  62. René ScharfeDec 28, 2021
  63. Johannes AltmanningerDec 28, 2021
  64. 7/7 *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO)Ævar Arnfjörð Bjarmason, Dec 28, 2021
  65. René ScharfeDec 28, 2021
  66. Ævar Arnfjörð BjarmasonDec 28, 2021
  67. Junio C HamanoJan 8, 2022
  68. 0/6 object-name: make ambiguous object output translatable + show tag dateÆvar Arnfjörð Bjarmason, Jan 12, 2022
  69. 1/6 object-name tests: add tests for ambiguous object blind spotsÆvar Arnfjörð Bjarmason, Jan 12, 2022
  70. Junio C HamanoJan 13, 2022
  71. Ævar Arnfjörð BjarmasonJan 14, 2022
  72. Junio C HamanoJan 14, 2022
  73. 2/6 object-name: explicitly handle OBJ_BAD in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Jan 12, 2022
  74. 3/6 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Jan 12, 2022
  75. 4/6 object-name: show date for ambiguous tag objectsÆvar Arnfjörð Bjarmason, Jan 12, 2022
  76. Junio C HamanoJan 13, 2022
  77. Ævar Arnfjörð BjarmasonJan 14, 2022
  78. Junio C HamanoJan 14, 2022
  79. Ævar Arnfjörð BjarmasonJan 14, 2022
  80. 5/6 object-name: iterate ambiguous objects before showing headerÆvar Arnfjörð Bjarmason, Jan 12, 2022
  81. 6/6 object-name: re-use "struct strbuf" in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Jan 12, 2022
  82. 0/7 object-name: make ambiguous object output translatable + show tag dateÆvar Arnfjörð Bjarmason, Jan 27, 2022
  83. 1/7 object-name tests: add tests for ambiguous object blind spotsÆvar Arnfjörð Bjarmason, Jan 27, 2022
  84. 2/7 object-name: explicitly handle OBJ_BAD in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Jan 27, 2022
  85. 3/7 object-name: explicitly handle bad tags in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Jan 27, 2022
  86. 4/7 object-name: make ambiguous object output translatableÆvar Arnfjörð Bjarmason, Jan 27, 2022
  87. 6/7 object-name: iterate ambiguous objects before showing headerÆvar Arnfjörð Bjarmason, Jan 27, 2022
  88. 5/7 object-name: show date for ambiguous tag objectsÆvar Arnfjörð Bjarmason, Jan 27, 2022
  89. 7/7 object-name: re-use "struct strbuf" in show_ambiguous_object()Ævar Arnfjörð Bjarmason, Jan 27, 2022
  90. Junio C HamanoJan 27, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.