diff --git a/dir.c b/dir.c index 15d7277a02..fecb6da0ae 100644 --- a/dir.c +++ b/dir.c @@ -1115,7 +1115,7 @@ static enum directory_treatment treat_directory(struct dir_struct *dir, /* * We are looking for ignored files and our directory is not ignored, - * check if it contains only ignored files + * check if it contains untracked files (i.e. is listed as untracked) */ if ((dir->flags & DIR_SHOW_IGNORED) && !exclude) { int ignored; @@ -1123,7 +1123,8 @@ static enum directory_treatment treat_directory(struct dir_struct *dir, ignored = read_directory_recursive(dir, dirname, len, 1, simplify); dir->flags |= DIR_SHOW_IGNORED; - return ignored ? ignore_directory : show_directory; + if (ignored) + return ignore_directory; } if (!(dir->flags & DIR_HIDE_EMPTY_DIRECTORIES)) diff --git a/t/t7061-wtstatus-ignore.sh b/t/t7061-wtstatus-ignore.sh index 28b7d957a5..6171a49cf9 100755 --- a/t/t7061-wtstatus-ignore.sh +++ b/t/t7061-wtstatus-ignore.sh @@ -60,6 +60,31 @@ test_expect_success 'status ignored directory with --ignore -u' ' test_cmp expected actual ' +cat >expected <<\EOF +?? .gitignore +?? actual +?? expected +EOF + +test_expect_success 'status empty untracked directory with --ignore' ' + rm -rf ignored && + mkdir untracked-ignored && + mkdir untracked-ignored/test && + git status --porcelain --ignored >actual && + test_cmp expected actual +' + +cat >expected <<\EOF +?? .gitignore +?? actual +?? expected +EOF + +test_expect_success 'status empty untracked directory with --ignore -u' ' + git status --porcelain --ignored -u >actual && + test_cmp expected actual +' + cat >expected <<\EOF ?? .gitignore ?? actual @@ -68,9 +93,6 @@ cat >expected <<\EOF EOF test_expect_success 'status untracked directory with ignored files with --ignore' ' - rm -rf ignored && - mkdir untracked-ignored && - mkdir untracked-ignored/test && : >untracked-ignored/ignored && : >untracked-ignored/test/ignored && git status --porcelain --ignored >actual &&