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

Re: [PATCH 5/5] builtin/repo: find tree with most entries

From
Patrick Steinhardt <ps@pks.im>
Date
Feb 4, 2026, 08:28 UTC
Message-ID
<aYMDL4m7Ceifl1Ja@pks.im>
In-Reply-To
<xmqqldh9qw5d.fsf@gitster.g>
On Tue, Feb 03, 2026 at 02:50:38PM -0800, Junio C Hamano wrote:
Show 10 quoted lines
> Justin Tobler <jltobler@gmail.com> writes:
> 
> > The size of a tree object usually corresponds with the number of entries
> > it has. While iterating through objects in the repository for
> > git-repo-structure, identify the tree with the most entries and display
> > it in the output.
> 
> All of these "largest" and "most", it would be a lot more
> interesting if we can give not just these extreme values but
> distrubution, possibly in a graphical way for bonus points.

That would be amazing indeed! I think having the largest values is still valuable as it allows you to detect weird outliers quite easily. But having a histogram would of course give the bigger picture.

I guess the challenging part would be to compute the buckets of that histogram in a streaming fashion. But I guess we could:

  1. Pick a target number of buckets.
  2. Track the maximum respective values as we stream.
  3. Merge existing buckets and create new ones in case the maximum
     value changes.

The target number of buckets may not necessarily be the same number as the number of buckets that we will eventually print for increased resolution.

The distributions could then be printed as an ASCII bar chart, for example something like:

    0-50   │████████████████████████████████████████ 1,247
   50-100  │█████████████████████████████████ 812
  100-150  │█████████████ 401
  150-200  │████████ 253
  200-250  │████ 128
  250-300  │██ 67
  300+     │▏ 12
           0        250       500       750      1k     1.2k count
    bytes / count

From my point of view that would be the cherry on top of the new tool :) I'd personally still like to learn about maximum values in the table, as I've found that info to be useful with some customer incidents in the past. It's not giving you a trend, but it immediately gives you some good signal that the repo shape might be weird if you have commits with hundreds of parents.

So maybe this is another step we can do in a subsequent patch series?
Thanks!
Patrick
Previous: Junio C HamanoNext: Junio C Hamano
Message 20 of 50 in “builtin/repo: include largest object information”
  1. 0/5 builtin/repo: include largest object informationJustin Tobler, Feb 3, 2026
  2. 1/5 builtin/repo: update stats for each objectJustin Tobler, Feb 3, 2026
  3. Junio C HamanoFeb 3, 2026
  4. Justin ToblerFeb 18, 2026
  5. Junio C HamanoFeb 26, 2026
  6. Justin ToblerFeb 26, 2026
  7. 2/5 builtin/repo: collect largest inflated objectsJustin Tobler, Feb 3, 2026
  8. Junio C HamanoFeb 3, 2026
  9. Justin ToblerFeb 18, 2026
  10. 3/5 builtin/repo: add OID annotations to table outputJustin Tobler, Feb 3, 2026
  11. Patrick SteinhardtFeb 13, 2026
  12. Justin ToblerFeb 18, 2026
  13. 4/5 builtin/repo: find commit with most parentsJustin Tobler, Feb 3, 2026
  14. Junio C HamanoFeb 3, 2026
  15. Kristoffer HaugsbakkFeb 3, 2026
  16. Junio C HamanoFeb 3, 2026
  17. Justin ToblerFeb 18, 2026
  18. 5/5 builtin/repo: find tree with most entriesJustin Tobler, Feb 3, 2026
  19. Junio C HamanoFeb 3, 2026
  20. Patrick SteinhardtFeb 4, 2026
  21. Junio C HamanoFeb 4, 2026
  22. 0/5 builtin/repo: include largest object informationJustin Tobler, Feb 23, 2026
  23. 1/5 builtin/repo: update stats for each objectJustin Tobler, Feb 23, 2026
  24. 2/5 builtin/repo: collect largest inflated objectsJustin Tobler, Feb 23, 2026
  25. Junio C HamanoFeb 26, 2026
  26. Justin ToblerMar 2, 2026
  27. Lucas Seiki OshiroFeb 28, 2026
  28. Justin ToblerMar 2, 2026
  29. 3/5 builtin/repo: add OID annotations to table outputJustin Tobler, Feb 23, 2026
  30. Junio C HamanoFeb 26, 2026
  31. Justin ToblerMar 2, 2026
  32. 4/5 builtin/repo: find commit with most parentsJustin Tobler, Feb 23, 2026
  33. 5/5 builtin/repo: find tree with most entriesJustin Tobler, Feb 23, 2026
  34. Patrick SteinhardtFeb 24, 2026
  35. Lucas Seiki OshiroFeb 28, 2026
  36. Justin ToblerMar 1, 2026
  37. 0/6 builtin/repo: include largest object informationJustin Tobler, Mar 2, 2026
  38. 1/6 builtin/repo: update stats for each objectJustin Tobler, Mar 2, 2026
  39. 2/6 builtin/repo: add helper for printing keyvalue outputJustin Tobler, Mar 2, 2026
  40. Patrick SteinhardtMar 3, 2026
  41. Junio C HamanoMar 3, 2026
  42. Justin ToblerMar 3, 2026
  43. 3/6 builtin/repo: collect largest inflated objectsJustin Tobler, Mar 2, 2026
  44. Patrick SteinhardtMar 3, 2026
  45. 4/6 builtin/repo: add OID annotations to table outputJustin Tobler, Mar 2, 2026
  46. 5/6 builtin/repo: find commit with most parentsJustin Tobler, Mar 2, 2026
  47. 6/6 builtin/repo: find tree with most entriesJustin Tobler, Mar 2, 2026
  48. Junio C HamanoMar 2, 2026
  49. Junio C HamanoMar 6, 2026
  50. Justin ToblerMar 8, 2026

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.