From 10cbe2c9b3821516ce085a999527b2d2ec92858a Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 25 May 2017 00:55:26 +0200 Subject: [PATCH] status: do not get confused by submodules in excluded directories We meticulously pass the `exclude` flag to the `treat_directory()` function so that we can indicate that files in it are excluded rather than untracked when recursing. But we did not yet treat submodules the same way. Signed-off-by: Johannes Schindelin --- dir.c | 2 +- t/t7061-wtstatus-ignore.sh | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/dir.c b/dir.c index f451bfa48c0a0e..f03e6d0ddafd0b 100644 --- a/dir.c +++ b/dir.c @@ -1362,7 +1362,7 @@ static enum path_treatment treat_directory(struct dir_struct *dir, if (!(dir->flags & DIR_NO_GITLINKS)) { unsigned char sha1[20]; if (resolve_gitlink_ref(dirname, "HEAD", sha1) == 0) - return path_untracked; + return exclude ? path_excluded : path_untracked; } return path_recurse; } diff --git a/t/t7061-wtstatus-ignore.sh b/t/t7061-wtstatus-ignore.sh index cdc0747bf01b05..d59c05d9fc5194 100755 --- a/t/t7061-wtstatus-ignore.sh +++ b/t/t7061-wtstatus-ignore.sh @@ -271,4 +271,18 @@ test_expect_success 'status ignored tracked directory with uncommitted file in t test_cmp expected actual ' +cat >expected <<\EOF +!! tracked/submodule/ +EOF + +test_expect_success 'status ignores submodule in excluded directory' ' + git init tracked/submodule && + ( + cd tracked/submodule && + test_commit initial + ) && + git status --porcelain --ignored -u tracked/submodule >actual && + test_cmp expected actual +' + test_done