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

Re: [GSoC Patch v5 2/7] repo: add path.superproject-root with absolute and relative suffixes

From
K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
Date
Sep 5, 2026, 10:01 UTC
Message-ID
<CA+rGoLf-BMh_BNUwi4k7NCLakbxP8vTuLbQKctX2K6MTK5b1yA@mail.gmail.com>
In-Reply-To
<xmqqh5k43bzo.fsf@gitster.g>
On Sat, Sep 5, 2026 at 3:39 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 64 quoted lines
>
> K Jayatheerth <jayatheerthkulkarni2005@gmail.com> writes:
>
> > +static int get_path_superproject_absolute(struct repository *repo UNUSED, struct strbuf *buf)
> > +{
> > +     struct strbuf superproject = STRBUF_INIT;
> > +
> > +     if (!get_superproject_working_tree(&superproject)) {
> > +             strbuf_release(&superproject);
> > +             return 0;
> > +     }
> > +
> > +     format_path(buf, superproject.buf, "", PATH_FORMAT_CANONICAL);
> > +     strbuf_release(&superproject);
> > +     return 0;
> > +}
> > +
> > +static int get_path_superproject_relative(struct repository *repo, struct strbuf *buf)
> > +{
> > +     struct strbuf superproject = STRBUF_INIT;
> > +
> > +     if (!get_superproject_working_tree(&superproject)) {
> > +             strbuf_release(&superproject);
> > +             return 0;
> > +     }
>
> Here get_superproject_working_tree() does not care what repository
> we are working on.  Shouldn't it be updated to take "repo" as a
> parameter?
>
> Since it begins like this:
>
>     int get_superproject_working_tree(struct strbuf *buf)
>     {
>             struct child_process cp = CHILD_PROCESS_INIT;
>             struct strbuf sb = STRBUF_INIT;
>             struct strbuf one_up = STRBUF_INIT;
>             char *cwd = xgetcwd();
>             int ret = 0;
>
> I suspect that it based its decision on where you happen to be.
>
> It means that when I have a checkout of "git", with a submodule
> "sha1collisiondetection" at its top level already populated, in,
> say, /var/tmp/x/ directory, the following happens.
>
>     $ cd /var/tmp/x/git
>     $ git repo info path.gitdir.absolute
>     path.gitdir.absolute=/var/tmp/x/git/.git
>     $ git -C sha1collisiondetection repo info path.gitdir.absolute
>     path.gitdir.absolute=/var/tmp/x/git/.git/modules/sha1collisiondetection
>
>     $ D=/var/tmp/x/git/.git/modules/sha1collisiondetection
>     $ git --git-dir="$D" repo info path.superproject-root.absolute
>     path.superproject-root.absolute=
>     $ git -C sha1collisiondetection repo info path.superproject-root.absolute
>     path.superproject-root.absolute=/var/tmp/x/git
>
> The last two ought to match, but only the latter works correctly.
>
> Before this series starts reporting path.superproject-root,
> get_superproject_working_tree() needs to be corrected to work on the
> repository in question (instead of relying on where the process
> happens to be), no?

Yes, precisely. I didn't think of it that way.

`get_superproject_working_tree()` currently relies on xgetcwd() rather than inspecting the target repository, which causes explicit repository contexts like --git-dir to break.

I will update `get_superproject_working_tree()` to take repo and update its callers accordingly, along with adding test coverage for --git-dir in v6.

Regards,
- K Jayatheerth
Previous: Junio C HamanoNext: K Jayatheerth
Message 62 of 94 in “repo: add more path keys to git repo info”
  1. 0/7 repo: add more path keys to git repo infoK Jayatheerth, Jul 16, 2026
  2. 1/7 repo: add path.toplevel with absolute and relative suffix formattingK Jayatheerth, Jul 16, 2026
  3. Lucas Seiki OshiroAug 15, 2026
  4. K JayatheerthAug 18, 2026
  5. 2/7 repo: add path.superproject-working-tree with absolute and relative suffixesK Jayatheerth, Jul 16, 2026
  6. 3/7 repo: add path.objects with absolute and relative suffix formattingK Jayatheerth, Jul 16, 2026
  7. 4/7 repo: add path.hooks with absolute and relative suffix formattingK Jayatheerth, Jul 16, 2026
  8. 5/7 repo: add path.index with absolute and relative suffix formattingK Jayatheerth, Jul 16, 2026
  9. 6/7 repo: add path.grafts with absolute and relative suffix formattingK Jayatheerth, Jul 16, 2026
  10. 7/7 repo: add path.git-prefix path key validationK Jayatheerth, Jul 16, 2026
  11. Junio C HamanoJul 16, 2026
  12. K JayatheerthJul 16, 2026
  13. 0/7 repo: add more path keys to git repo infoK Jayatheerth, Jul 17, 2026
  14. 1/7 repo: add path.toplevel with absolute and relative suffix formattingK Jayatheerth, Jul 17, 2026
  15. 2/7 repo: add path.superproject-working-tree with absolute and relative suffixesK Jayatheerth, Jul 17, 2026
  16. 3/7 repo: add path.objects with absolute and relative suffix formattingK Jayatheerth, Jul 17, 2026
  17. 4/7 repo: add path.hooks with absolute and relative suffix formattingK Jayatheerth, Jul 17, 2026
  18. 5/7 repo: add path.index with absolute and relative suffix formattingK Jayatheerth, Jul 17, 2026
  19. Lucas Seiki OshiroJul 20, 2026
  20. K JayatheerthJul 24, 2026
  21. Junio C HamanoJul 24, 2026
  22. 6/7 repo: add path.grafts with absolute and relative suffix formattingK Jayatheerth, Jul 17, 2026
  23. Lucas Seiki OshiroJul 20, 2026
  24. Junio C HamanoJul 20, 2026
  25. K JayatheerthJul 21, 2026
  26. 7/7 repo: add path.git-prefix path keyK Jayatheerth, Jul 17, 2026
  27. 0/7 repo: add more path keys to git repo infoK Jayatheerth, Jul 26, 2026
  28. 1/7 repo: add path.toplevel with absolute and relative suffix formattingK Jayatheerth, Jul 26, 2026
  29. Junio C HamanoJul 27, 2026
  30. K JayatheerthJul 28, 2026
  31. Justin ToblerJul 28, 2026
  32. K JayatheerthJul 29, 2026
  33. 2/7 repo: add path.superproject-working-tree with absolute and relative suffixesK Jayatheerth, Jul 26, 2026
  34. Justin ToblerJul 28, 2026
  35. 3/7 repo: add path.objects with absolute and relative suffix formattingK Jayatheerth, Jul 26, 2026
  36. Justin ToblerJul 28, 2026
  37. 4/7 repo: add path.hooks with absolute and relative suffix formattingK Jayatheerth, Jul 26, 2026
  38. Justin ToblerJul 28, 2026
  39. 5/7 repo: add path.index with absolute and relative suffix formattingK Jayatheerth, Jul 26, 2026
  40. 6/7 repo: add path.grafts with absolute and relative suffix formattingK Jayatheerth, Jul 26, 2026
  41. 7/7 repo: add path.git-prefix path keyK Jayatheerth, Jul 26, 2026
  42. Junio C HamanoJul 26, 2026
  43. K JayatheerthJul 26, 2026
  44. Lucas Seiki OshiroJul 27, 2026
  45. Junio C HamanoJul 27, 2026
  46. 0/7 repo: add more path keys to git repo infoK Jayatheerth, Aug 6, 2026
  47. 1/7 repo: add path.toplevel with absolute and relative suffix formattingK Jayatheerth, Aug 6, 2026
  48. 2/7 repo: add path.superproject-root with absolute and relative suffixesK Jayatheerth, Aug 6, 2026
  49. 3/7 repo: add path.hooks with absolute and relative suffixesK Jayatheerth, Aug 6, 2026
  50. 4/7 repo: add path.index with absolute and relative suffixesK Jayatheerth, Aug 6, 2026
  51. 5/7 repo: add path.grafts with absolute and relative suffixesK Jayatheerth, Aug 6, 2026
  52. 6/7 repo: add path.git-prefixK Jayatheerth, Aug 6, 2026
  53. Lucas Seiki OshiroAug 16, 2026
  54. K JayatheerthAug 18, 2026
  55. Junio C HamanoAug 18, 2026
  56. K JayatheerthAug 21, 2026
  57. 7/7 repo: remove unused setup.h includeK Jayatheerth, Aug 6, 2026
  58. 0/7 add more path keys to git repo infoK Jayatheerth, Aug 25, 2026
  59. 1/7 repo: add path.toplevel with absolute and relative suffix formattingK Jayatheerth, Aug 25, 2026
  60. 2/7 repo: add path.superproject-root with absolute and relative suffixesK Jayatheerth, Aug 25, 2026
  61. Junio C HamanoSep 4, 2026
  62. K JayatheerthSep 5, 2026
  63. 3/7 repo: add path.hooks with absolute and relative suffixesK Jayatheerth, Aug 25, 2026
  64. 4/7 repo: add path.index with absolute and relative suffixesK Jayatheerth, Aug 25, 2026
  65. 5/7 repo: add path.grafts with absolute and relative suffixesK Jayatheerth, Aug 25, 2026
  66. 6/7 repo: add path.git-prefixK Jayatheerth, Aug 25, 2026
  67. 7/7 repo: add path.cdupK Jayatheerth, Aug 25, 2026
  68. Junio C HamanoAug 25, 2026
  69. K JayatheerthSep 4, 2026
  70. SZEDER GáborAug 26, 2026
  71. Junio C HamanoAug 26, 2026
  72. 0/7 add more path keys to git repo infoK Jayatheerth, Sep 11, 2026
  73. 1/7 repo: add path.toplevel with absolute and relative suffix formattingK Jayatheerth, Sep 11, 2026
  74. 2/7 repo: add path.superproject-root with absolute and relative suffixesK Jayatheerth, Sep 11, 2026
  75. Junio C HamanoSep 11, 2026
  76. K JayatheerthSep 23, 2026
  77. 3/7 repo: add path.hooks with absolute and relative suffixesK Jayatheerth, Sep 11, 2026
  78. 4/7 repo: add path.index with absolute and relative suffixesK Jayatheerth, Sep 11, 2026
  79. Junio C HamanoSep 11, 2026
  80. K JayatheerthSep 23, 2026
  81. 5/7 repo: add path.grafts with absolute and relative suffixesK Jayatheerth, Sep 11, 2026
  82. 6/7 repo: add path.git-prefixK Jayatheerth, Sep 11, 2026
  83. 7/7 repo: add path.cdupK Jayatheerth, Sep 11, 2026
  84. Junio C HamanoSep 11, 2026
  85. K JayatheerthSep 23, 2026
  86. 0/8 add more path keys to git repo infoK Jayatheerth, Sep 27, 2026
  87. 1/8 repo: add path.toplevel with absolute and relative suffix formattingK Jayatheerth, Sep 27, 2026
  88. 2/8 submodule: use repository to find superprojectK Jayatheerth, Sep 27, 2026
  89. 3/8 repo: add path.superproject-root with absolute and relative suffixesK Jayatheerth, Sep 27, 2026
  90. 4/8 repo: add path.hooks with absolute and relative suffixesK Jayatheerth, Sep 27, 2026
  91. 5/8 repo: add path.index with absolute and relative suffixesK Jayatheerth, Sep 27, 2026
  92. 6/8 repo: add path.grafts with absolute and relative suffixesK Jayatheerth, Sep 27, 2026
  93. 7/8 repo: add path.git-prefixK Jayatheerth, Sep 27, 2026
  94. 8/8 repo: add path.cdupK Jayatheerth, Sep 27, 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.