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

Re: [PATCH 2/2] sha1_file: fix iterating loose alternate objects

From
Jonathon Mah <me@jonathonmah.com>
Date
Feb 2, 2015, 18:37 UTC
Message-ID
<9215E7CF-4A6C-48ED-8A63-76085D5B151A@jonathonmah.com>
In-Reply-To
<20150202175259.GA24025@peff.net>
Show 24 quoted lines
> On 2015-02-02, at 09:53, Jeff King <peff@peff.net> wrote:
> 
> I think this is probably the best fix, and is the pattern we use
> elsewhere when touching alt->base.
> 
> We _could_ further change this to have for_each_loose_file_in_objdir
> actually use alt->base as its scratch buffer, writing the object
> filenames into the end of it (i.e., what it was designed for). But:
> 
>  1. We still need a strbuf scratch-buffer for the non-alternate object
>     directory. So we'd have to push more code there to over-allocate
>     the buffer, and then for_each_loose_file_in_objdir would assume
>     we always feed it a buffer with the extra slop. That would work,
>     but I find the strbuf approach a little safer; there's not an
>     implicit over-allocation far away in the code preventing us from
>     overflowing a buffer.
> 
>  2. The reason for the existing alt->base behavior is that the
>     sha1_file code gets fed objects one at a time, and don't want to
>     pay strbuf overhead for each. With the iterator, we know we are
>     going to hit a bunch of objects, so we only have to pay the strbuf
>     overhead once for the iteration. So there's not the same
>     performance penalty, and we can stick with the strbuf if we prefer
>     it.
Thanks for your feedback. I considered the same, and came to a similar conclusion. The strbuf cost is only once per alternate, so I feel on balance it's more robust to use alt->base consistently inside each function, rather than have this a more fragile special case to save allocation of only one path.
Updated the test patch.

Jonathon Mah me@JonathonMah.com

Previous: Jeff KingNext: Jeff King
Message 4 of 5 in “t5710-info-alternate: demonstrate bug in unpacked pruning”
  1. 1/2 t5710-info-alternate: demonstrate bug in unpacked pruningJonathon Mah, Feb 1, 2015
  2. 2/2 sha1_file: fix iterating loose alternate objectsJonathon Mah, Feb 1, 2015
  3. Jeff KingFeb 2, 2015
  4. Jonathon MahFeb 2, 2015
  5. Jeff KingFeb 2, 2015

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.