> I had a look at https://gitlab.com/pclouds/git/commits/submodules-in-worktrees, > and it doesn't seem to be quite all okay. > > The submodule update step of the repro (that breaks the config on 2.20) emits > an error message instead, and leaves the config unchanged: > git -C b2 submodule update > fatal: could not set 'core.worktree' to '../../../../../../b2/a' > It looks a bit like it's still trying to do the wrong thing, but errors out > during the attempt (repo_config_set_worktree_gently returns false). There is more than just that. After adding the worktrees, (and after the first status call) $ cat b2/.git gitdir: /u/git/t/trash directory.t7419-submodule-worktrees/b/.git/worktrees/b2 $ cat b2/a/.git gitdir: /u/git/t/trash directory.t7419-submodule-worktrees/b/.git/modules/a/worktrees/a Are worktrees using absolute path for their gitlinks? Submodules themselves try really hard to use relative path: $ cat b/a/.git gitdir: ../.git/modules/a > Curiously, even though it says "fatal", it will then perform the actual > submodule update if it's required. Oh. :/ I think we should solve that by either warning (but that gives bad UX) or actually aborting, by adding a "|| exit 1" in git-submodule.sh in cmd_update where we call "git submodule--helper ensure-core-worktree". When we run "git -C b2 submodule update", it calls "git submodule--helper ensure-core-worktree a" which currently would make sure that b2/a/.git points to b2/.git/modules/a, but that is not the case as b2 and b2/a are worktrees, whose git directories are housed in b/.git/worktrees. So maybe we need to be a bit more careful and check if b2/a/.git resolves to a worktree and if so we'd not touch it at all (and warn about it?). > > Same behavior on master with a subset of that branch cherry-picked, that is: > https://gitlab.com/pclouds/git/commit/94751ada7c32eb6fb2c67dd7723161d1955a5683 > along with two others it needed to build: > https://gitlab.com/pclouds/git/commit/d26ab4c5013f6117814161be3e87c8d2b73561a4 > https://gitlab.com/pclouds/git/commit/b2e21eece6b35e00707ed3a8377a84a95da6b778 > > -- > Tomasz Śniatowski