diff options
Diffstat (limited to 'log-tree.c')
-rw-r--r-- | log-tree.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/log-tree.c b/log-tree.c index ebb49f2970..9d8d46fa00 100644 --- a/log-tree.c +++ b/log-tree.c @@ -43,9 +43,10 @@ static int append_signoff(char *buf, int buf_sz, int at, const char *signoff) return at; } -void show_log(struct rev_info *opt, struct log_info *log, const char *sep) +void show_log(struct rev_info *opt, const char *sep) { static char this_header[16384]; + struct log_info *log = opt->loginfo; struct commit *commit = log->commit, *parent = log->parent; int abbrev = opt->diffopt.abbrev; int abbrev_commit = opt->abbrev_commit ? opt->abbrev : 40; @@ -163,8 +164,22 @@ int log_tree_diff_flush(struct rev_info *opt) return 0; } - if (opt->loginfo && !opt->no_commit_id) - show_log(opt, opt->loginfo, opt->diffopt.with_stat ? "---\n" : "\n"); + if (opt->loginfo && !opt->no_commit_id) { + /* When showing a verbose header (i.e. log message), + * and not in --pretty=oneline format, we would want + * an extra newline between the end of log and the + * output for readability. + */ + show_log(opt, opt->diffopt.msg_sep); + if (opt->verbose_header && + opt->commit_format != CMIT_FMT_ONELINE) { + int pch = DIFF_FORMAT_DIFFSTAT | DIFF_FORMAT_PATCH; + if ((pch & opt->diffopt.output_format) == pch) + printf("---%c", opt->diffopt.line_termination); + else + putchar(opt->diffopt.line_termination); + } + } diff_flush(&opt->diffopt); return 1; } @@ -261,7 +276,7 @@ int log_tree_commit(struct rev_info *opt, struct commit *commit) shown = log_tree_diff(opt, commit, &log); if (!shown && opt->loginfo && opt->always_show_header) { log.parent = NULL; - show_log(opt, opt->loginfo, ""); + show_log(opt, ""); shown = 1; } opt->loginfo = NULL; |