Skip to content

Commit

Permalink
dir.c: git-status --ignored: don't drop ignored directories
Browse files Browse the repository at this point in the history
'git-status --ignored' drops ignored directories if they contain untracked
files in an untracked sub directory.

Fix it by getting exact (recursive) excluded status in treat_directory.

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Karsten Blees authored and Junio C Hamano committed Apr 15, 2013
1 parent 85e7e81 commit 560bb7a
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
9 changes: 9 additions & 0 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1104,6 +1104,15 @@ static enum directory_treatment treat_directory(struct dir_struct *dir,

/* This is the "show_other_directories" case */

/* might be a sub directory in an excluded directory */
if (!exclude) {
struct path_exclude_check check;
int dt = DT_DIR;
path_exclude_check_init(&check, dir);
exclude = is_path_excluded(&check, dirname, len, &dt);
path_exclude_check_clear(&check);
}

/*
* We are looking for ignored files and our directory is not ignored,
* check if it contains only ignored files
Expand Down
27 changes: 27 additions & 0 deletions t/t7061-wtstatus-ignore.sh
Original file line number Diff line number Diff line change
Expand Up @@ -143,4 +143,31 @@ test_expect_success 'status ignored tracked directory and uncommitted file with
test_cmp expected actual
'

cat >expected <<\EOF
?? .gitignore
?? actual
?? expected
!! tracked/
EOF

test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore' '
rm -rf tracked/uncommitted &&
mkdir tracked/ignored &&
: >tracked/ignored/uncommitted &&
git status --porcelain --ignored >actual &&
test_cmp expected actual
'

cat >expected <<\EOF
?? .gitignore
?? actual
?? expected
!! tracked/ignored/uncommitted
EOF

test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore -u' '
git status --porcelain --ignored -u >actual &&
test_cmp expected actual
'

test_done

0 comments on commit 560bb7a

Please sign in to comment.