]> git.ipfire.org Git - thirdparty/git.git/blobdiff - wt-status.c
test-ref-store: remove force-create argument for create-reflog
[thirdparty/git.git] / wt-status.c
index eaed30eafba8005994894fac2e4046ee00987486..5d215f4e4f1ea862a169bab5c2cb2039ad0d50d3 100644 (file)
@@ -787,7 +787,7 @@ static void wt_status_collect_untracked(struct wt_status *s)
 
        dir_clear(&dir);
 
-       if (advice_status_u_option)
+       if (advice_enabled(ADVICE_STATUS_U_OPTION))
                s->untracked_in_ms = (getnanotime() - t_begin) / 1000000;
 }
 
@@ -948,11 +948,17 @@ static int stash_count_refs(struct object_id *ooid, struct object_id *noid,
        return 0;
 }
 
+static int count_stash_entries(void)
+{
+       int n = 0;
+       for_each_reflog_ent("refs/stash", stash_count_refs, &n);
+       return n;
+}
+
 static void wt_longstatus_print_stash_summary(struct wt_status *s)
 {
-       int stash_count = 0;
+       int stash_count = count_stash_entries();
 
-       for_each_reflog_ent("refs/stash", stash_count_refs, &stash_count);
        if (stash_count > 0)
                status_printf_ln(s, GIT_COLOR_NORMAL,
                                 Q_("Your stash currently has %d entry",
@@ -1158,7 +1164,7 @@ static void wt_longstatus_print_tracking(struct wt_status *s)
        if (!format_tracking_info(branch, &sb, s->ahead_behind_flags))
                return;
 
-       if (advice_status_ahead_behind_warning &&
+       if (advice_enabled(ADVICE_STATUS_AHEAD_BEHIND_WARNING) &&
            s->ahead_behind_flags == AHEAD_BEHIND_FULL) {
                uint64_t t_delta_in_ms = (getnanotime() - t_begin) / 1000000;
                if (t_delta_in_ms > AB_DELAY_WARNING_IN_MS) {
@@ -1845,7 +1851,7 @@ static void wt_longstatus_print(struct wt_status *s)
                wt_longstatus_print_other(s, &s->untracked, _("Untracked files"), "add");
                if (s->show_ignored_mode)
                        wt_longstatus_print_other(s, &s->ignored, _("Ignored files"), "add -f");
-               if (advice_status_u_option && 2000 < s->untracked_in_ms) {
+               if (advice_enabled(ADVICE_STATUS_U_OPTION) && 2000 < s->untracked_in_ms) {
                        status_printf_ln(s, GIT_COLOR_NORMAL, "%s", "");
                        status_printf_ln(s, GIT_COLOR_NORMAL,
                                         _("It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -2176,6 +2182,18 @@ static void wt_porcelain_v2_print_tracking(struct wt_status *s)
        }
 }
 
+/*
+ * Print the stash count in a porcelain-friendly format
+ */
+static void wt_porcelain_v2_print_stash(struct wt_status *s)
+{
+       int stash_count = count_stash_entries();
+       char eol = s->null_termination ? '\0' : '\n';
+
+       if (stash_count > 0)
+               fprintf(s->fp, "# stash %d%c", stash_count, eol);
+}
+
 /*
  * Convert various submodule status values into a
  * fixed-length string of characters in the buffer provided.
@@ -2437,6 +2455,9 @@ static void wt_porcelain_v2_print(struct wt_status *s)
        if (s->show_branch)
                wt_porcelain_v2_print_tracking(s);
 
+       if (s->show_stash)
+               wt_porcelain_v2_print_stash(s);
+
        for (i = 0; i < s->change.nr; i++) {
                it = &(s->change.items[i]);
                d = it->util;