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

Re: invalid tree and commit object

From
Junio C Hamano <gitster@pobox.com>
Date
May 9, 2020, 20:27 UTC
Message-ID
<xmqqh7wovoop.fsf@gitster.c.googlers.com>
In-Reply-To
<938f0818-7e57-b883-009f-01db88ef8f65@web.de>
René Scharfe <l.s.r@web.de> writes:
> Hmm, this could lead to quadratic behavior in the worst case, can't it?

Oh, absolutely. But as you have shown, you'd need a specially crafted tree with early entries that are prefixes of later ones, which would rather be rare, and most of the time the bottom pointer would advance by one every time we consume one path.

So it is trading (hopefully rare) worst-case runtime with reduced storage cost.

> We could, however, reduce the names we add to the string_list to
> those that are possible candidates for conflict -- blobs followed by an
> entry whose name starts with the blob name followed by a dot and trees
> that follow an entry whose name matches in the same way.

Yes, that is a valid solution that strikes a different balance between allocation and runtime.

We may want to survey how commonly "bad" trees appear in real projects. Depending on the result, we might want to update the "limit re-scanning using the bottom pointer" hack we have been using in the unpack-trees code.

Thanks.
Previous: René ScharfeNext: René Scharfe
Message 7 of 23 in “invalid tree and commit object”
  1. Brandon WilliamsMay 9, 2020
  2. René ScharfeMay 9, 2020
  3. Johannes SchindelinMay 9, 2020
  4. René ScharfeMay 9, 2020
  5. Junio C HamanoMay 9, 2020
  6. René ScharfeMay 9, 2020
  7. Junio C HamanoMay 9, 2020
  8. René ScharfeMay 10, 2020
  9. René ScharfeMay 10, 2020
  10. Junio C HamanoMay 11, 2020
  11. Brandon WilliamsMay 13, 2020
  12. René ScharfeMay 21, 2020
  13. 1/4 fsck: fix a typo in a commentRené Scharfe, May 21, 2020
  14. Denton LiuMay 21, 2020
  15. René ScharfeMay 21, 2020
  16. 2/4 t1450: increase test coverage of in-tree d/f detectionRené Scharfe, May 21, 2020
  17. Denton LiuMay 21, 2020
  18. René ScharfeMay 21, 2020
  19. Junio C HamanoMay 21, 2020
  20. 3/4 t1450: demonstrate undetected in-tree d/f conflictRené Scharfe, May 21, 2020
  21. 4/4 fsck: detect more in-tree d/f conflictsRené Scharfe, May 21, 2020
  22. Junio C HamanoMay 10, 2020
  23. René ScharfeMay 21, 2020

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.