Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

submodule summary: ignore --for-status option

The --for-status option was an undocumented option used only by
wt-status.c, which inserted a header and commented out the output. We can
achieve the same result within wt-status.c, without polluting the
submodule command-line options.

This will make it easier to disable the comments from wt-status.c later.

The --for-status is kept so that another topic in flight
(bc/submodule-status-ignored) can continue relying on it, although it is
currently a no-op.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information...
commit 3ba7407b8b7b7a75f720641327207d6cfdb163a2 1 parent bb7e32e
@moy moy authored gitster committed
Showing with 32 additions and 20 deletions.
  1. +1 −12 git-submodule.sh
  2. +5 −7 t/t7401-submodule-summary.sh
  3. +26 −1 wt-status.c
View
13 git-submodule.sh
@@ -1149,18 +1149,7 @@ cmd_summary() {
echo
fi
echo
- done |
- if test -n "$for_status"; then
- if [ -n "$files" ]; then
- gettextln "Submodules changed but not updated:" | git stripspace -c
- else
- gettextln "Submodule changes to be committed:" | git stripspace -c
- fi
- printf "\n" | git stripspace -c
- git stripspace -c
- else
- cat
- fi
+ done
}
#
# List all submodules, prefixed with:
View
12 t/t7401-submodule-summary.sh
@@ -265,13 +265,11 @@ EOF
test_expect_success '--for-status' "
git submodule summary --for-status HEAD^ >actual &&
test_i18ncmp actual - <<EOF
-# Submodule changes to be committed:
-#
-# * sm1 $head6...0000000:
-#
-# * sm2 0000000...$head7 (2):
-# > Add foo9
-#
+* sm1 $head6...0000000:
+
+* sm2 0000000...$head7 (2):
+ > Add foo9
+
EOF
"
View
27 wt-status.c
@@ -665,6 +665,10 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
char index[PATH_MAX];
const char *env[] = { NULL, NULL };
struct argv_array argv = ARGV_ARRAY_INIT;
+ struct strbuf cmd_stdout = STRBUF_INIT;
+ struct strbuf summary = STRBUF_INIT;
+ char *summary_content;
+ size_t len;
sprintf(summary_limit, "%d", s->submodule_summary);
snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", s->index_file);
@@ -685,9 +689,30 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
sm_summary.git_cmd = 1;
sm_summary.no_stdin = 1;
fflush(s->fp);
- sm_summary.out = dup(fileno(s->fp)); /* run_command closes it */
+ sm_summary.out = -1;
+
run_command(&sm_summary);
argv_array_clear(&argv);
+
+ len = strbuf_read(&cmd_stdout, sm_summary.out, 1024);
+
+ /* prepend header, only if there's an actual output */
+ if (len) {
+ if (uncommitted)
+ strbuf_addstr(&summary, _("Submodules changed but not updated:"));
+ else
+ strbuf_addstr(&summary, _("Submodule changes to be committed:"));
+ strbuf_addstr(&summary, "\n\n");
+ }
+ strbuf_addbuf(&summary, &cmd_stdout);
+ strbuf_release(&cmd_stdout);
+
+ summary_content = strbuf_detach(&summary, &len);
+ strbuf_add_commented_lines(&summary, summary_content, len);
+ free(summary_content);
+
+ fputs(summary.buf, s->fp);
+ strbuf_release(&summary);
}
static void wt_status_print_other(struct wt_status *s,
Please sign in to comment.
Something went wrong with that request. Please try again.