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

Re: [PATCH 3/3] pretty: add abbrev option to %(describe)

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 24, 2021, 05:15 UTC
Message-ID
<xmqqv91n57g4.fsf@gitster.g>
In-Reply-To
<20211024014256.3569322-4-eschwartz@archlinux.org>
Eli Schwartz <eschwartz@archlinux.org> writes:
> The %(describe) placeholder by default, like `git describe`, uses a
> seven-character abbreviated commit hash. This may not be sufficient to
"hash" -> "object name".
> fully describe all git repos, resulting in a placeholder replacement

"all git repos" -> "all commits in a given repository" (there may be other valid way to clarify, but the point is that 'describe' does not describe 'git repos' in the sense that my repository gets description X while your repository gets description Y).

Show 6 quoted lines
> changing its length because the repository grew in size. This could
> cause the output of git-archive to change.
>
> Add the --abbrev option to `git describe` to the placeholder interface
> in order to provide tools to the user for fine-tuning project defaults
> and ensure reproducible archives.

Note that it is sad that --abbrev=<n> does not necessarily ensure reproducibility. To be more precise, I do not think it sacrifices uniqueness to make the output reproducible. You can get more than N hex-digits in the output if N is too small to ensure uniquness.

So it indeed is that this line of thought ...
> One alternative would be to just always specify --abbrev=40 but this may
> be a bit too biased...

... to use --abbrev=999 (because 40 is not the length of a full object name in the SHA-2 world) is the only reasonable way, if what you care about is the reproducibility.

    Side note.  I think "git describe --no-abbrev" is buggy in that
    it does not give a full object name; I didn't check the code,
    but it appears to be behaving the same way as "git describe
    --abbrev=0" (show no hexdigits).  Fixing this bug may possibly
    be a low-hanging fruit.

But even if the feature cannot be used to guarantee a full reproducibility, it is a good thing that we can now add this feature with minimum effort thanks to the previous two steps.

The refactoring I suggested in my review for the previous step will shine, if we want to do a good job parsing the --abbrev=<n> option, since such a code organization would make it a fairly easy addition to introduce "integer" type that calls match_placeholder_arg_value() to read the option value (like "string" does) and validate that the value is indeed an integer.

Would we want to support "--contains" as another boolean type? How about "--all" and "--long"? All three sound plausible candidates.

Thanks.
Previous: Eli SchwartzNext: Eli Schwartz
Message 6 of 46 in “Add some more options to the pretty-formats”
  1. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 24, 2021
  2. 1/3 pretty.c: rename describe options variable to more descriptive nameEli Schwartz, Oct 24, 2021
  3. Junio C HamanoOct 24, 2021
  4. Eli SchwartzOct 24, 2021
  5. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 24, 2021
  6. Junio C HamanoOct 24, 2021
  7. Eli SchwartzOct 24, 2021
  8. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 24, 2021
  9. Junio C HamanoOct 24, 2021
  10. Eli SchwartzOct 24, 2021
  11. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 26, 2021
  12. 1/3 pretty.c: rework describe options parsing for better extensibilityEli Schwartz, Oct 26, 2021
  13. Eric SunshineOct 26, 2021
  14. Eli SchwartzOct 26, 2021
  15. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 26, 2021
  16. Eric SunshineOct 26, 2021
  17. Eli SchwartzOct 26, 2021
  18. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 26, 2021
  19. Eric SunshineOct 26, 2021
  20. Đoàn Trần Công DanhOct 26, 2021
  21. Eric SunshineOct 26, 2021
  22. Eli SchwartzOct 26, 2021
  23. Carlo ArenasOct 27, 2021
  24. Johannes SchindelinNov 3, 2021
  25. Johannes SchindelinNov 4, 2021
  26. Eli SchwartzNov 7, 2021
  27. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 29, 2021
  28. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 29, 2021
  29. Junio C HamanoOct 29, 2021
  30. Eli SchwartzOct 29, 2021
  31. Junio C HamanoOct 29, 2021
  32. Junio C HamanoOct 29, 2021
  33. Eli SchwartzOct 29, 2021
  34. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 29, 2021
  35. Eric SunshineOct 29, 2021
  36. Eli SchwartzOct 29, 2021
  37. 1/3 pretty.c: rework describe options parsing for better extensibilityEli Schwartz, Oct 29, 2021
  38. Junio C HamanoOct 29, 2021
  39. Eli SchwartzOct 29, 2021
  40. Junio C HamanoOct 29, 2021
  41. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 31, 2021
  42. 1/3 pretty.c: rework describe options parsing for better extensibilityEli Schwartz, Oct 31, 2021
  43. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 31, 2021
  44. Junio C HamanoOct 31, 2021
  45. Eli SchwartzOct 31, 2021
  46. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 31, 2021

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.