After upgrading to 2.20.1 I noticed in some submodule+worktree scenarios git
will break the submodule configuration. Reproducible with:
git init a && (cd a; touch a; git add a; git commit -ma)
git init b && (cd b; git submodule add ../a; git commit -mb)
git -C b worktree add ../b2
git -C b/a worktree add ../../b2/a
git -C b status
git -C b2 submodule update
git -C b status
The submodule update in the _worktree_ puts an invalid core.worktree value in
the _original_ repository submodule config (b/.git/modules/a/config), causing
the last git status to error out with:
fatal: cannot chdir to '../../../../../../b2/a': No such file or directory
fatal: 'git status --porcelain=2' failed in submodule a
Looking at the config file itself, the submodule update operation applies the
following change (the new path is invalid):
- worktree = ../../../a
+ worktree = ../../../../../../b2/a
This worked fine on 2.19.2 (no config change, no error), and was useful to have
a worktree with (large) submodules that are also worktrees.
Bisects down to:
74d4731da1 submodule--helper: replace connect-gitdir-workingtree by
ensure-core-worktree
--
Tomasz Śniatowski