On Sat, Apr 10, 2010 at 12:40:51AM -0700, Junio C Hamano wrote: > > It wouldn't be too hard to add them in, and would look something like > > the patch below. > > As I didn't see a patch, I did a rough outline just for fun. Gah. Yours is undoubtedly less ugly, but here was mine for reference. diff --git a/dir.c b/dir.c index cb83332..deee7c8 100644 --- a/dir.c +++ b/dir.c @@ -619,7 +619,9 @@ static int exclude_matches_pathspec(const char *path, int len, return 1; } } - return 0; + /* ugh, I think this may be a long-standing bug, but + * this code was never reachable before. */ + return 1; } static int get_index_dtype(const char *path, int len) diff --git a/wt-status.c b/wt-status.c index 8ca59a2..53a7a5a 100644 --- a/wt-status.c +++ b/wt-status.c @@ -366,6 +366,8 @@ static void wt_status_collect_untracked(struct wt_status *s) if (!s->show_untracked_files) return; memset(&dir, 0, sizeof(dir)); + /* should be conditional on s->show_ignored_files */ + dir.flags |= DIR_COLLECT_IGNORED; if (s->show_untracked_files != SHOW_ALL_UNTRACKED_FILES) dir.flags |= DIR_SHOW_OTHER_DIRECTORIES | DIR_HIDE_EMPTY_DIRECTORIES; @@ -381,6 +383,14 @@ static void wt_status_collect_untracked(struct wt_status *s) s->workdir_untracked = 1; string_list_insert(ent->name, &s->untracked); } + for (i = 0; i < dir.ignored_nr; i++) { + struct dir_entry *ent = dir.ignored[i]; + if (!cache_name_is_other(ent->name, ent->len)) + continue; + if (!match_pathspec(s->pathspec, ent->name, ent->len, 0, NULL)) + continue; + string_list_insert(ent->name, &s->ignored); + } } void wt_status_collect(struct wt_status *s) @@ -707,15 +717,15 @@ static void wt_shortstatus_status(int null_termination, struct string_list_item } static void wt_shortstatus_untracked(int null_termination, struct string_list_item *it, - struct wt_status *s) + struct wt_status *s, const char *marker) { if (null_termination) { - fprintf(stdout, "?? %s%c", it->string, 0); + fprintf(stdout, "%s %s%c", marker, it->string, 0); } else { struct strbuf onebuf = STRBUF_INIT; const char *one; one = quote_path(it->string, -1, &onebuf, s->prefix); - color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), "??"); + color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), marker); printf(" %s\n", one); strbuf_release(&onebuf); } @@ -739,7 +749,11 @@ void wt_shortstatus_print(struct wt_status *s, int null_termination) struct string_list_item *it; it = &(s->untracked.items[i]); - wt_shortstatus_untracked(null_termination, it, s); + wt_shortstatus_untracked(null_termination, it, s, "??"); + } + for (i = 0; i < s->ignored.nr; i++) { + struct string_list_item *it = &(s->ignored.items[i]); + wt_shortstatus_untracked(null_termination, it, s, "II"); } } diff --git a/wt-status.h b/wt-status.h index 9120673..0f5cf38 100644 --- a/wt-status.h +++ b/wt-status.h @@ -53,6 +53,7 @@ struct wt_status { const char *prefix; struct string_list change; struct string_list untracked; + struct string_list ignored; }; void wt_status_prepare(struct wt_status *s); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html