Browse Source

Don't use "<unknown>" for placeholders and suppress printing of empty user formats.

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>
maint
Michal Vitecek 18 years ago committed by Junio C Hamano
parent
commit
55246aac67
  1. 3
      builtin-rev-list.c
  2. 3
      commit.c
  3. 6
      interpolate.c
  4. 3
      log-tree.c
  5. 8
      t/t6006-rev-list-format.sh
  6. 4
      t/t7500-commit.sh

3
builtin-rev-list.c

@ -85,7 +85,8 @@ static void show_commit(struct commit *commit) @@ -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");

3
commit.c

@ -917,9 +917,6 @@ long format_commit_message(const struct commit *commit, const void *format, @@ -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;

6
interpolate.c

@ -76,8 +76,12 @@ unsigned long interpolate(char *result, unsigned long reslen, @@ -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);

3
log-tree.c

@ -298,7 +298,8 @@ void show_log(struct rev_info *opt, const char *sep) @@ -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);
}


8
t/t6006-rev-list-format.sh

@ -79,9 +79,7 @@ EOF @@ -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 @@ -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' @@ -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 @@ -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

4
t/t7500-commit.sh

@ -81,7 +81,7 @@ test_expect_success 'explicit commit message should override template' ' @@ -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' ' @@ -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

Loading…
Cancel
Save