From: Junio C Hamano Date: Thu, 9 Feb 2006 08:21:27 +0000 (-0800) Subject: Merge branch 'jc/ls-files-o' X-Git-Tag: v1.3.0-rc1~54^2~91 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=9a9d58520d255c54c3ca1f60eefe0bfedcab0164;hp=-c;p=git.git Merge branch 'jc/ls-files-o' * jc/ls-files-o: ls-files: honour per-directory ignore file from higher directories. --- 9a9d58520d255c54c3ca1f60eefe0bfedcab0164 diff --combined ls-files.c index 3f06ece8,7024cf18..1c8ab739 --- a/ls-files.c +++ b/ls-files.c @@@ -447,22 -447,6 +447,22 @@@ static void show_ce_entry(const char *t if (pathspec && !match(pathspec, ce->name, len)) return; + if (tag && *tag && (ce->ce_flags & htons(CE_VALID))) { + static char alttag[4]; + memcpy(alttag, tag, 3); + if (isalpha(tag[0])) + alttag[0] = tolower(tag[0]); + else if (tag[0] == '?') + alttag[0] = '!'; + else { + alttag[0] = 'v'; + alttag[1] = tag[0]; + alttag[2] = ' '; + alttag[3] = 0; + } + tag = alttag; + } + if (!show_stage) { fputs(tag, stdout); write_name_quoted("", 0, ce->name + offset, @@@ -490,8 -474,28 +490,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) @@@ -519,7 -523,7 +539,7 @@@ err = lstat(ce->name, &st); if (show_deleted && err) show_ce_entry(tag_removed, ce); - if (show_modified && ce_modified(ce, &st)) + if (show_modified && ce_modified(ce, &st, 0)) show_ce_entry(tag_modified, ce); } }