mv: Fix spurious warning when moving a file in presence of submodules
authorJens Lehmann <Jens.Lehmann@web.de>
Sun, 13 Oct 2013 11:52:05 +0000 (13:52 +0200)
committerJonathan Nieder <jrnieder@gmail.com>
Mon, 14 Oct 2013 05:35:19 +0000 (22:35 -0700)
commit04c1ee576accad4d0a04f168b86992aba0a6727d
tree919b6501b0fc1d63389dbd3faee1739884acde60
parentc5f424fd014488bd8a92b97f52bfe47823bc2128
mv: Fix spurious warning when moving a file in presence of submodules

In commit 0656781fa "git mv" learned to update the submodule path in the
.gitmodules file when moving a submodule in the work tree. But since that
commit update_path_in_gitmodules() gets called no matter if we moved a
submodule or a regular file, which is wrong and leads to a bogus warning
when moving a regular file in a repo containing a .gitmodules file:

    warning: Could not find section in .gitmodules where path=<filename>

Fix that by only calling update_path_in_gitmodules() when moving a
submodule. To achieve that, we introduce the special SUBMODULE_WITH_GITDIR
define to distinguish the cases where we also have to connect work tree
and git directory from those where we only need to update the .gitmodules
setting.

A test for submodules using a .git directory together with a .gitmodules
file has been added to t7001. Even though newer git versions will always
use a gitfile when cloning submodules, repositories cloned with older git
versions will still use this layout.

Reported-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
builtin/mv.c
t/t7001-mv.sh