X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=log-tree.c;h=dbd06490f97c735171974f068b48dbdbbb992723;hb=93f9cc675d6ca9d9170f72def005ecffd9590e9c;hp=35be33aaf73e0b53cb9ece09bba5f1e12de4b99d;hpb=1fcdd62adf81a172f45c7c6a58177212d500b9d9;p=git.git diff --git a/log-tree.c b/log-tree.c index 35be33aaf..dbd06490f 100644 --- a/log-tree.c +++ b/log-tree.c @@ -2,6 +2,7 @@ #include "diff.h" #include "commit.h" #include "log-tree.h" +#include "reflog-walk.h" static void show_parents(struct commit *commit, int abbrev) { @@ -101,6 +102,16 @@ static int append_signoff(char *buf, int buf_sz, int at, const char *signoff) return at; } +static unsigned int digits_in_number(unsigned int number) +{ + unsigned int i = 10, result = 1; + while (i <= number) { + i *= 10; + result++; + } + return result; +} + void show_log(struct rev_info *opt, const char *sep) { static char this_header[16384]; @@ -142,7 +153,7 @@ void show_log(struct rev_info *opt, const char *sep) if (*sep != '\n' && opt->commit_format == CMIT_FMT_ONELINE) extra = "\n"; if (opt->shown_one && opt->commit_format != CMIT_FMT_ONELINE) - putchar('\n'); + putchar(opt->diffopt.line_termination); opt->shown_one = 1; /* @@ -154,7 +165,8 @@ void show_log(struct rev_info *opt, const char *sep) if (opt->total > 0) { static char buffer[64]; snprintf(buffer, sizeof(buffer), - "Subject: [PATCH %d/%d] ", + "Subject: [PATCH %0*d/%d] ", + digits_in_number(opt->total), opt->nr, opt->total); subject = buffer; } else if (opt->total == 0) @@ -174,7 +186,7 @@ void show_log(struct rev_info *opt, const char *sep) snprintf(subject_buffer, sizeof(subject_buffer) - 1, "%s" "MIME-Version: 1.0\n" - "Content-Type: multipart/mixed;\n" + "Content-Type: multipart/mixed;" " boundary=\"%s%s\"\n" "\n" "This is a multi-part message in MIME " @@ -190,24 +202,26 @@ void show_log(struct rev_info *opt, const char *sep) snprintf(buffer, sizeof(buffer) - 1, "--%s%s\n" - "Content-Type: text/x-patch;\n" + "Content-Type: text/x-patch;" " name=\"%s.diff\"\n" "Content-Transfer-Encoding: 8bit\n" - "Content-Disposition: inline;\n" + "Content-Disposition: %s;" " filename=\"%s.diff\"\n\n", mime_boundary_leader, opt->mime_boundary, - sha1, sha1); + sha1, + opt->no_inline ? "attachment" : "inline", + sha1); opt->diffopt.stat_sep = buffer; } - } else { + } else if (opt->commit_format != CMIT_FMT_USERFORMAT) { fputs(diff_get_color(opt->diffopt.color_diff, DIFF_COMMIT), stdout); if (opt->commit_format != CMIT_FMT_ONELINE) fputs("commit ", stdout); - if (opt->left_right) { - if (commit->object.flags & BOUNDARY) - putchar('-'); - else if (commit->object.flags & SYMMETRIC_LEFT) + if (commit->object.flags & BOUNDARY) + putchar('-'); + else if (opt->left_right) { + if (commit->object.flags & SYMMETRIC_LEFT) putchar('<'); else putchar('>'); @@ -223,6 +237,15 @@ void show_log(struct rev_info *opt, const char *sep) printf("%s", diff_get_color(opt->diffopt.color_diff, DIFF_RESET)); putchar(opt->commit_format == CMIT_FMT_ONELINE ? ' ' : '\n'); + if (opt->reflog_info) { + show_reflog_message(opt->reflog_info, + opt->commit_format == CMIT_FMT_ONELINE, + opt->relative_date); + if (opt->commit_format == CMIT_FMT_ONELINE) { + printf("%s", sep); + return; + } + } } /* @@ -261,9 +284,8 @@ int log_tree_diff_flush(struct rev_info *opt) 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); + printf("---"); + putchar('\n'); } } diff_flush(&opt->diffopt);