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

Re: Start handling references internally as a sorted in-memory list

From
Linus Torvalds <torvalds@osdl.org>
Date
Sep 12, 2006, 01:05 UTC
Message-ID
<Pine.LNX.4.64.0609111800590.27779@g5.osdl.org>
In-Reply-To
<7vsliyez2m.fsf@assigned-by-dhcp.cox.net>
On Mon, 11 Sep 2006, Junio C Hamano wrote:
> 
> I thought what triggered the restructuring of this part was N
> actually being large enough to cause pain to some people, so I
> suspect later might need to be reasonably soon ;-).

Well, the current problems is actually related to the _IO_ load of O(n) (and to some degree the disk usage), and that is indeed fairly high. The new O(n**2) is all for a (very) simple CPU loop, so I suspect "n" has to be in the millions before it even approaches the IO load problem ;)

> I've been wondering what happens if you pack "refs/heads/foo",
> delete it, and create "refs/heads/foo/bar" with your proposal.
> I'll find the answer (which is _not_ "42") in the updated
> do_for_each_ref(), I guess.

Right now, the code in question only contains some preliminary support for refs at all, and it's technically incorrect. If you ever have a "packed-refs" file that contains _anything_ outside of the actual loose refs, it won't do the right thing.

But I'd rather have this as a base, than send one huge patch that does everything.

For example, right now the code doesn't support negative refs (even the simple kind) at all, so you don't need to even have the "file turned into a directory" case for it to "not work".

So right now it's basically just scaffolding. It's hopefully _good_ scaffolding, so that when I send the next few patches, it actually starts working.. ;)

		Linus
Previous: Junio C HamanoNext: Chris Wedgwood
Message 5 of 21 in “Allow multiple "git_path()" uses”
  1. Linus TorvaldsSep 11, 2006
  2. Start handling references internally as a sorted in-memory listLinus Torvalds, Sep 11, 2006
  3. Linus TorvaldsSep 11, 2006
  4. Junio C HamanoSep 11, 2006
  5. Linus TorvaldsSep 12, 2006
  6. Chris WedgwoodSep 12, 2006
  7. Add support for negative refsLinus Torvalds, Sep 12, 2006
  8. Make ref resolution sanerLinus Torvalds, Sep 12, 2006
  9. Jeff KingSep 12, 2006
  10. Linus TorvaldsSep 12, 2006
  11. [RFC] git-pack-refs --pruneJunio C Hamano, Sep 18, 2006
  12. Linus TorvaldsSep 18, 2006
  13. Junio C HamanoSep 18, 2006
  14. Junio C HamanoSep 21, 2006
  15. 1/5 symbolit-ref: fix resolve_ref conversion.Junio C Hamano, Sep 21, 2006
  16. 2/5 Add callback data to for_each_ref() family.Junio C Hamano, Sep 21, 2006
  17. 3/5 Tell between packed, unpacked and symbolic refs.Junio C Hamano, Sep 21, 2006
  18. 4/5 pack-refs: do not pack symbolic refs.Junio C Hamano, Sep 21, 2006
  19. 5/5 git-pack-refs --pruneJunio C Hamano, Sep 21, 2006
  20. Linus TorvaldsSep 21, 2006
  21. Junio C HamanoSep 22, 2006

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.