From: "eslam reda via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: eslam reda <eslam.reda.div@gmail.com>
Subject: [PATCH v4 00/10] repo info: add category/path keys and --path-format
Date: Thu, 26 Feb 2026 21:14:37 +0000 [thread overview]
Message-ID: <pull.2208.v4.git.git.1772140487.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2208.v3.git.git.1771875812.gitgitgadget@gmail.com>
This series now focuses only on git repo info improvements.
===========================================================
It introduces category-aware key requests, adds path-oriented keys (path.*),
and adds --path-format=(absolute|relative) so scripts can request stable
path rendering behavior.
What this PR does
=================
For git repo info, this series:
* introduces explicit info-context plumbing in the codepath,
* adds category-key expansion (for example, layout expands to layout.*),
* adds path-oriented keys (path.*) for common repository locations,
* adds --path-format=(absolute|relative) to control path output style.
Tests and documentation are updated accordingly.
What this PR does NOT do
========================
* No git repo structure feature changes.
* No t1901 structure test changes.
* No structure metrics/docs additions.
Why this change
===============
* Makes git repo info more script-friendly by reducing the need for
multiple plumbing calls.
* Improves output ergonomics through category requests and explicit path
formatting.
* Keeps this series narrowly scoped and non-overlapping with in-flight repo
structure work.
Commit structure
================
* repo: teach info context and category keys
* repo: add path keys to repo info
* repo: add --path-format for info path output
* t1900: cover repo info path keys and path-format
* docs: describe repo info path keys
All commits are signed off with the same real-name identity.
Changes since previous revision
===============================
* Dropped all repo structure code, tests, and docs from this PR.
* Kept only the repo info subset and matching t1900/documentation updates.
* Preserved split, review-friendly commit structure.
Validation
==========
Focused:
* make -C t test T=t1900-repo.sh (Linux container): passed.
Full:
* make test in Linux Docker environment: failed 0 (with expected
prereq-based broken/skipped categories).
Eslam reda ragheb (10):
repo: teach info context and category keys
repo: add path keys to repo info
repo: add --path-format for info path output
repo: add structure max object size metrics
repo: add structure topology and path-depth metrics
repo: add aggregate structure totals to keyvalue output
t1900: cover repo info path keys and path-format
t1901: extend structure metric coverage and portability
docs: describe repo info path keys and structure metrics
repo: reduce repetition in structure keyvalue output
Documentation/git-repo.adoc | 67 ++++-
builtin/repo.c | 584 ++++++++++++++++++++++++++++++++----
t/t1900-repo.sh | 196 ++++++++++++
t/t1901-repo-structure.sh | 250 +++++++++++----
4 files changed, 977 insertions(+), 120 deletions(-)
base-commit: 7c02d39fc2ed2702223c7674f73150d9a7e61ba4
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2208%2Feslam-reda-div%2Fgsoc-contribute-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2208/eslam-reda-div/gsoc-contribute-v4
Pull-Request: https://github.com/git/git/pull/2208
Range-diff vs v3:
1: e9ea572e52 = 1: 99c8058298 repo: teach info context and category keys
2: 348e361fe7 = 2: 6d5b9ff075 repo: add path keys to repo info
3: 93585ad079 = 3: 5c438d045b repo: add --path-format for info path output
-: ---------- > 4: 504d9cf7a0 repo: add structure max object size metrics
-: ---------- > 5: 4b502925c9 repo: add structure topology and path-depth metrics
-: ---------- > 6: 1751181950 repo: add aggregate structure totals to keyvalue output
4: 6ea263fee9 = 7: fd18f28db0 t1900: cover repo info path keys and path-format
-: ---------- > 8: 0525ed4cd9 t1901: extend structure metric coverage and portability
5: a2a6768042 ! 9: f17c0f03e5 docs: describe repo info path keys
@@ Metadata
Author: Eslam reda ragheb <eslam.reda.div@gmail.com>
## Commit message ##
- docs: describe repo info path keys
+ docs: describe repo info path keys and structure metrics
- Document repo info category keys, path.* keys, and
- --path-format behavior.
+ Document the newly added repo info capabilities, including
+ category keys and path-oriented key definitions.
+
+ Also describe --path-format behavior for path outputs.
+
+ Update git repo structure documentation to cover newly reported
+ maxima and aggregate keyvalue/nul fields.
+
+ This keeps command behavior and output keys fully specified for
+ users and scripts.
Signed-off-by: Eslam reda ragheb <eslam.reda.div@gmail.com>
@@ Documentation/git-repo.adoc: supported:
`structure [--format=(table|keyvalue|nul) | -z]`::
Retrieve statistics about the current repository structure. The
following kinds of information are reported:
+@@ Documentation/git-repo.adoc: supported:
+ * Reachable object counts categorized by type
+ * Total inflated size of reachable objects by type
+ * Total disk size of reachable objects by type
++* Largest inflated reachable object size by type
++* Largest disk size of a reachable object by type
++* Largest parent count among reachable commits
++* Largest entry count among reachable trees
++* Longest and deepest path among reachable blobs
++* Deepest annotated tag chain
+ +
+ The output format can be chosen through the flag `--format`. Three formats are
+ supported:
+@@ Documentation/git-repo.adoc: supported:
+ `keyvalue`:::
+ Each line of output contains a key-value pair for a repository stat.
+ The '=' character is used to delimit between the key and the value.
++ Both aggregate metrics and per-type metrics are included.
+ Values containing "unusual" characters are quoted as explained for the
+ configuration variable `core.quotePath` (see linkgit:git-config[1]).
+
@@ Documentation/git-repo.adoc: supported:
INFO KEYS
-: ---------- > 10: 1bc100d6ca repo: reduce repetition in structure keyvalue output
--
gitgitgadget
next prev parent reply other threads:[~2026-02-26 21:14 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-22 18:28 [PATCH 0/3] repo: extend info path reporting and structure statistics eslam reda via GitGitGadget
2026-02-22 18:28 ` [PATCH 1/3] repo: extend info paths " eslam-reda-div via GitGitGadget
2026-02-22 20:35 ` Lucas Seiki Oshiro
2026-02-23 3:02 ` Justin Tobler
2026-02-22 18:28 ` [PATCH 2/3] t1900,t1901: make repo tests hash-agnostic and wc-portable Eslam reda ragheb via GitGitGadget
2026-02-22 20:46 ` Lucas Seiki Oshiro
2026-02-22 18:28 ` [PATCH 3/3] t1900,t1901: fix test portability issues Eslam reda ragheb via GitGitGadget
2026-02-22 22:37 ` [PATCH 0/3] repo: extend info path reporting and structure statistics Junio C Hamano
2026-02-23 14:21 ` [PATCH v2 0/9] " eslam reda via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 1/9] repo: teach info context and category keys Eslam reda ragheb via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 2/9] repo: add path keys to repo info Eslam reda ragheb via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 4/9] repo: add structure max object size metrics Eslam reda ragheb via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 5/9] repo: add structure topology and path-depth metrics Eslam reda ragheb via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 6/9] repo: add aggregate structure totals to keyvalue output Eslam reda ragheb via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 7/9] t1900: cover repo info path keys and path-format Eslam reda ragheb via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 8/9] t1901: extend structure metric coverage and portability Eslam reda ragheb via GitGitGadget
2026-02-23 14:21 ` [PATCH v2 9/9] docs: describe repo info path keys and structure metrics Eslam reda ragheb via GitGitGadget
2026-02-23 19:43 ` [PATCH v3 0/5] repo: extend info path reporting and structure statistics eslam reda via GitGitGadget
2026-02-23 19:43 ` [PATCH v3 1/5] repo: teach info context and category keys Eslam reda ragheb via GitGitGadget
2026-02-23 19:43 ` [PATCH v3 2/5] repo: add path keys to repo info Eslam reda ragheb via GitGitGadget
2026-02-23 19:43 ` [PATCH v3 3/5] repo: add --path-format for info path output Eslam reda ragheb via GitGitGadget
2026-02-23 19:43 ` [PATCH v3 4/5] t1900: cover repo info path keys and path-format Eslam reda ragheb via GitGitGadget
2026-02-23 19:43 ` [PATCH v3 5/5] docs: describe repo info path keys Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` eslam reda via GitGitGadget [this message]
2026-02-26 21:14 ` [PATCH v4 01/10] repo: teach info context and category keys Eslam reda ragheb via GitGitGadget
2026-02-26 23:21 ` Junio C Hamano
2026-02-26 21:14 ` [PATCH v4 02/10] repo: add path keys to repo info Eslam reda ragheb via GitGitGadget
2026-02-26 23:29 ` Junio C Hamano
2026-02-27 9:04 ` Phillip Wood
2026-02-27 19:51 ` Junio C Hamano
2026-03-01 10:36 ` Phillip Wood
2026-03-02 6:42 ` Junio C Hamano
2026-02-26 21:14 ` [PATCH v4 03/10] repo: add --path-format for info path output Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` [PATCH v4 04/10] repo: add structure max object size metrics Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` [PATCH v4 05/10] repo: add structure topology and path-depth metrics Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` [PATCH v4 06/10] repo: add aggregate structure totals to keyvalue output Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` [PATCH v4 07/10] t1900: cover repo info path keys and path-format Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` [PATCH v4 08/10] t1901: extend structure metric coverage and portability Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` [PATCH v4 09/10] docs: describe repo info path keys and structure metrics Eslam reda ragheb via GitGitGadget
2026-02-26 21:14 ` [PATCH v4 10/10] repo: reduce repetition in structure keyvalue output Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 00/11] repo info: add category/path keys and --path-format eslam reda via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 01/11] repo: teach info context and category keys Eslam reda ragheb via GitGitGadget
2026-02-27 21:42 ` Lucas Seiki Oshiro
2026-02-27 19:30 ` [PATCH v5 02/11] repo: add path keys to repo info Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 03/11] repo: add --path-format for info path output Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 04/11] repo: add structure max object size metrics Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 05/11] repo: add structure topology and path-depth metrics Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 06/11] repo: add aggregate structure totals to keyvalue output Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 07/11] t1900: cover repo info path keys and path-format Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 08/11] t1901: extend structure metric coverage and portability Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 09/11] docs: describe repo info path keys and structure metrics Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 10/11] repo: reduce repetition in structure keyvalue output Eslam reda ragheb via GitGitGadget
2026-02-27 19:30 ` [PATCH v5 11/11] repo: refine path keys for repo info Eslam reda ragheb via GitGitGadget
2026-03-01 10:33 ` Phillip Wood
2026-02-27 21:52 ` [PATCH v5 00/11] repo info: add category/path keys and --path-format Lucas Seiki Oshiro
2026-03-02 5:15 ` [PATCH v6 0/6] " eslam reda via GitGitGadget
2026-03-02 5:15 ` [PATCH v6 1/6] repo: introduce repo_info context plumbing Eslam reda ragheb via GitGitGadget
2026-03-02 5:15 ` [PATCH v6 2/6] repo: support category requests in repo info Eslam reda ragheb via GitGitGadget
2026-03-02 5:15 ` [PATCH v6 3/6] repo: add path keys to " Eslam reda ragheb via GitGitGadget
2026-03-02 5:15 ` [PATCH v6 4/6] repo: add --path-format for info path output Eslam reda ragheb via GitGitGadget
2026-03-02 5:15 ` [PATCH v6 5/6] t1900: cover repo info path keys and path-format Eslam reda ragheb via GitGitGadget
2026-03-02 5:15 ` [PATCH v6 6/6] docs: describe repo info path keys Eslam reda ragheb via GitGitGadget
2026-03-18 20:44 ` [PATCH v6 0/6] repo info: add category/path keys and --path-format Jialong Wang
2026-03-19 3:36 ` K Jayatheerth
2026-03-19 20:32 ` Jerry Wang
2026-03-20 1:49 ` K Jayatheerth
2026-03-19 20:58 ` [PATCH v6 5/6] t1900: cover repo info path keys and path-format Jialong Wang
2026-03-19 20:59 ` [PATCH] t1900: cover repo info path keys in non-default layouts Jialong Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.2208.v4.git.git.1772140487.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=eslam.reda.div@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.