diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-11-15 23:07:32 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-11-15 23:07:32 -0800 |
commit | 958742ba43a0e3847cc7095869f0d96febe47132 (patch) | |
tree | a1617297d94ecff73a737dcb333b6996be7cb8da | |
parent | Merge branch 'vl/maint-openssl-signature-change' into maint (diff) | |
parent | ls-files: unbreak "ls-files -i" (diff) | |
download | tgif-958742ba43a0e3847cc7095869f0d96febe47132.tar.xz |
Merge branch 'jk/maint-1.6.3-ls-files-i' into maint
* jk/maint-1.6.3-ls-files-i:
ls-files: unbreak "ls-files -i"
-rw-r--r-- | Documentation/git-ls-files.txt | 6 | ||||
-rw-r--r-- | builtin-ls-files.c | 8 | ||||
-rwxr-xr-x | t/t3003-ls-files-exclude.sh | 8 |
3 files changed, 20 insertions, 2 deletions
diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt index 021066e95d..625723e41f 100644 --- a/Documentation/git-ls-files.txt +++ b/Documentation/git-ls-files.txt @@ -48,8 +48,10 @@ OPTIONS -i:: --ignored:: - Show ignored files in the output. - Note that this also reverses any exclude list present. + Show only ignored files in the output. When showing files in the + index, print only those matched by an exclude pattern. When + showing "other" files, show only those matched by an exclude + pattern. -s:: --stage:: diff --git a/builtin-ls-files.c b/builtin-ls-files.c index c5c0407b0b..c9a03e5427 100644 --- a/builtin-ls-files.c +++ b/builtin-ls-files.c @@ -170,6 +170,10 @@ static void show_files(struct dir_struct *dir, const char *prefix) if (show_cached | show_stage) { for (i = 0; i < active_nr; i++) { struct cache_entry *ce = active_cache[i]; + int dtype = ce_to_dtype(ce); + if (dir->flags & DIR_SHOW_IGNORED && + !excluded(dir, ce->name, &dtype)) + continue; if (show_unmerged && !ce_stage(ce)) continue; if (ce->ce_flags & CE_UPDATE) @@ -182,6 +186,10 @@ static void show_files(struct dir_struct *dir, const char *prefix) struct cache_entry *ce = active_cache[i]; struct stat st; int err; + int dtype = ce_to_dtype(ce); + if (dir->flags & DIR_SHOW_IGNORED && + !excluded(dir, ce->name, &dtype)) + continue; if (ce->ce_flags & CE_UPDATE) continue; err = lstat(ce->name, &st); diff --git a/t/t3003-ls-files-exclude.sh b/t/t3003-ls-files-exclude.sh index fc1e379321..d5ec333131 100755 --- a/t/t3003-ls-files-exclude.sh +++ b/t/t3003-ls-files-exclude.sh @@ -29,4 +29,12 @@ test_expect_success 'add file to gitignore' ' ' check_all_output +test_expect_success 'ls-files -i lists only tracked-but-ignored files' ' + echo content >other-file && + git add other-file && + echo file >expect && + git ls-files -i --exclude-standard >output && + test_cmp expect output +' + test_done |