ls-files: honour per-directory ignore file from higher directories.

When git-ls-files -o --exclude-per-directory=.gitignore is run
from a subdirectory, it did not read from .gitignore from its
parent directory.  Reading from them makes output from these two
commands consistent:

    $ git ls-files -o --exclude-per-directory=.gitignore Documentation
    $ cd Documentation &&
      git ls-files -o --exclude-per-directory=.gitignore

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-02-09 00:08:31 -08:00
Родитель d19e06fa8f
Коммит 701ca744e3
1 изменённых файлов: 21 добавлений и 1 удалений

Просмотреть файл

@ -474,8 +474,28 @@ static void show_files(void)
const char *path = ".", *base = ""; const char *path = ".", *base = "";
int baselen = prefix_len; int baselen = prefix_len;
if (baselen) if (baselen) {
path = base = prefix; 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); read_directory(path, base, baselen);
qsort(dir, nr_dir, sizeof(struct nond_on_fs *), cmp_name); qsort(dir, nr_dir, sizeof(struct nond_on_fs *), cmp_name);
if (show_others) if (show_others)