dir.c: git-status --ignored: don't list empty ignored directories
'git-status --ignored' lists ignored tracked directories without any ignored files if a tracked file happens to match an exclude pattern. Always exclude tracked files. Signed-off-by: Karsten Blees <blees@dcon.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
289ff5598f
commit
0104c9e781
11
dir.c
11
dir.c
@ -1153,16 +1153,13 @@ static int treat_file(struct dir_struct *dir, struct strbuf *path, int exclude,
|
|||||||
struct path_exclude_check check;
|
struct path_exclude_check check;
|
||||||
int exclude_file = 0;
|
int exclude_file = 0;
|
||||||
|
|
||||||
|
/* Always exclude indexed files */
|
||||||
|
if (index_name_exists(&the_index, path->buf, path->len, ignore_case))
|
||||||
|
return 1;
|
||||||
|
|
||||||
if (exclude)
|
if (exclude)
|
||||||
exclude_file = !(dir->flags & DIR_SHOW_IGNORED);
|
exclude_file = !(dir->flags & DIR_SHOW_IGNORED);
|
||||||
else if (dir->flags & DIR_SHOW_IGNORED) {
|
else if (dir->flags & DIR_SHOW_IGNORED) {
|
||||||
/* Always exclude indexed files */
|
|
||||||
struct cache_entry *ce = index_name_exists(&the_index,
|
|
||||||
path->buf, path->len, ignore_case);
|
|
||||||
|
|
||||||
if (ce)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
path_exclude_check_init(&check, dir);
|
path_exclude_check_init(&check, dir);
|
||||||
|
|
||||||
if (!is_path_excluded(&check, path->buf, path->len, dtype))
|
if (!is_path_excluded(&check, path->buf, path->len, dtype))
|
||||||
|
@ -118,6 +118,29 @@ test_expect_success 'status ignored tracked directory with --ignore -u' '
|
|||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
cat >expected <<\EOF
|
||||||
|
?? .gitignore
|
||||||
|
?? actual
|
||||||
|
?? expected
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'status ignored tracked directory and ignored file with --ignore' '
|
||||||
|
echo "committed" >>.gitignore &&
|
||||||
|
git status --porcelain --ignored >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
cat >expected <<\EOF
|
||||||
|
?? .gitignore
|
||||||
|
?? actual
|
||||||
|
?? expected
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'status ignored tracked directory and ignored file with --ignore -u' '
|
||||||
|
git status --porcelain --ignored -u >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
?? .gitignore
|
?? .gitignore
|
||||||
?? actual
|
?? actual
|
||||||
@ -126,6 +149,7 @@ cat >expected <<\EOF
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' '
|
test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' '
|
||||||
|
echo "tracked" >.gitignore &&
|
||||||
: >tracked/uncommitted &&
|
: >tracked/uncommitted &&
|
||||||
git status --porcelain --ignored >actual &&
|
git status --porcelain --ignored >actual &&
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
|
Loading…
Reference in New Issue
Block a user