Hmmm it seems this patch has been somehow lost somewhere, is there anything wrong with it ? On Mon, May 05, 2008 at 09:38:36AM +0000, Pierre Habouzit wrote: > The goal is to be able to read git log -p more easily, and commit messages > tends to meld within the diff. Now it's possible to set e.g. > color.diff.message to 'bold' and read them more easily. > > Defaults for those two colors are set to normal color to match previous > behavior. > > Signed-off-by: Pierre Habouzit <madcoder@xxxxxxxxxx> > --- > builtin-branch.c | 2 +- > builtin-checkout.c | 2 +- > builtin-log.c | 8 ++++---- > builtin-rev-list.c | 2 +- > builtin-show-branch.c | 2 +- > commit.h | 8 +++++--- > diff.c | 6 ++++++ > diff.h | 2 ++ > log-tree.c | 6 +++--- > pretty.c | 43 ++++++++++++++++++++++++++++++------------- > 10 files changed, 54 insertions(+), 27 deletions(-) > > diff --git a/builtin-branch.c b/builtin-branch.c > index 19c508a..c2f4227 100644 > --- a/builtin-branch.c > +++ b/builtin-branch.c > @@ -315,7 +315,7 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose, > > commit = lookup_commit(item->sha1); > if (commit && !parse_commit(commit)) { > - pretty_print_commit(CMIT_FMT_ONELINE, commit, > + pretty_print_commit(CMIT_FMT_ONELINE, NULL, commit, > &subject, 0, NULL, NULL, 0, 0); > sub = subject.buf; > } > diff --git a/builtin-checkout.c b/builtin-checkout.c > index 28722aa..b89851d 100644 > --- a/builtin-checkout.c > +++ b/builtin-checkout.c > @@ -142,7 +142,7 @@ static void describe_detached_head(char *msg, struct commit *commit) > struct strbuf sb; > strbuf_init(&sb, 0); > parse_commit(commit); > - pretty_print_commit(CMIT_FMT_ONELINE, commit, &sb, 0, "", "", 0, 0); > + pretty_print_commit(CMIT_FMT_ONELINE, NULL, commit, &sb, 0, "", "", 0, 0); > fprintf(stderr, "%s %s... %s\n", msg, > find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV), sb.buf); > strbuf_release(&sb); > diff --git a/builtin-log.c b/builtin-log.c > index 5e9c256..9efb3ad 100644 > --- a/builtin-log.c > +++ b/builtin-log.c > @@ -693,11 +693,11 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout, > > msg = body; > strbuf_init(&sb, 0); > - pp_user_info(NULL, CMIT_FMT_EMAIL, &sb, committer, DATE_RFC2822, > + pp_user_info(NULL, CMIT_FMT_EMAIL, &sb, "", committer, DATE_RFC2822, > encoding); > pp_title_line(CMIT_FMT_EMAIL, &msg, &sb, subject_start, extra_headers, > encoding, need_8bit_cte); > - pp_remainder(CMIT_FMT_EMAIL, &msg, &sb, 0); > + pp_remainder(CMIT_FMT_EMAIL, &msg, &sb, "", 0); > printf("%s\n", sb.buf); > > strbuf_release(&sb); > @@ -1160,8 +1160,8 @@ int cmd_cherry(int argc, const char **argv, const char *prefix) > if (verbose) { > struct strbuf buf; > strbuf_init(&buf, 0); > - pretty_print_commit(CMIT_FMT_ONELINE, commit, > - &buf, 0, NULL, NULL, 0, 0); > + pretty_print_commit(CMIT_FMT_ONELINE, &revs.diffopt, > + commit, &buf, 0, NULL, NULL, 0, 0); > printf("%c %s %s\n", sign, > sha1_to_hex(commit->object.sha1), buf.buf); > strbuf_release(&buf); > diff --git a/builtin-rev-list.c b/builtin-rev-list.c > index 9199b32..240fc8d 100644 > --- a/builtin-rev-list.c > +++ b/builtin-rev-list.c > @@ -103,7 +103,7 @@ static void show_commit(struct commit *commit) > if (REV_DIFF_TST(&revs, VERBOSE_HEADER) && commit->buffer) { > struct strbuf buf; > strbuf_init(&buf, 0); > - pretty_print_commit(revs.commit_format, commit, > + pretty_print_commit(revs.commit_format, &revs.diffopt, commit, > &buf, revs.abbrev, NULL, NULL, > revs.date_mode, 0); > if (buf.len) > diff --git a/builtin-show-branch.c b/builtin-show-branch.c > index 019abd3..39a8b04 100644 > --- a/builtin-show-branch.c > +++ b/builtin-show-branch.c > @@ -265,7 +265,7 @@ static void show_one_commit(struct commit *commit, int no_name) > > strbuf_init(&pretty, 0); > if (commit->object.parsed) { > - pretty_print_commit(CMIT_FMT_ONELINE, commit, > + pretty_print_commit(CMIT_FMT_ONELINE, NULL, commit, > &pretty, 0, NULL, NULL, 0, 0); > pretty_str = pretty.buf; > } > diff --git a/commit.h b/commit.h > index 2d94d41..6175e0f 100644 > --- a/commit.h > +++ b/commit.h > @@ -5,6 +5,7 @@ > #include "tree.h" > #include "strbuf.h" > #include "decorate.h" > +#include "diff.h" > > struct commit_list { > struct commit *item; > @@ -67,13 +68,13 @@ struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */ > extern void get_commit_format(const char *arg, struct rev_info *); > extern void format_commit_message(const struct commit *commit, > const void *format, struct strbuf *sb); > -extern void pretty_print_commit(enum cmit_fmt fmt, const struct commit*, > - struct strbuf *, > +extern void pretty_print_commit(enum cmit_fmt fmt, const struct diff_options *dopt, > + const struct commit*, struct strbuf *, > int abbrev, const char *subject, > const char *after_subject, enum date_mode, > int need_8bit_cte); > void pp_user_info(const char *what, enum cmit_fmt fmt, struct strbuf *sb, > - const char *line, enum date_mode dmode, > + const char *color, const char *line, enum date_mode dmode, > const char *encoding); > void pp_title_line(enum cmit_fmt fmt, > const char **msg_p, > @@ -85,6 +86,7 @@ void pp_title_line(enum cmit_fmt fmt, > void pp_remainder(enum cmit_fmt fmt, > const char **msg_p, > struct strbuf *sb, > + const char *color, > int indent); > > > diff --git a/diff.c b/diff.c > index 29c168d..787c91b 100644 > --- a/diff.c > +++ b/diff.c > @@ -33,6 +33,8 @@ static char diff_colors[][COLOR_MAXLEN] = { > "\033[32m", /* NEW (green) */ > "\033[33m", /* COMMIT (yellow) */ > "\033[41m", /* WHITESPACE (red background) */ > + "", /* HEADER (normal) */ > + "", /* COMMIT_MSG (normal) */ > }; > > static int parse_diff_color_slot(const char *var, int ofs) > @@ -51,6 +53,10 @@ static int parse_diff_color_slot(const char *var, int ofs) > return DIFF_COMMIT; > if (!strcasecmp(var+ofs, "whitespace")) > return DIFF_WHITESPACE; > + if (!strcasecmp(var+ofs, "header")) > + return DIFF_HEADER; > + if (!strcasecmp(var+ofs, "message")) > + return DIFF_COMMIT_MSG; > die("bad config variable '%s'", var); > } > > diff --git a/diff.h b/diff.h > index 1fc1939..dba4d5e 100644 > --- a/diff.h > +++ b/diff.h > @@ -192,6 +192,8 @@ enum color_diff { > DIFF_FILE_NEW = 5, > DIFF_COMMIT = 6, > DIFF_WHITESPACE = 7, > + DIFF_HEADER = 8, > + DIFF_COMMIT_MSG = 9, > }; > const char *diff_get_color(int diff_use_color, enum color_diff ix); > #define diff_get_color_opt(o, ix) \ > diff --git a/log-tree.c b/log-tree.c > index 2b005a2..3bcb113 100644 > --- a/log-tree.c > +++ b/log-tree.c > @@ -308,9 +308,9 @@ void show_log(struct rev_info *opt, const char *sep) > strbuf_init(&msgbuf, 0); > if (need_8bit_cte >= 0) > need_8bit_cte = has_non_ascii(opt->add_signoff); > - pretty_print_commit(opt->commit_format, commit, &msgbuf, > - abbrev, subject, extra_headers, opt->date_mode, > - need_8bit_cte); > + pretty_print_commit(opt->commit_format, &opt->diffopt, commit, > + &msgbuf, abbrev, subject, extra_headers, > + opt->date_mode, need_8bit_cte); > > if (opt->add_signoff) > append_signoff(&msgbuf, opt->add_signoff); > diff --git a/pretty.c b/pretty.c > index 30c2699..6a67cf4 100644 > --- a/pretty.c > +++ b/pretty.c > @@ -119,7 +119,7 @@ needquote: > } > > void pp_user_info(const char *what, enum cmit_fmt fmt, struct strbuf *sb, > - const char *line, enum date_mode dmode, > + const char *color, const char *line, enum date_mode dmode, > const char *encoding) > { > char *date; > @@ -146,24 +146,25 @@ void pp_user_info(const char *what, enum cmit_fmt fmt, struct strbuf *sb, > name_tail--; > display_name_length = name_tail - line; > filler = ""; > + strbuf_addstr(sb, color); > strbuf_addstr(sb, "From: "); > add_rfc2047(sb, line, display_name_length, encoding); > strbuf_add(sb, name_tail, namelen - display_name_length); > strbuf_addch(sb, '\n'); > } else { > - strbuf_addf(sb, "%s: %.*s%.*s\n", what, > + strbuf_addf(sb, "%s%s: %.*s%.*s\n", color, what, > (fmt == CMIT_FMT_FULLER) ? 4 : 0, > filler, namelen, line); > } > switch (fmt) { > case CMIT_FMT_MEDIUM: > - strbuf_addf(sb, "Date: %s\n", show_date(time, tz, dmode)); > + strbuf_addf(sb, "%sDate: %s\n", color, show_date(time, tz, dmode)); > break; > case CMIT_FMT_EMAIL: > - strbuf_addf(sb, "Date: %s\n", show_date(time, tz, DATE_RFC2822)); > + strbuf_addf(sb, "%sDate: %s\n", color, show_date(time, tz, DATE_RFC2822)); > break; > case CMIT_FMT_FULLER: > - strbuf_addf(sb, "%sDate: %s\n", what, show_date(time, tz, dmode)); > + strbuf_addf(sb, "%s%sDate: %s\n", color, what, show_date(time, tz, dmode)); > break; > default: > /* notin' */ > @@ -590,6 +591,7 @@ void format_commit_message(const struct commit *commit, > static void pp_header(enum cmit_fmt fmt, > int abbrev, > enum date_mode dmode, > + const char *color, > const char *encoding, > const struct commit *commit, > const char **msg_p, > @@ -610,6 +612,7 @@ static void pp_header(enum cmit_fmt fmt, > return; > > if (fmt == CMIT_FMT_RAW) { > + strbuf_addstr(sb, color); > strbuf_add(sb, line, linelen); > continue; > } > @@ -629,6 +632,7 @@ static void pp_header(enum cmit_fmt fmt, > ; > /* with enough slop */ > strbuf_grow(sb, num * 50 + 20); > + strbuf_addstr(sb, color); > add_merge_info(fmt, sb, commit, abbrev); > parents_shown = 1; > } > @@ -640,12 +644,12 @@ static void pp_header(enum cmit_fmt fmt, > */ > if (!memcmp(line, "author ", 7)) { > strbuf_grow(sb, linelen + 80); > - pp_user_info("Author", fmt, sb, line + 7, dmode, encoding); > + pp_user_info("Author", fmt, sb, color, line + 7, dmode, encoding); > } > if (!memcmp(line, "committer ", 10) && > (fmt == CMIT_FMT_FULL || fmt == CMIT_FMT_FULLER)) { > strbuf_grow(sb, linelen + 80); > - pp_user_info("Commit", fmt, sb, line + 10, dmode, encoding); > + pp_user_info("Commit", fmt, sb, color, line + 10, dmode, encoding); > } > } > } > @@ -708,6 +712,7 @@ void pp_title_line(enum cmit_fmt fmt, > void pp_remainder(enum cmit_fmt fmt, > const char **msg_p, > struct strbuf *sb, > + const char *color, > int indent) > { > int first = 1; > @@ -728,6 +733,7 @@ void pp_remainder(enum cmit_fmt fmt, > first = 0; > > strbuf_grow(sb, linelen + indent + 20); > + strbuf_addstr(sb, color); > if (indent) { > memset(sb->buf + sb->len, ' ', indent); > strbuf_setlen(sb, sb->len + indent); > @@ -737,7 +743,8 @@ void pp_remainder(enum cmit_fmt fmt, > } > } > > -void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, > +void pretty_print_commit(enum cmit_fmt fmt, > + const struct diff_options *dopt, const struct commit *commit, > struct strbuf *sb, int abbrev, > const char *subject, const char *after_subject, > enum date_mode dmode, int need_8bit_cte) > @@ -747,6 +754,9 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, > const char *msg = commit->buffer; > char *reencoded; > const char *encoding; > + const char *rstcol = dopt ? diff_get_color_opt(dopt, DIFF_RESET) : ""; > + const char *hdrcol = dopt ? diff_get_color_opt(dopt, DIFF_HEADER) : ""; > + const char *msgcol = dopt ? diff_get_color_opt(dopt, DIFF_COMMIT_MSG) : ""; > > if (fmt == CMIT_FMT_USERFORMAT) { > format_commit_message(commit, user_format, sb); > @@ -789,8 +799,9 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, > } > } > > - pp_header(fmt, abbrev, dmode, encoding, commit, &msg, sb); > + pp_header(fmt, abbrev, dmode, hdrcol, encoding, commit, &msg, sb); > if (fmt != CMIT_FMT_ONELINE && !subject) { > + strbuf_addstr(sb, rstcol); > strbuf_addch(sb, '\n'); > } > > @@ -811,20 +822,26 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, > after_subject, encoding, need_8bit_cte); > > beginning_of_body = sb->len; > - if (fmt != CMIT_FMT_ONELINE) > - pp_remainder(fmt, &msg, sb, indent); > + if (fmt != CMIT_FMT_ONELINE) { > + pp_remainder(fmt, &msg, sb, msgcol, indent); > + strbuf_addstr(sb, rstcol); > + } > strbuf_rtrim(sb); > > /* Make sure there is an EOLN for the non-oneline case */ > - if (fmt != CMIT_FMT_ONELINE) > + if (fmt != CMIT_FMT_ONELINE) { > + strbuf_addstr(sb, rstcol); > strbuf_addch(sb, '\n'); > + } > > /* > * The caller may append additional body text in e-mail > * format. Make sure we did not strip the blank line > * between the header and the body. > */ > - if (fmt == CMIT_FMT_EMAIL && sb->len <= beginning_of_body) > + if (fmt == CMIT_FMT_EMAIL && sb->len <= beginning_of_body) { > + strbuf_addstr(sb, rstcol); > strbuf_addch(sb, '\n'); > + } > free(reencoded); > } > -- > 1.5.5.1.224.g993e4.dirty > > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- ·O· Pierre Habouzit ··O madcoder@xxxxxxxxxx OOO http://www.madism.org
Attachment:
pgpk9lJI811yW.pgp
Description: PGP signature