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

Re: [PATCH 1/4] notes: print note blob to stdout directly

From
Jeff King <peff@peff.net>
Date
Feb 15, 2024, 05:26 UTC
Message-ID
<20240215052640.GC2821179@coredump.intra.peff.net>
In-Reply-To
<xmqq5xys6zdr.fsf@gitster.g>
On Tue, Feb 13, 2024 at 09:35:28AM -0800, Junio C Hamano wrote:
Show 6 quoted lines
> Remind me if you can if we (1) had plans to allow non-blob objects
> as notes, or (2) actively support to have non-text blob objects as
> notes.  I _think_ we do assume people may try to add non-text blob
> as notes (while they accept that they cannot merge two such notes on
> the same object), but I do not recall if we planned to allow them to
> store trees and commits.
Short answer: no for (1) and yes for (2).

In my head non-blob notes were always something we'd eventually allow. But I don't think the "git notes" tool really helps you at all (it insists on being fed message content and makes the blob itself, rather than letting you specify an oid).

I wondered what the display side might do here (like, say, segfault). But it looks like the notes code does not even consider a subtree like this to be a note. It ends up in the "non_note" list of the notes struct (and format_note() on the display side explicitly ignores non-blobs anyway).

So it looks like it did not ever work, and nobody can even be using it accidentally (of course you can put whatever garbage you like under refs/notes/*, but if neither git-notes nor the display machinery works with it, I think we can discount that entirely).

Non-text blob objects, on the other hand, should be easy to do with "git notes add -F". Interestingly, the display code (in format_note() again) converts embedded NULs into newlines. I think this is an accidental behavior due to the use of strchrnul().

Of course it's reasonable to also store notes that aren't meant to be displayed via git-log, etc, at all. The textconv-caching machinery stores its results in a separate notes ref. Those should generally be text (since the point is to come up with something diff-able). But I think it would be perfectly reasonable for another mechanism to make use of notes in the same way and store binary goo.

(And of course we can store notes on any object, not just commits, as the textconv cache demonstrates. But I think that is orthogonal to what you're asking).

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 36 in “Speed up git-notes show”
  1. 0/4 Speed up git-notes showMaarten Bosmans, Feb 5, 2024
  2. 2/4 notes: use exisisting function stream_blob_to_fdMaarten Bosmans, Feb 5, 2024
  3. Eric SunshineFeb 5, 2024
  4. 1/4 notes: print note blob to stdout directlyMaarten Bosmans, Feb 5, 2024
  5. Junio C HamanoFeb 6, 2024
  6. Maarten BosmansFeb 6, 2024
  7. Junio C HamanoFeb 6, 2024
  8. Jeff KingFeb 13, 2024
  9. Junio C HamanoFeb 13, 2024
  10. Jeff KingFeb 15, 2024
  11. Junio C HamanoFeb 16, 2024
  12. Jeff KingFeb 17, 2024
  13. Junio C HamanoFeb 17, 2024
  14. Jeff KingFeb 17, 2024
  15. Maarten BosmansFeb 15, 2024
  16. Jeff KingFeb 15, 2024
  17. Maarten BosmansFeb 17, 2024
  18. Jeff KingFeb 20, 2024
  19. Maarten BosmansFeb 15, 2024
  20. Kristoffer HaugsbakkFeb 6, 2024
  21. 3/4 notes: do not clean up right before calling die()Maarten Bosmans, Feb 5, 2024
  22. 4/4 notes: use strbuf_attach to take ownership of the object contentsMaarten Bosmans, Feb 5, 2024
  23. Kristoffer HaugsbakkFeb 6, 2024
  24. Maarten BosmansFeb 6, 2024
  25. 0/5 Speed up git-notes showMaarten Bosmans, Feb 18, 2024
  26. 1/5 log: Move show_blob_object() to log.cMaarten Bosmans, Feb 18, 2024
  27. Junio C HamanoFeb 20, 2024
  28. Jeff KingFeb 20, 2024
  29. Junio C HamanoFeb 20, 2024
  30. Maarten BosmansFeb 20, 2024
  31. 3/5 notes: use existing function stream_blob_to_fdMaarten Bosmans, Feb 18, 2024
  32. 2/5 notes: avoid launching a child process to show a note blobMaarten Bosmans, Feb 18, 2024
  33. 5/5 notes: use strbuf_attach to take ownership of the object contentsMaarten Bosmans, Feb 18, 2024
  34. Jeff KingFeb 20, 2024
  35. Maarten BosmansFeb 20, 2024
  36. 4/5 notes: do not clean up right before calling die()Maarten Bosmans, Feb 18, 2024

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.