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

Re: What's cooking in git.git (Jan 2009, #05; Wed, 21)

From
Jeff King <peff@peff.net>
Date
Jan 31, 2009, 07:36 UTC
Message-ID
<20090131073640.GF3033@coredump.intra.peff.net>
In-Reply-To
<1233384354.10045.170.camel@maia.lan>
On Sat, Jan 31, 2009 at 07:45:54PM +1300, Sam Vilain wrote:
Show 12 quoted lines
> Is there any reason why the split has to be cast in stone at all?
> 
> ie, the code could just scan the root tree of the branch, and
> progressively descend into sub-trees based on a partial match of the
> object for which the note is to be found.  If you find a partial name
> then you expect that it is a tree and descend into it and scan for the
> rest.  If you find a complete name then you expect that it is a blob and
> open it.  If it turns out to be a tree then there are multiple notes for
> that commit.  Then I think you get the best of both worlds; you can
> start with a simple flat structure and then later someone can come along
> and make it split it when there are more than N entries in the root tree
> (where N is determined from profiling etc).

Actually, lookup is even easier than that: we iterate through the entire tree recursively and add everything to a flat hash. So we really don't care there what the layout is like (just take the first 40 characters of any directory name as a hash).

But it violates the usual git principle of "content has a unique name". What happens when I add "a/b" and you add "ab"? A dumb merge will let both co-exist, but which one do you return for lookup?

Show 7 quoted lines
> One would be to allow grafts to be noted.  These might want to live in a
> different place to refs/notes/commits, like refs/notes/grafts, to avoid
> performance issues and to recognise they are a different type of data.
> A second would be for commit header information - particularly the
> author field and commit description - to be amended.  I think this all
> belongs under refs/notes/commits.  These are in essence, historical
> corrections that don't need to alter the tree.

I agree that there should be multiple note hierarchies, and multiple keys within each hierarchy. I have posted some thoughts on that before (and you should be able to find them searching for "notes" in the list archive), but unfortunately I have not had time to sit down and really work out a notes implementation that matches what I posted (which I don't think is that far from Dscho's work in next).

And I think what you are proposing (here and in the rest of your message) is that certain notes hierarchies may have particular formats and semantics. And that sounds reasonable to me.

-Peff
Previous: Sam VilainNext: Sam Vilain
Message 17 of 23 in “What's cooking in git.git (Jan 2009, #05; Wed, 21)”
  1. Junio C HamanoJan 22, 2009
  2. Jeff KingJan 22, 2009
  3. 1/5 Windows: Fix signal numbersJeff King, Jan 22, 2009
  4. 2/5 diff: refactor tempfile cleanup handlingJeff King, Jan 22, 2009
  5. 3/5 chain kill signals for cleanup functionsJeff King, Jan 22, 2009
  6. Jeff KingJan 30, 2009
  7. Johannes SixtJan 30, 2009
  8. Jeff KingJan 30, 2009
  9. Junio C HamanoJan 31, 2009
  10. Jeff KingJan 31, 2009
  11. Jeff KingJan 31, 2009
  12. Junio C HamanoFeb 1, 2009
  13. 4/5 refactor signal handling for cleanup functionsJeff King, Jan 22, 2009
  14. 5/5 pager: do wait_for_pager on signal deathJeff King, Jan 22, 2009
  15. Johannes SchindelinJan 22, 2009
  16. Sam VilainJan 31, 2009
  17. Jeff KingJan 31, 2009
  18. split notes [was: Re: What's cooking in git.git (Jan 2009, #05; Wed, 21)]Sam Vilain, Feb 1, 2009
  19. split notes [was: Re: What's cooking in git.git (Jan 2009, #05; Wed, 21)]Sam Vilain, Feb 1, 2009
  20. Jakub NarebskiFeb 1, 2009
  21. Boyd Stephen Smith Jr.Jan 22, 2009
  22. Junio C HamanoJan 23, 2009
  23. Boyd Stephen Smith Jr.Jan 27, 2009

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.