Code

Merge branch 'maint'
[git.git] / wt-status.c
index 6a7645ed86fd5879e959460011a8add015d392d9..929b00f59285c21a07df98700c23171505f5cddb 100644 (file)
@@ -15,11 +15,11 @@ int wt_status_relative_paths = 1;
 int wt_status_use_color = -1;
 int wt_status_submodule_summary;
 static char wt_status_colors[][COLOR_MAXLEN] = {
-       "",         /* WT_STATUS_HEADER: normal */
-       "\033[32m", /* WT_STATUS_UPDATED: green */
-       "\033[31m", /* WT_STATUS_CHANGED: red */
-       "\033[31m", /* WT_STATUS_UNTRACKED: red */
-       "\033[31m", /* WT_STATUS_NOBRANCH: red */
+       GIT_COLOR_NORMAL, /* WT_STATUS_HEADER */
+       GIT_COLOR_GREEN,  /* WT_STATUS_UPDATED */
+       GIT_COLOR_RED,    /* WT_STATUS_CHANGED */
+       GIT_COLOR_RED,    /* WT_STATUS_UNTRACKED */
+       GIT_COLOR_RED,    /* WT_STATUS_NOBRANCH */
 };
 
 enum untracked_status_type show_untracked_files = SHOW_NORMAL_UNTRACKED_FILES;
@@ -185,31 +185,12 @@ static void wt_status_print_changed_cb(struct diff_queue_struct *q,
                wt_status_print_trailer(s);
 }
 
-static void wt_status_print_initial(struct wt_status *s)
-{
-       int i;
-       struct strbuf buf = STRBUF_INIT;
-
-       if (active_nr) {
-               s->commitable = 1;
-               wt_status_print_cached_header(s);
-       }
-       for (i = 0; i < active_nr; i++) {
-               color_fprintf(s->fp, color(WT_STATUS_HEADER), "#\t");
-               color_fprintf_ln(s->fp, color(WT_STATUS_UPDATED), "new file: %s",
-                               quote_path(active_cache[i]->name, -1,
-                                          &buf, s->prefix));
-       }
-       if (active_nr)
-               wt_status_print_trailer(s);
-       strbuf_release(&buf);
-}
-
 static void wt_status_print_updated(struct wt_status *s)
 {
        struct rev_info rev;
        init_revisions(&rev, NULL);
-       setup_revisions(0, NULL, &rev, s->reference);
+       setup_revisions(0, NULL, &rev,
+               s->is_initial ? EMPTY_TREE_SHA1_HEX : s->reference);
        rev.diffopt.output_format |= DIFF_FORMAT_CALLBACK;
        rev.diffopt.format_callback = wt_status_print_updated_cb;
        rev.diffopt.format_callback_data = s;
@@ -269,10 +250,9 @@ static void wt_status_print_untracked(struct wt_status *s)
 
        memset(&dir, 0, sizeof(dir));
 
-       if (!s->untracked) {
-               dir.show_other_directories = 1;
-               dir.hide_empty_directories = 1;
-       }
+       if (!s->untracked)
+               dir.flags |=
+                       DIR_SHOW_OTHER_DIRECTORIES | DIR_HIDE_EMPTY_DIRECTORIES;
        setup_standard_excludes(&dir);
 
        read_directory(&dir, ".", "", 0, NULL);
@@ -298,10 +278,11 @@ static void wt_status_print_verbose(struct wt_status *s)
        struct rev_info rev;
 
        init_revisions(&rev, NULL);
-       setup_revisions(0, NULL, &rev, s->reference);
+       DIFF_OPT_SET(&rev.diffopt, ALLOW_TEXTCONV);
+       setup_revisions(0, NULL, &rev,
+               s->is_initial ? EMPTY_TREE_SHA1_HEX : s->reference);
        rev.diffopt.output_format |= DIFF_FORMAT_PATCH;
        rev.diffopt.detect_rename = 1;
-       DIFF_OPT_SET(&rev.diffopt, ALLOW_TEXTCONV);
        rev.diffopt.file = s->fp;
        rev.diffopt.close_file = 0;
        /*
@@ -360,12 +341,9 @@ void wt_status_print(struct wt_status *s)
                color_fprintf_ln(s->fp, color(WT_STATUS_HEADER), "#");
                color_fprintf_ln(s->fp, color(WT_STATUS_HEADER), "# Initial commit");
                color_fprintf_ln(s->fp, color(WT_STATUS_HEADER), "#");
-               wt_status_print_initial(s);
-       }
-       else {
-               wt_status_print_updated(s);
        }
 
+       wt_status_print_updated(s);
        wt_status_print_changed(s);
        if (wt_status_submodule_summary)
                wt_status_print_submodule_summary(s);
@@ -374,7 +352,7 @@ void wt_status_print(struct wt_status *s)
        else if (s->commitable)
                 fprintf(s->fp, "# Untracked files not listed (use -u option to show untracked files)\n");
 
-       if (s->verbose && !s->is_initial)
+       if (s->verbose)
                wt_status_print_verbose(s);
        if (!s->commitable) {
                if (s->amend)