Stefan Beller <sbeller@xxxxxxxxxx> writes: > The first patch teaches checkout/reset (with --recurse-submodules) to unset > the core.worktree config when the new state of the superprojects working tree > doesn't contain the submodules working tree. Are there two cases of "doesn't contain working tree of a submodule"? The superproject's commit may not have a gitlink to a specific submodule in its tree (i.e. there is no way to even "submodule init" with such a commit in the superproject's history). Or there may be a gitlink but the user chose not to check it out in the working tree. Do they need to be treated differently, or can they be treated the same way? Also, is the "submodule" feature supposed to play well with multiple worktree feature? Let's imagine that you have two worktrees for a single superproject, and the branches of the superproject these two worktrees check out are different ones (which is the more sensible set-up than checking out the same branch twice). Further imagine that the superproject started using a single submodule sometime in the past and keeps using it throughout its life since then. 1. if both of these two branches have the submodule, and two worktrees both are interested in having the submodule checked out via "submodule init/update", where does core.worktree point at? Do we have two copies of the variable? 2. what if one branch predates the use of the submodule in the superproject while the other branch is newer and uses the submodule? Where does core.worktree point at? Thanks. > The last patch is teaching "git submodule deinit" to unset the core.worktree > setting as well. It turned out this one is tricky, as for that we also > have to set it in the counter part, such as "submodule update". > > Thanks, > Stefan > > Stefan Beller (3): > submodule: unset core.worktree if no working tree is present > submodule: ensure core.worktree is set after update > submodule deinit: unset core.worktree > > builtin/submodule--helper.c | 26 ++++++++++++++++++++++++++ > git-submodule.sh | 5 +++++ > submodule.c | 14 ++++++++++++++ > submodule.h | 2 ++ > t/lib-submodule-update.sh | 5 +++-- > t/t7400-submodule-basic.sh | 5 +++++ > 6 files changed, 55 insertions(+), 2 deletions(-)