Teach diff --submodule and status to handle .git files in submodules
authorJens Lehmann <Jens.Lehmann@web.de>
Sat, 10 Apr 2010 17:01:12 +0000 (19:01 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sat, 10 Apr 2010 18:51:56 +0000 (11:51 -0700)
commiteee49b6ce4b7b3fed28794676c67ad3609f658ac
treeec4ee07b1434745d84e28b3d73095ee9a652fcde
parent3bfc45047654c7dd38b32033321228e97fc8f60e
Teach diff --submodule and status to handle .git files in submodules

The simple test for an existing .git directory gives an incorrect result
if .git is a file that records "gitdir: overthere". So for submodules that
use a .git file, "git status" and the diff family - when the "--submodule"
option is given - did assume the submodule was not populated at all when
a .git file was used, thus generating wrong output or no output at all.

This is fixed by using read_gitfile_gently() to get the correct location
of the .git directory. While at it, is_submodule_modified() was cleaned up
to use the "dir" member of "struct child_process" instead of setting the
GIT_WORK_TREE and GIT_DIR environment variables.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
t/t4041-diff-submodule.sh
t/t7506-status-submodule.sh