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

Re: [PATCH 1/3] t6437: run absorbgitdirs on repos

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 8, 2021, 22:20 UTC
Message-ID
<xmqqwnnq1zh9.fsf@gitster.g>
In-Reply-To
<942d3ce2d3cf96192c7e9d5860a18c333dd08acf.1631123754.git.jonathantanmy@google.com>
Jonathan Tan <jonathantanmy@google.com> writes:
Show 6 quoted lines
> The submodule merge code is being transitioned away from
> add_submodule_odb() to repo_submodule_init(), and the latter does not
> support submodules that have their .git directories in the worktree
> (instead of in .git/modules). Migrate the test code by calling
> absorbgitdirs wherever necessary to place the .git directories of
> submodules in .git/modules of the superproject.

It is wonderful that we can work with the "absorbed" form of the submodule repositories, and having all the submodules in "absorbed" form may be ideal in the longer term, but I fail to convince myself that this particular change to test script is a good idea.

After all, if you are not cloning from somebody else but creating a new submodule in a superproject you have (whether that was locally created or cloned from elsewhere), wouldn't it more natural to have a submodule that is not "absorbed" there? Is it easy to create an "absorbed" submodule locally?

The change to tests in this patch may make things work with the repo_submodule_init() that is incapable of work with submodules with in-worktree .git repository. In theory, the users can do the same, i.e. have an extra "git submodule absorbgitdirs" call, when adding a new submodule, to make things work with repo_submodule_init(), too.

But that sounds like a workaround, not a feature.

Quite honestly, if repo_submodule_init() can only work with the "absorbed" form, isn't it simply a bug?

Two independent (i.e. we can do either or both) things may improve the situation:

 - allow repo_submodule_init() to work on both forms (in place---no
   cheating by calling "absorb" behind user's back).
 - teach "git submodule add" to transition an old-style submodule
   into the "absorbed" form (either with an option, or do so by
   default with an escape hatch to disable).

The latter indirectly attacks the "repo_submodule_init() can only work with absorbed form" issue by making it harder to create a non-absorbed submodule to begin with.

Hmm?
Previous: Jonathan TanNext: Jonathan Tan
Message 4 of 14 in “More add_submodule_odb() cleanup in merge code”
  1. 0/3 More add_submodule_odb() cleanup in merge codeJonathan Tan, Sep 8, 2021
  2. 1/3 t6437: run absorbgitdirs on reposJonathan Tan, Sep 8, 2021
  3. Jonathan TanSep 8, 2021
  4. Junio C HamanoSep 8, 2021
  5. Jonathan TanSep 9, 2021
  6. 2/3 revision: remove "submodule" from opt structJonathan Tan, Sep 8, 2021
  7. 3/3 DO NOT SUBMIT commit-reach,revision: verify non-mixingJonathan Tan, Sep 8, 2021
  8. Elijah NewrenSep 9, 2021
  9. Jonathan TanSep 9, 2021
  10. 0/3 More add_submodule_odb() cleanup in merge codeJonathan Tan, Sep 9, 2021
  11. 1/3 submodule: remove unnecessary unabsorbed fallbackJonathan Tan, Sep 9, 2021
  12. 2/3 repository: support unabsorbed in repo_submodule_initJonathan Tan, Sep 9, 2021
  13. 3/3 revision: remove "submodule" from opt structJonathan Tan, Sep 9, 2021
  14. Elijah NewrenSep 14, 2021

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.