summaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
authorKarsten Blees <karsten.blees@gmail.com>2013-04-15 19:05:19 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-04-15 19:33:58 (GMT)
commit560bb7a7a146fddad3394dc913f1469d477d26a9 (patch)
tree3d7e847a6129633e53456dfe6dec39530a40ed89 /dir.c
parent85e7e81ccfcec98972e341ab81b0109084b84906 (diff)
downloadgit-560bb7a7a146fddad3394dc913f1469d477d26a9.zip
git-560bb7a7a146fddad3394dc913f1469d477d26a9.tar.gz
git-560bb7a7a146fddad3394dc913f1469d477d26a9.tar.bz2
dir.c: git-status --ignored: don't drop ignored directories
'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>
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/dir.c b/dir.c
index 91cfd99..dc3a50b 100644
--- a/dir.c
+++ b/dir.c
@@ -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