From: K Jayatheerth Date: Sun, 26 Jul 2026 10:43:36 GMT Subject: [GSoC Patch v3 0/7] repo: add more path keys to git repo info Message-ID: <20260726104343.16933-1-jayatheerthkulkarni2005@gmail.com> In-Reply-To: <20260716012138.6714-1-jayatheerthkulkarni2005@gmail.com> Series adds keys to git repo info. Keys output paths of repository components: * path.toplevel: repository tree. * path.superproject-working-tree: superproject tree from submodules. * path.objects: repository objects. * path.hooks: repository hooks. * path.index: repository index. * path.grafts: repository grafts. * path.git-prefix: prefix offset. Keys support suffixes for format. Commits contain documentation and tests. Changes since v2: * path.index: no functional change; documented that the returned path reflects the default/configured index location even in a bare repository or when the file doesn't exist yet, and added a test covering path.index inside a bare repository. * path.grafts: no functional change; documented that the path is returned even if the grafts file doesn't currently exist on disk. * path.git-prefix: no change since v2 (already addressed the stray include and misleading "validation" in the subject). K Jayatheerth (7): repo: add path.toplevel with absolute and relative suffix formatting repo: add path.superproject-working-tree with absolute and relative suffixes repo: add path.objects with absolute and relative suffix formatting repo: add path.hooks with absolute and relative suffix formatting repo: add path.index with absolute and relative suffix formatting repo: add path.grafts with absolute and relative suffix formatting repo: add path.git-prefix path key Documentation/git-repo.adoc | 64 ++++++++++++++ builtin/repo.c | 166 ++++++++++++++++++++++++++++++++++++ t/t1900-repo-info.sh | 125 +++++++++++++++++++++++++++ 3 files changed, 355 insertions(+) Range-diff against v2: 1: 297d625ea1 = 1: 297d625ea1 repo: add path.toplevel with absolute and relative suffix formatting 2: 8a84aaa2a1 = 2: 8a84aaa2a1 repo: add path.superproject-working-tree with absolute and relative suffixes 3: 159166ce85 = 3: 159166ce85 repo: add path.objects with absolute and relative suffix formatting 4: ff5e382043 = 4: ff5e382043 repo: add path.hooks with absolute and relative suffix formatting 5: d906735e3d ! 5: 917d3a5076 repo: add path.index with absolute and relative suffix formatting @@ Documentation/git-repo.adoc: values that they return: +`path.index.absolute`:: + The canonical absolute path to the repository's current index file. -+ Respects the `GIT_INDEX_FILE` environment override. ++ Respects the `GIT_INDEX_FILE` environment override. The returned path ++ reflects the configured/default index location regardless of whether the ++ repository is bare or whether the file currently exists. + +`path.index.relative`:: + The path to the repository's current index file relative to the current + working directory. Respects the `GIT_INDEX_FILE` environment override. ++ The returned path reflects the configured/default index location regardless ++ of whether the repository is bare or whether the file currently exists. + `path.objects.absolute`:: The canonical absolute path to the repository's object database directory. @@ t/t1900-repo-info.sh: test_repo_info_path 'hooks with core.hooksPath override' ' +test_repo_info_path 'index with GIT_INDEX_FILE override' 'index' \ + 'custom-index-file' \ + 'GIT_INDEX_FILE="$ROOT/custom-index-file" && export GIT_INDEX_FILE' ++ ++test_expect_success 'path.index in a bare repository returns default index location' ' ++ test_when_finished "rm -rf bare.git" && ++ git init --bare bare.git && ++ ( ++ cd bare.git && ++ ROOT="$(test-tool path-utils real_path .)" && ++ ++ echo "path.index.absolute=$ROOT/index" >expect.abs && ++ git repo info path.index.absolute >actual.abs && ++ test_cmp expect.abs actual.abs && ++ ++ echo "path.index.relative=index" >expect.rel && ++ git repo info path.index.relative >actual.rel && ++ test_cmp expect.rel actual.rel ++ ) ++' + test_repo_info_path 'objects standard' 'objects' '.git/objects' 6: 2d21f9536c ! 6: d47a5701d5 repo: add path.grafts with absolute and relative suffix formatting @@ Documentation/git-repo.adoc: values that they return: +`path.grafts.absolute`:: + The canonical absolute path to the repository grafts file. -+ Respects the `GIT_GRAFT_FILE` environment override. ++ Respects the `GIT_GRAFT_FILE` environment override. The path is returned ++ regardless of whether the file currently exists on disk. + +`path.grafts.relative`:: + The path to the repository grafts file relative to the current working -+ directory. Respects the `GIT_GRAFT_FILE` environment override. ++ directory. Respects the `GIT_GRAFT_FILE` environment override. The path ++ is returned regardless of whether the file currently exists on disk. + `path.hooks.absolute`:: The canonical absolute path to the repository's hooks directory. 7: 1dbe191176 = 7: fd90b0b3b5 repo: add path.git-prefix path key -- 2.55.GIT