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

[PATCH v5 0/9] Get rid of "git --super-prefix"

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Dec 20, 2022, 12:39 UTC
Message-ID
<cover-v5-0.9-00000000000-20221220T104519Z-avarab@gmail.com>
In-Reply-To
<cover-v4-0.9-00000000000-20221215T083502Z-avarab@gmail.com>

For a general summary see the v3's CL at https://lore.kernel.org/git/cover-v3-0.9-00000000000-20221119T122853Z-avarab@gmail.com/

[Trivial] changes since v4:
 * Remove stray ad-hoc testing env variable from test.
 * s/passs/pass/ typo fix
 * Adjust commit message for the tests not checking relative paths anymore.

Branch & passing CI at: https://github.com/avar/git/tree/avar/nuke-global-super-prefix-use-local-5

Glen Choo (1):
  read-tree + fetch tests: test failing "--super-prefix" interaction
Ævar Arnfjörð Bjarmason (8):
  submodule absorbgitdirs tests: add missing "Migrating git..." tests
  submodule.c & submodule--helper: pass along "super_prefix" param
  submodule--helper: don't use global --super-prefix in "absorbgitdirs"
  submodule--helper: convert "foreach" to its own "--super-prefix"
  submodule--helper: convert "sync" to its own "--super-prefix"
  submodule--helper: convert "status" to its own "--super-prefix"
  submodule--helper: convert "{update,clone}" to their own
    "--super-prefix"
  read-tree: add "--super-prefix" option, eliminate global
 Documentation/git.txt              |  8 +--
 builtin.h                          |  4 --
 builtin/checkout.c                 |  2 +-
 builtin/read-tree.c                |  1 +
 builtin/rm.c                       |  2 +-
 builtin/submodule--helper.c        | 87 ++++++++++++++++--------------
 cache.h                            |  2 -
 entry.c                            | 12 ++---
 entry.h                            |  6 ++-
 environment.c                      | 13 -----
 git.c                              | 41 +++-----------
 parse-options.h                    |  4 ++
 submodule.c                        | 50 ++++++++---------
 submodule.h                        |  8 +--
 t/t1001-read-tree-m-2way.sh        |  2 +-
 t/t5616-partial-clone.sh           | 43 +++++++++++++++
 t/t7412-submodule-absorbgitdirs.sh | 64 +++++++++++++++++++---
 t/t7527-builtin-fsmonitor.sh       | 36 +++++--------
 unpack-trees.c                     | 24 +++++----
 unpack-trees.h                     |  1 +
 20 files changed, 230 insertions(+), 180 deletions(-)
Range-diff against v4:
 1:  f479003941b !  1:  f062cb2f265 submodule absorbgitdirs tests: add missing "Migrating git..." tests
    @@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 'absorb the git dir in a
     +	'\''$cwd/repo-wt/sub2/.git'\'' to
     +	'\''$cwd/repo-bare.git/worktrees/repo-wt/modules/sub2'\''
     +	EOF
    -+	DO_IT=1 git -C repo-wt submodule absorbgitdirs 2>actual &&
    ++	git -C repo-wt submodule absorbgitdirs 2>actual &&
     +	test_cmp expect actual
     +'
     +
 2:  6424307a432 =  2:  5fa05492b62 read-tree + fetch tests: test failing "--super-prefix" interaction
 3:  b2e543bde03 !  3:  3fb2a1b16cd submodule.c & submodule--helper: pass along "super_prefix" param
    @@ Commit message
         directly or by indirection. The exceptions are:
     
         - builtin/rm.c: Doesn't declare SUPPORT_SUPER_PREFIX, so we'd have
    -      died if this was provided, so it's safe to passs "NULL".
    +      died if this was provided, so it's safe to pass "NULL".
     
         - deinit_submodule(): The "deinit_submodule()" function has never been
           able to use the "git -super-prefix". It will call
           "absorb_git_dir_into_superproject()", but it will only do so from the
           top-level project.
     
    -      If "absorbgitdirs" recurses it will use the "path" passed to
    +      If "absorbgitdirs" recurses will use the "path" passed to
           "absorb_git_dir_into_superproject()" in "deinit_submodule()" as its
           starting "--super-prefix". So we can safely remove the
           get_super_prefix() call here, and pass NULL instead.
 4:  bde9038c4e3 !  4:  0b30497f187 submodule--helper: don't use global --super-prefix in "absorbgitdirs"
    @@ Commit message
         The "fsmonitor--daemon" test adjusted here was added in [3]. To assert
         that it didn't run into the "--super-prefix" message it was asserting
         the output it didn't have. Let's instead assert the full output that
    -    we *do* have, which we can do here as this is based on a change[4] to
    -    make it predictable (until [4] it contained absolute paths).
    +    we *do* have, using the same pattern as a preceding change to
    +    "t/t7412-submodule-absorbgitdirs.sh" used.
     
    -    We could also remove the test entirely (as [5] did), but even though
    +    We could also remove the test entirely (as [4] did), but even though
         the initial reason for having it is gone we're still getting some
         marginal benefit from testing the "fsmonitor" and "submodule
         absorbgitdirs" interaction, so let's keep it.
    @@ Commit message
     
         As we'll be changing the rest of the "git --super-prefix" users to the
         same pattern, leaving them all consistent makes sense. Why not pick ""
    -    over NULL? Because that's how the "prefix" works[6], and having
    +    over NULL? Because that's how the "prefix" works[5], and having
         "prefix" and "super_prefix" work the same way will be less
         confusing. That "prefix" picked NULL instead of "" is itself
         arbitrary, but as it's easy to make this small bit of our overall API
    @@ Commit message
            2022-05-26)
         3. 53fcfbc84f6 (fsmonitor--daemon: allow --super-prefix argument,
            2022-05-26)
    -    4. https://lore.kernel.org/git/patch-1.1-34b54fdd9bb-20221109T020347Z-avarab@gmail.com/
    -    5. https://lore.kernel.org/git/20221109004708.97668-5-chooglen@google.com/
    -    6. 9725c8dda20 (built-ins: trust the "prefix" from run_builtin(),
    +    4. https://lore.kernel.org/git/20221109004708.97668-5-chooglen@google.com/
    +    5. 9725c8dda20 (built-ins: trust the "prefix" from run_builtin(),
            2022-02-16)
     
         Signed-off-by: Glen Choo <chooglen@google.com>
 5:  4da58e7ea50 =  5:  13f1f0db07a submodule--helper: convert "foreach" to its own "--super-prefix"
 6:  8dff576df7d =  6:  ace2920ccff submodule--helper: convert "sync" to its own "--super-prefix"
 7:  8800a433e29 =  7:  1ccd1a57b64 submodule--helper: convert "status" to its own "--super-prefix"
 8:  54c1e29de1e =  8:  72e774ebb06 submodule--helper: convert "{update,clone}" to their own "--super-prefix"
 9:  4824f33224f =  9:  48ba8d4938c read-tree: add "--super-prefix" option, eliminate global
-- 
2.39.0.1071.g97ce8966538
Previous: Junio C HamanoNext: Ævar Arnfjörð Bjarmason
Message 92 of 105 in “git: remove --super-prefix”
  1. 0/4 git: remove --super-prefixGlen Choo, Nov 9, 2022
  2. 1/4 submodule--helper: teach --toplevel-cwd-prefixGlen Choo, Nov 9, 2022
  3. Ævar Arnfjörð BjarmasonNov 9, 2022
  4. 2/4 fetch: refactor --submodule-prefixGlen Choo, Nov 9, 2022
  5. Ævar Arnfjörð BjarmasonNov 9, 2022
  6. 3/4 read-tree: teach --submodule-prefixGlen Choo, Nov 9, 2022
  7. Ævar Arnfjörð BjarmasonNov 9, 2022
  8. 4/4 git: remove --super-prefixGlen Choo, Nov 9, 2022
  9. 0/8 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  10. 1/8 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  11. Glen ChooNov 11, 2022
  12. 2/8 submodule--helper: "deinit" has never used "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  13. 3/8 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  14. 4/8 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  15. 5/8 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  16. 6/8 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 9, 2022
  17. 7/8 submodule tests: test "git branch -t" output and stderrÆvar Arnfjörð Bjarmason, Nov 9, 2022
  18. 8/8 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Nov 9, 2022
  19. Glen ChooNov 11, 2022
  20. Taylor BlauNov 9, 2022
  21. Ævar Arnfjörð BjarmasonNov 9, 2022
  22. Taylor BlauNov 9, 2022
  23. Ævar Arnfjörð BjarmasonNov 9, 2022
  24. Glen ChooNov 10, 2022
  25. Ævar Arnfjörð BjarmasonNov 10, 2022
  26. Glen ChooNov 11, 2022
  27. Glen ChooNov 11, 2022
  28. Ævar Arnfjörð BjarmasonNov 11, 2022
  29. Taylor BlauNov 11, 2022
  30. Glen ChooNov 12, 2022
  31. Ævar Arnfjörð BjarmasonNov 14, 2022
  32. Glen ChooNov 14, 2022
  33. Ævar Arnfjörð BjarmasonNov 15, 2022
  34. 00/10 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  35. 01/10 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Nov 14, 2022
  36. Glen ChooNov 14, 2022
  37. Ævar Arnfjörð BjarmasonNov 14, 2022
  38. Glen ChooNov 14, 2022
  39. 02/10 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  40. Glen ChooNov 14, 2022
  41. Ævar Arnfjörð BjarmasonNov 17, 2022
  42. 03/10 submodule--helper: "deinit" has never used "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  43. 04/10 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  44. Glen ChooNov 14, 2022
  45. Ævar Arnfjörð BjarmasonNov 17, 2022
  46. 05/10 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  47. 06/10 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  48. 07/10 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  49. Glen ChooNov 14, 2022
  50. 08/10 submodule tests: test "git branch -t" output and stderrÆvar Arnfjörð Bjarmason, Nov 14, 2022
  51. Glen ChooNov 14, 2022
  52. 10/10 fetch: rename "--submodule-prefix" to "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 14, 2022
  53. Glen ChooNov 14, 2022
  54. 09/10 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Nov 14, 2022
  55. Glen ChooNov 14, 2022
  56. Taylor BlauNov 14, 2022
  57. Glen ChooNov 14, 2022
  58. Glen ChooNov 14, 2022
  59. Ævar Arnfjörð BjarmasonNov 15, 2022
  60. Glen ChooNov 16, 2022
  61. Ævar Arnfjörð BjarmasonNov 17, 2022
  62. Glen ChooNov 21, 2022
  63. 0/9 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  64. 1/9 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Nov 19, 2022
  65. 3/9 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  66. Glen ChooNov 22, 2022
  67. 2/9 submodule.c & submodule--helper: pass along "super_prefix" paramÆvar Arnfjörð Bjarmason, Nov 19, 2022
  68. 4/9 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  69. 6/9 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  70. 5/9 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  71. 7/9 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  72. 9/9 fetch: rename "--submodule-prefix" to "--super-prefix"Ævar Arnfjörð Bjarmason, Nov 19, 2022
  73. 8/9 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Nov 19, 2022
  74. Glen ChooNov 22, 2022
  75. Glen ChooNov 22, 2022
  76. 0/9 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  77. 2/9 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Dec 15, 2022
  78. 1/9 submodule absorbgitdirs tests: add missing "Migrating git..." testsÆvar Arnfjörð Bjarmason, Dec 15, 2022
  79. Glen ChooDec 15, 2022
  80. Ævar Arnfjörð BjarmasonDec 20, 2022
  81. 3/9 submodule.c & submodule--helper: pass along "super_prefix" paramÆvar Arnfjörð Bjarmason, Dec 15, 2022
  82. 5/9 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  83. 4/9 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  84. Glen ChooDec 15, 2022
  85. 6/9 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  86. 7/9 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  87. 8/9 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 15, 2022
  88. 9/9 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Dec 15, 2022
  89. Glen ChooDec 15, 2022
  90. Junio C HamanoDec 15, 2022
  91. Junio C HamanoDec 15, 2022
  92. 0/9 Get rid of "git --super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  93. 2/9 read-tree + fetch tests: test failing "--super-prefix" interactionÆvar Arnfjörð Bjarmason, Dec 20, 2022
  94. 1/9 submodule absorbgitdirs tests: add missing "Migrating git..." testsÆvar Arnfjörð Bjarmason, Dec 20, 2022
  95. 3/9 submodule.c & submodule--helper: pass along "super_prefix" paramÆvar Arnfjörð Bjarmason, Dec 20, 2022
  96. 5/9 submodule--helper: convert "foreach" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  97. 4/9 submodule--helper: don't use global --super-prefix in "absorbgitdirs"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  98. 6/9 submodule--helper: convert "sync" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  99. 7/9 submodule--helper: convert "status" to its own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  100. 8/9 submodule--helper: convert "{update,clone}" to their own "--super-prefix"Ævar Arnfjörð Bjarmason, Dec 20, 2022
  101. 9/9 read-tree: add "--super-prefix" option, eliminate globalÆvar Arnfjörð Bjarmason, Dec 20, 2022
  102. Taylor BlauNov 9, 2022
  103. Glen ChooNov 9, 2022
  104. Taylor BlauNov 10, 2022
  105. Glen ChooNov 10, 2022

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.