Subject: [PATCH v5 00/11] repo info: add category/path keys and --path-format

From: "eslam reda via GitGitGadget" <[email-masked]>
Date: Fri, 27 Feb 2026 19:30:29 +0000

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 (11):
  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
  repo: refine path keys for repo info

 Documentation/git-repo.adoc |  61 +++-
 builtin/repo.c              | 559 ++++++++++++++++++++++++++++++++----
 t/t1900-repo.sh             | 192 +++++++++++++
 t/t1901-repo-structure.sh   | 250 ++++++++++++----
 4 files changed, 942 insertions(+), 120 deletions(-)

base-commit: 7c02d39fc2ed2702223c7674f73150d9a7e61ba4
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2208%2Feslam-reda-div%2Fgsoc-contribute-v5
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2208/eslam-reda-div/gsoc-contribute-v5
Pull-Request: https://github.com/git/git/pull/2208

Range-diff vs v4:

  1:  99c8058298 =  1:  99c8058298 repo: teach info context and category keys
  2:  6d5b9ff075 =  2:  6d5b9ff075 repo: add path keys to repo info
  3:  5c438d045b =  3:  5c438d045b repo: add --path-format for info path output
  4:  504d9cf7a0 =  4:  504d9cf7a0 repo: add structure max object size metrics
  5:  4b502925c9 =  5:  4b502925c9 repo: add structure topology and path-depth metrics
  6:  1751181950 =  6:  1751181950 repo: add aggregate structure totals to keyvalue output
  7:  fd18f28db0 =  7:  fd18f28db0 t1900: cover repo info path keys and path-format
  8:  0525ed4cd9 =  8:  0525ed4cd9 t1901: extend structure metric coverage and portability
  9:  f17c0f03e5 =  9:  f17c0f03e5 docs: describe repo info path keys and structure metrics
 10:  1bc100d6ca = 10:  1bc100d6ca repo: reduce repetition in structure keyvalue output
  -:  ---------- > 11:  8af17ad831 repo: refine path keys for repo info

-- 
gitgitgadget