OSDN Git Service

Don't use "<unknown>" for placeholders and suppress printing of empty user formats.
authorMichal Vitecek <fuf@mageo.cz>
Tue, 25 Sep 2007 14:38:46 +0000 (16:38 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 26 Sep 2007 07:40:47 +0000 (00:40 -0700)
This changes the interporate() to replace entries with NULL values
by the empty string, and uses it to interpolate missing fields in
custom format output used in git-log and friends.  It is most useful
to avoid <unknown> output from %b format for a commit log message
that lack any body text.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-rev-list.c
commit.c
interpolate.c
log-tree.c
t/t6006-rev-list-format.sh
t/t7500-commit.sh

index 3894633..0b74eb3 100644 (file)
@@ -85,7 +85,8 @@ static void show_commit(struct commit *commit)
                pretty_print_commit(revs.commit_format, commit, ~0,
                                    &buf, &buflen,
                                    revs.abbrev, NULL, NULL, revs.date_mode);
-               printf("%s%c", buf, hdr_termination);
+               if (*buf)
+                       printf("%s%c", buf, hdr_termination);
                free(buf);
        }
        maybe_flush_or_die(stdout, "stdout");
index 99f65ce..c9a1818 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -917,9 +917,6 @@ long format_commit_message(const struct commit *commit, const void *format,
        }
        if (msg[i])
                table[IBODY].value = xstrdup(msg + i);
-       for (i = 0; i < ARRAY_SIZE(table); i++)
-               if (!table[i].value)
-                       interp_set_entry(table, i, "<unknown>");
 
        do {
                char *buf = *buf_p;
index 0082677..2f727cd 100644 (file)
@@ -76,8 +76,12 @@ unsigned long interpolate(char *result, unsigned long reslen,
                        /* Check for valid interpolation. */
                        if (i < ninterps) {
                                value = interps[i].value;
-                               valuelen = strlen(value);
+                               if (!value) {
+                                       src += namelen;
+                                       continue;
+                               }
 
+                               valuelen = strlen(value);
                                if (newlen + valuelen + 1 < reslen) {
                                        /* Substitute. */
                                        strncpy(dest, value, valuelen);
index a642371..79e3dee 100644 (file)
@@ -298,7 +298,8 @@ void show_log(struct rev_info *opt, const char *sep)
        if (opt->show_log_size)
                printf("log size %i\n", len);
 
-       printf("%s%s%s", msgbuf, extra, sep);
+       if (*msgbuf)
+               printf("%s%s%s", msgbuf, extra, sep);
        free(msgbuf);
 }
 
index ad6d0b8..1e4541a 100755 (executable)
@@ -79,9 +79,7 @@ EOF
 
 test_format encoding %e <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format subject %s <<'EOF'
@@ -93,9 +91,7 @@ EOF
 
 test_format body %b <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format colors %Credfoo%Cgreenbar%Cbluebaz%Cresetxyzzy <<'EOF'
@@ -121,9 +117,7 @@ test_format complex-encoding %e <<'EOF'
 commit f58db70b055c5718631e5c61528b28b12090cdea
 iso8859-1
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format complex-subject %s <<'EOF'
@@ -142,9 +136,7 @@ and it will be encoded in iso8859-1. We should therefore
 include an iso8859 character: ¡bueno!
 
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_done
index f11ada8..abbf54b 100755 (executable)
@@ -81,7 +81,7 @@ test_expect_success 'explicit commit message should override template' '
        git add foo &&
        GIT_EDITOR=../t7500/add-content git commit --template "$TEMPLATE" \
                -m "command line msg" &&
-       commit_msg_is "command line msg<unknown>"
+       commit_msg_is "command line msg"
 '
 
 test_expect_success 'commit message from file should override template' '
@@ -90,7 +90,7 @@ test_expect_success 'commit message from file should override template' '
        echo "standard input msg" |
                GIT_EDITOR=../t7500/add-content git commit \
                        --template "$TEMPLATE" --file - &&
-       commit_msg_is "standard input msg<unknown>"
+       commit_msg_is "standard input msg"
 '
 
 test_done