summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-02-10 06:19:07 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-02-10 06:19:07 (GMT)
commit4dc870d90cf4cd30b30b59054603fbb09dca1f41 (patch)
tree0ba793dc46a6e13fd0df65732782f60be504c993
parent91c7674371c101766242b52ea1880cd919cb3075 (diff)
parent701ca744e386c2429ca44072ea987bbb4bdac7ce (diff)
downloadgit-4dc870d90cf4cd30b30b59054603fbb09dca1f41.zip
git-4dc870d90cf4cd30b30b59054603fbb09dca1f41.tar.gz
git-4dc870d90cf4cd30b30b59054603fbb09dca1f41.tar.bz2
Merge branch 'jc/ls-files-o'
* jc/ls-files-o: ls-files: honour per-directory ignore file from higher directories.
-rw-r--r--ls-files.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/ls-files.c b/ls-files.c
index 6af3b09..7024cf1 100644
--- a/ls-files.c
+++ b/ls-files.c
@@ -474,8 +474,28 @@ static void show_files(void)
const char *path = ".", *base = "";
int baselen = prefix_len;
- if (baselen)
+ if (baselen) {
path = base = prefix;
+ if (exclude_per_dir) {
+ char *p, *pp = xmalloc(baselen+1);
+ memcpy(pp, prefix, baselen+1);
+ p = pp;
+ while (1) {
+ char save = *p;
+ *p = 0;
+ push_exclude_per_directory(pp, p-pp);
+ *p++ = save;
+ if (!save)
+ break;
+ p = strchr(p, '/');
+ if (p)
+ p++;
+ else
+ p = pp + baselen;
+ }
+ free(pp);
+ }
+ }
read_directory(path, base, baselen);
qsort(dir, nr_dir, sizeof(struct nond_on_fs *), cmp_name);
if (show_others)