pull --rebase: Avoid spurious conflicts and reapplying unnecessary patches
[gitweb.git] / wt-status.c
index c4589055bb7d6b8e945477d09e0015fe2da349af..5807fc3211a3aa8f886694776fe8c86b5bc5eb59 100644 (file)
@@ -49,6 +49,8 @@ static void wt_status_print_unmerged_header(struct wt_status *s)
        const char *c = color(WT_STATUS_HEADER, s);
 
        color_fprintf_ln(s->fp, c, "# Unmerged paths:");
+       if (!advice_status_hints)
+               return;
        if (s->in_merge)
                ;
        else if (!s->is_initial)
@@ -64,6 +66,8 @@ static void wt_status_print_cached_header(struct wt_status *s)
        const char *c = color(WT_STATUS_HEADER, s);
 
        color_fprintf_ln(s->fp, c, "# Changes to be committed:");
+       if (!advice_status_hints)
+               return;
        if (s->in_merge)
                ; /* NEEDSWORK: use "git reset --unresolve"??? */
        else if (!s->is_initial)
@@ -79,6 +83,8 @@ static void wt_status_print_dirty_header(struct wt_status *s,
        const char *c = color(WT_STATUS_HEADER, s);
 
        color_fprintf_ln(s->fp, c, "# Changed but not updated:");
+       if (!advice_status_hints)
+               return;
        if (!has_deleted)
                color_fprintf_ln(s->fp, c, "#   (use \"git add <file>...\" to update what will be committed)");
        else
@@ -91,6 +97,8 @@ static void wt_status_print_untracked_header(struct wt_status *s)
 {
        const char *c = color(WT_STATUS_HEADER, s);
        color_fprintf_ln(s->fp, c, "# Untracked files:");
+       if (!advice_status_hints)
+               return;
        color_fprintf_ln(s->fp, c, "#   (use \"git add <file>...\" to include in what will be committed)");
        color_fprintf_ln(s->fp, c, "#");
 }
@@ -335,8 +343,8 @@ static void wt_status_collect_untracked(struct wt_status *s)
                        DIR_SHOW_OTHER_DIRECTORIES | DIR_HIDE_EMPTY_DIRECTORIES;
        setup_standard_excludes(&dir);
 
-       fill_directory(&dir, NULL);
-       for(i = 0; i < dir.nr; i++) {
+       fill_directory(&dir, s->pathspec);
+       for (i = 0; i < dir.nr; i++) {
                struct dir_entry *ent = dir.entries[i];
                if (!cache_name_is_other(ent->name, ent->len))
                        continue;
@@ -451,7 +459,7 @@ static void wt_status_print_changed(struct wt_status *s)
        wt_status_print_trailer(s);
 }
 
-static void wt_status_print_submodule_summary(struct wt_status *s)
+static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitted)
 {
        struct child_process sm_summary;
        char summary_limit[64];
@@ -460,11 +468,11 @@ static void wt_status_print_submodule_summary(struct wt_status *s)
        const char *argv[] = {
                "submodule",
                "summary",
-               "--cached",
+               uncommitted ? "--files" : "--cached",
                "--for-status",
                "--summary-limit",
                summary_limit,
-               s->amend ? "HEAD^" : "HEAD",
+               uncommitted ? NULL : (s->amend ? "HEAD^" : "HEAD"),
                NULL
        };
 
@@ -569,11 +577,13 @@ void wt_status_print(struct wt_status *s)
                color_fprintf_ln(s->fp, color(WT_STATUS_HEADER, s), "#");
        }
 
-       wt_status_print_unmerged(s);
        wt_status_print_updated(s);
+       wt_status_print_unmerged(s);
        wt_status_print_changed(s);
-       if (s->submodule_summary)
-               wt_status_print_submodule_summary(s);
+       if (s->submodule_summary) {
+               wt_status_print_submodule_summary(s, 0);  /* staged */
+               wt_status_print_submodule_summary(s, 1);  /* unstaged */
+       }
        if (s->show_untracked_files)
                wt_status_print_untracked(s);
        else if (s->commitable)