[PATCH v2 0/5] builtin/repo: include largest object information
- From
Justin Tobler <jltobler@gmail.com>
- Date
- Feb 23, 2026, 17:41 UTC
- Message-ID
- <20260223174120.2356504-1-jltobler@gmail.com>
- In-Reply-To
- <20260203221758.1164434-1-jltobler@gmail.com>
Greetings,
The "structure" output for git-repo(1) currently provides count information for references/objects as well as total inflated/disk sizes of objects by type. Info regarding the largest individual objects in the repository is not yet collected, but would be useful to users wishing to identify such large objects.
This patch series adds the following data points: - The OID and size of the largest objects by object type - The OID and parent count of the commit with the most parents - The OID and entries count of the tree with the most entries
Changes from V1:
- Avoided duplicating the annotation string by handing over ownership. - I decided to leave the `struct object_stats` structure alone for now as storing the various object values per-type does make it convenient to calulate the various totals. I may revisit this in a future series though.
Thanks, -Justin
Justin Tobler (5): builtin/repo: update stats for each object builtin/repo: collect largest inflated objects builtin/repo: add OID annotations to table output builtin/repo: find commit with most parents builtin/repo: find tree with most entries
Documentation/git-repo.adoc | 1 + builtin/repo.c | 249 +++++++++++++++++++++++++++++++----- t/t1901-repo-structure.sh | 143 +++++++++++++-------- 3 files changed, 313 insertions(+), 80 deletions(-)
Range-diff against v1:
1: 94a44e0e0f = 1: 94a44e0e0f builtin/repo: update stats for each object
2: 92dbf34f2c = 2: 92dbf34f2c builtin/repo: collect largest inflated objects
3: 1811d03afe ! 3: 1457d5d59c builtin/repo: add OID annotations to table output
@@ builtin/repo.c: static void stats_table_vaddf(struct stats_table *table,
+ entry->index = table->annotations.nr + 1;
+ strbuf_addf(&buf, "[%" PRIuMAX "] %s", (uintmax_t)entry->index,
+ oid_to_hex(entry->oid));
-+ string_list_append(&table->annotations, buf.buf);
++ string_list_append_nodup(&table->annotations, strbuf_detach(&buf, NULL));
+ }
if (entry->value) {
int value_width = utf8_strwidth(entry->value);
4: 471d352cc1 = 4: f4e92e3f09 builtin/repo: find commit with most parents
5: 7f1b7f9657 = 5: af404fcc6c builtin/repo: find tree with most entriesbase-commit: 67ad42147a7acc2af6074753ebd03d904476118f
-- 2.53.0