From 98fa473887d0bebd38d568bb07232a336a642dcf Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 16 Oct 2008 11:07:26 -0400 Subject: refactor handling of "other" files in ls-files and status When the "git status" display code was originally converted to C, we copied the code from ls-files to discover whether a pathname returned by read_directory was an "other", or untracked, file. Much later, 5698454e updated the code in ls-files to handle some new cases caused by gitlinks. This left the code in wt-status.c broken: it would display submodule directories as untracked directories. Nobody noticed until now, however, because unless status.showUntrackedFiles was set to "all", submodule directories were not actually reported by read_directory. So the bug was only triggered in the presence of a submodule _and_ this config option. This patch pulls the ls-files code into a new function, cache_name_is_other, and uses it in both places. This should leave the ls-files functionality the same and fix the bug in status. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t7502-status.sh | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 't') diff --git a/t/t7502-status.sh b/t/t7502-status.sh index c8e4c2e7b..187a13e64 100755 --- a/t/t7502-status.sh +++ b/t/t7502-status.sh @@ -285,6 +285,12 @@ test_expect_success 'status submodule summary is disabled by default' ' test_cmp expect output ' +# we expect the same as the previous test +test_expect_success 'status --untracked-files=all does not show submodule' ' + git status --untracked-files=all >output && + test_cmp expect output +' + head=$(cd sm && git rev-parse --short=7 --verify HEAD) cat >expect <