status: --ignored option shows ignored files

There is no stronger reason behind the choice of "!!" than just I happened
to have typed them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2010-04-10 00:33:17 -07:00
parent 1b908b6fb4
commit 2381e39e5f
2 changed files with 20 additions and 8 deletions

View File

@ -83,6 +83,7 @@ static enum {
static char *cleanup_arg; static char *cleanup_arg;
static int use_editor = 1, initial_commit, in_merge, include_status = 1; static int use_editor = 1, initial_commit, in_merge, include_status = 1;
static int show_ignored_in_status;
static const char *only_include_assumed; static const char *only_include_assumed;
static struct strbuf message; static struct strbuf message;
@ -1031,6 +1032,8 @@ int cmd_status(int argc, const char **argv, const char *prefix)
"mode", "mode",
"show untracked files, optional modes: all, normal, no. (Default: all)", "show untracked files, optional modes: all, normal, no. (Default: all)",
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" }, PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
OPT_BOOLEAN(0, "ignored", &show_ignored_in_status,
"show ignored files"),
OPT_END(), OPT_END(),
}; };
@ -1044,7 +1047,8 @@ int cmd_status(int argc, const char **argv, const char *prefix)
builtin_status_options, builtin_status_options,
builtin_status_usage, 0); builtin_status_usage, 0);
handle_untracked_files_arg(&s); handle_untracked_files_arg(&s);
if (show_ignored_in_status)
s.show_ignored_files = 1;
if (*argv) if (*argv)
s.pathspec = get_pathspec(prefix, argv); s.pathspec = get_pathspec(prefix, argv);

View File

@ -646,9 +646,11 @@ void wt_status_print(struct wt_status *s)
wt_status_print_submodule_summary(s, 0); /* staged */ wt_status_print_submodule_summary(s, 0); /* staged */
wt_status_print_submodule_summary(s, 1); /* unstaged */ wt_status_print_submodule_summary(s, 1); /* unstaged */
} }
if (s->show_untracked_files) if (s->show_untracked_files) {
wt_status_print_other(s, &s->untracked, "Untracked", "add"); wt_status_print_other(s, &s->untracked, "Untracked", "add");
else if (s->commitable) if (s->show_ignored_files)
wt_status_print_other(s, &s->ignored, "Ignored", "add -f");
} else if (s->commitable)
fprintf(s->fp, "# Untracked files not listed (use -u option to show untracked files)\n"); fprintf(s->fp, "# Untracked files not listed (use -u option to show untracked files)\n");
if (s->verbose) if (s->verbose)
@ -730,16 +732,16 @@ 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, static void wt_shortstatus_other(int null_termination, struct string_list_item *it,
struct wt_status *s) struct wt_status *s, const char *sign)
{ {
if (null_termination) { if (null_termination) {
fprintf(stdout, "?? %s%c", it->string, 0); fprintf(stdout, "%s %s%c", sign, it->string, 0);
} else { } else {
struct strbuf onebuf = STRBUF_INIT; struct strbuf onebuf = STRBUF_INIT;
const char *one; const char *one;
one = quote_path(it->string, -1, &onebuf, s->prefix); 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), sign);
printf(" %s\n", one); printf(" %s\n", one);
strbuf_release(&onebuf); strbuf_release(&onebuf);
} }
@ -763,7 +765,13 @@ void wt_shortstatus_print(struct wt_status *s, int null_termination)
struct string_list_item *it; struct string_list_item *it;
it = &(s->untracked.items[i]); it = &(s->untracked.items[i]);
wt_shortstatus_untracked(null_termination, it, s); wt_shortstatus_other(null_termination, it, s, "??");
}
for (i = 0; i < s->ignored.nr; i++) {
struct string_list_item *it;
it = &(s->ignored.items[i]);
wt_shortstatus_other(null_termination, it, s, "!!");
} }
} }