Skip to content

Commit

Permalink
dir.c: git-status --ignored: don't list empty ignored directories
Browse files Browse the repository at this point in the history
'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 <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
kblees authored and gitster committed Apr 15, 2013
1 parent 289ff55 commit 0104c9e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
11 changes: 4 additions & 7 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1153,16 +1153,13 @@ static int treat_file(struct dir_struct *dir, struct strbuf *path, int exclude,
struct path_exclude_check check;
int exclude_file = 0;

/* Always exclude indexed files */
if (index_name_exists(&the_index, path->buf, path->len, ignore_case))
return 1;

if (exclude)
exclude_file = !(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);

if (!is_path_excluded(&check, path->buf, path->len, dtype))
Expand Down
24 changes: 24 additions & 0 deletions t/t7061-wtstatus-ignore.sh
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,29 @@ test_expect_success 'status ignored tracked directory with --ignore -u' '
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
?? .gitignore
?? actual
Expand All @@ -126,6 +149,7 @@ cat >expected <<\EOF
EOF

test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' '
echo "tracked" >.gitignore &&
: >tracked/uncommitted &&
git status --porcelain --ignored >actual &&
test_cmp expected actual
Expand Down

0 comments on commit 0104c9e

Please sign in to comment.