I keep on thinking that I can write git log --format:'%aN: %s' instead of using the long-form "--pretty=format:xyz' thing. And each time, I curse myself for being stupid for forgetting the proper format. And I'm tired of being stupid. So this patch makes me smart and forward-thinking instead. Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> --- Now I just need a patch to make me athletic and handsome. commit.h | 1 + pretty.c | 26 ++++++++++++++++---------- revision.c | 2 ++ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/commit.h b/commit.h index ba9f638..cc4229b 100644 --- a/commit.h +++ b/commit.h @@ -68,6 +68,7 @@ struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */ extern char *reencode_commit_message(const struct commit *commit, const char **encoding_p); extern void get_commit_format(const char *arg, struct rev_info *); +extern int try_get_commit_format(const char *arg, struct rev_info *); extern void format_commit_message(const struct commit *commit, const void *format, struct strbuf *sb, enum date_mode dmode); diff --git a/pretty.c b/pretty.c index e5328da..97d36c5 100644 --- a/pretty.c +++ b/pretty.c @@ -19,7 +19,7 @@ static void save_user_format(struct rev_info *rev, const char *cp, int is_tforma rev->commit_format = CMIT_FMT_USERFORMAT; } -void get_commit_format(const char *arg, struct rev_info *rev) +int try_get_commit_format(const char *arg, struct rev_info *rev) { int i; static struct cmt_fmt_map { @@ -36,14 +36,9 @@ void get_commit_format(const char *arg, struct rev_info *rev) { "oneline", 1, CMIT_FMT_ONELINE }, }; - rev->use_terminator = 0; - if (!arg || !*arg) { - rev->commit_format = CMIT_FMT_DEFAULT; - return; - } if (!prefixcmp(arg, "format:") || !prefixcmp(arg, "tformat:")) { save_user_format(rev, strchr(arg, ':') + 1, arg[0] == 't'); - return; + return 1; } for (i = 0; i < ARRAY_SIZE(cmt_fmts); i++) { if (!strncmp(arg, cmt_fmts[i].n, cmt_fmts[i].cmp_len) && @@ -51,15 +46,26 @@ void get_commit_format(const char *arg, struct rev_info *rev) if (cmt_fmts[i].v == CMIT_FMT_ONELINE) rev->use_terminator = 1; rev->commit_format = cmt_fmts[i].v; - return; + return 1; } } if (strchr(arg, '%')) { save_user_format(rev, arg, 1); - return; + return 1; } - die("invalid --pretty format: %s", arg); + return 0; +} + +void get_commit_format(const char *arg, struct rev_info *rev) +{ + rev->use_terminator = 0; + if (!arg || !*arg) { + rev->commit_format = CMIT_FMT_DEFAULT; + return; + } + if (!try_get_commit_format(arg, rev)) + die("invalid --pretty format: %s", arg); } /* diff --git a/revision.c b/revision.c index 9f5dac5..181593f 100644 --- a/revision.c +++ b/revision.c @@ -1192,6 +1192,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg } else if (!strcmp(arg, "--children")) { revs->children.name = "children"; revs->limited = 1; + } else if (!strncmp(arg, "--", 2) && try_get_commit_format(arg+2, revs)) { + revs->verbose_header = 1; } else { int opts = diff_opt_parse(&revs->diffopt, argv, argc); if (!opts) -- 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