submodule: unset core.worktree if no working tree is present
commit4fa4f90ccd85842e1187e5a5daf4633dceaab779
authorStefan Beller <sbeller@google.com>
Tue, 12 Jun 2018 23:58:23 +0000 (12 16:58 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Jun 2018 21:13:46 +0000 (14 14:13 -0700)
treeee43fe2b82b49e9488c87f2462acf322791058cd
parent68372c88794aba15f853542008cda39def768372
submodule: unset core.worktree if no working tree is present

When a submodules work tree is removed, we should unset its core.worktree
setting as the worktree is no longer present. This is not just in line
with the conceptual view of submodules, but it fixes an inconvenience
for looking at submodules that are not checked out:

    git clone --recurse-submodules git://github.com/git/git && cd git &&
    git checkout --recurse-submodules v2.13.0
    git -C .git/modules/sha1collisiondetection log
    fatal: cannot chdir to '../../../sha1collisiondetection': \
        No such file or directory

With this patch applied, the final call to git log works instead of dying
in its setup, as the checkout will unset the core.worktree setting such
that following log will be run in a bare repository.

This patch covers all commands that are in the unpack machinery, i.e.
checkout, read-tree, reset. A follow up patch will address
"git submodule deinit", which will also make use of the new function
submodule_unset_core_worktree(), which is why we expose it in this patch.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
submodule.h
t/lib-submodule-update.sh