Skip to content

Commit c94ab01

Browse files
kbleesgitster
authored andcommitted
dir.c: git-status --ignored: don't list empty directories as ignored
'git-status --ignored' lists empty untracked directories as ignored, even though they don't have any ignored files. When checking if a directory is already listed as untracked (i.e. shouldn't be listed as ignored as well), don't assume that the directory has only ignored files if it doesn't have untracked files, as the directory may be empty. Signed-off-by: Karsten Blees <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 184d2a8 commit c94ab01

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

dir.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,15 +1115,16 @@ static enum directory_treatment treat_directory(struct dir_struct *dir,
11151115

11161116
/*
11171117
* We are looking for ignored files and our directory is not ignored,
1118-
* check if it contains only ignored files
1118+
* check if it contains untracked files (i.e. is listed as untracked)
11191119
*/
11201120
if ((dir->flags & DIR_SHOW_IGNORED) && !exclude) {
11211121
int ignored;
11221122
dir->flags &= ~DIR_SHOW_IGNORED;
11231123
ignored = read_directory_recursive(dir, dirname, len, 1, simplify);
11241124
dir->flags |= DIR_SHOW_IGNORED;
11251125

1126-
return ignored ? ignore_directory : show_directory;
1126+
if (ignored)
1127+
return ignore_directory;
11271128
}
11281129

11291130
if (!(dir->flags & DIR_HIDE_EMPTY_DIRECTORIES))

t/t7061-wtstatus-ignore.sh

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,35 @@ cat >expected <<\EOF
6464
?? .gitignore
6565
?? actual
6666
?? expected
67-
!! untracked-ignored/
6867
EOF
6968

70-
test_expect_success 'status untracked directory with ignored files with --ignore' '
69+
test_expect_success 'status empty untracked directory with --ignore' '
7170
rm -rf ignored &&
7271
mkdir untracked-ignored &&
7372
mkdir untracked-ignored/test &&
73+
git status --porcelain --ignored >actual &&
74+
test_cmp expected actual
75+
'
76+
77+
cat >expected <<\EOF
78+
?? .gitignore
79+
?? actual
80+
?? expected
81+
EOF
82+
83+
test_expect_success 'status empty untracked directory with --ignore -u' '
84+
git status --porcelain --ignored -u >actual &&
85+
test_cmp expected actual
86+
'
87+
88+
cat >expected <<\EOF
89+
?? .gitignore
90+
?? actual
91+
?? expected
92+
!! untracked-ignored/
93+
EOF
94+
95+
test_expect_success 'status untracked directory with ignored files with --ignore' '
7496
: >untracked-ignored/ignored &&
7597
: >untracked-ignored/test/ignored &&
7698
git status --porcelain --ignored >actual &&

0 commit comments

Comments
 (0)