Skip to content

Commit fa89545

Browse files
committed
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 <[email protected]>
1 parent d5b027a commit fa89545

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

dir.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1384,7 +1384,7 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
13841384
if (!(dir->flags & DIR_NO_GITLINKS)) {
13851385
unsigned char sha1[20];
13861386
if (resolve_gitlink_ref(dirname, "HEAD", sha1) == 0)
1387-
return path_untracked;
1387+
return exclude ? path_excluded : path_untracked;
13881388
}
13891389
return path_recurse;
13901390
}

t/t7061-wtstatus-ignore.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,4 +271,18 @@ test_expect_success 'status ignored tracked directory with uncommitted file in t
271271
test_cmp expected actual
272272
'
273273

274+
cat >expected <<\EOF
275+
!! tracked/submodule/
276+
EOF
277+
278+
test_expect_success 'status ignores submodule in excluded directory' '
279+
git init tracked/submodule &&
280+
(
281+
cd tracked/submodule &&
282+
test_commit initial
283+
) &&
284+
git status --porcelain --ignored -u tracked/submodule >actual &&
285+
test_cmp expected actual
286+
'
287+
274288
test_done

0 commit comments

Comments
 (0)