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

Re: [PATCH 0/4] repo: add support for path-related fields

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Mar 1, 2026, 21:25 UTC
Message-ID
<aaSusXil9nDHYGMR@fruit.crustytoothpaste.net>
In-Reply-To
<20260228224252.72788-1-lucasseikioshiro@gmail.com>
On 2026-02-28 at 22:05:54, Lucas Seiki Oshiro wrote:
Show 21 quoted lines
> Hi!
> 
> This patch series adds support for path-related fields in repo-info, based on
> what we already have in git-rev-parse:
> 
> 1. The two first patches moves the path formatting used by git-rev-parse to
>    path.c. This will allow us to reuse this code in git-repo-info
> 2. The second patch add a new flag --path-format to git-repo-info, similar to
>    the flag of git-rev-parse with the same name
> 3. Add the new field `path.toplevel` as a proof of concept.
> 
> This arises from the fact that I didn't know what should be the default behavior
> of git-repo-info when dealing with paths. Some ideas were:
> 
> 1. Add --path-format, just like we have in git-rev-parse
> 2. Use what rev-parse uses by default
> 3. Add keys for both relative and absolute formats
> 
> In this case, I'm using 1, but I'm not sure if it's the best option. One
> downside that I see here is that git-repo-info won't be able to return
> a relative and an absolute path for different keys in the same call.

I think you should provide both. I originally added this for things like `--git-common-dir`, which Git LFS would really like to have as an absolute path in the way that Git canonicalizes it, as well as potentially a relative path.

The reason is that the way Git canonicalizes things on Windows is not easily accessible on all systems or in all languages. For instance, Go has steadfastly refused to provide functionality for `GetFinalPathnameByHandle`, despite that being necessary to canonicalize the way Git does, so it's important to be able to get that information both in a relative way and as an absolute path.

On Unix, things are easier since there are fewer special file system objects and `realpath` or its equivalent are usually present in most languages.

With `git rev-parse`, you can change `--path-format` on the command line between options, so if you want both, you just request one thing, use `--path-format`, and then request the other. However, that can't be done with `git repo` and `--path-format`.

-- 
brian m. carlson (they/them)
Toronto, Ontario, CA
Previous: Lucas Seiki OshiroNext: Junio C Hamano
Message 17 of 26 in “repo: add support for path-related fields”
  1. 0/4 repo: add support for path-related fieldsLucas Seiki Oshiro, Feb 28, 2026
  2. 1/4 rev-parse: prepend `path_` to path-related enumsLucas Seiki Oshiro, Feb 28, 2026
  3. 2/4 path: add new function strbuf_add_pathLucas Seiki Oshiro, Feb 28, 2026
  4. 3/4 repo: add the --format-path flagLucas Seiki Oshiro, Feb 28, 2026
  5. 4/4 repo: add the field path.toplevelLucas Seiki Oshiro, Feb 28, 2026
  6. Tian YuchenMar 1, 2026
  7. Lucas Seiki OshiroMar 1, 2026
  8. Tian YuchenMar 2, 2026
  9. JAYATHEERTH KMar 1, 2026
  10. Ayush JhaMar 1, 2026
  11. JAYATHEERTH KMar 1, 2026
  12. Lucas Seiki OshiroMar 1, 2026
  13. Ayush JhaMar 3, 2026
  14. Lucas Seiki OshiroMar 1, 2026
  15. Phillip WoodMar 1, 2026
  16. Lucas Seiki OshiroMar 1, 2026
  17. brian m. carlsonMar 1, 2026
  18. Junio C HamanoMar 2, 2026
  19. Tian YuchenMar 2, 2026
  20. Junio C HamanoMar 2, 2026
  21. JAYATHEERTH KMar 3, 2026
  22. Tian YuchenMar 3, 2026
  23. JAYATHEERTH KMar 3, 2026
  24. Tian YuchenMar 3, 2026
  25. JAYATHEERTH KMar 3, 2026
  26. Lucas Seiki OshiroMar 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.