diff --git a/commit.h b/commit.h
index e5332ef..e4222b0 100644
--- a/commit.h
+++ b/commit.h
@@ -59,6 +59,8 @@ enum cmit_fmt {
CMIT_FMT_ONELINE,
CMIT_FMT_EMAIL,
CMIT_FMT_USERFORMAT,
+ CMIT_FMT_COMMITTER_AND_DATE,
+ CMIT_FMT_AUTHOR_AND_DATE,
CMIT_FMT_UNSPECIFIED,
};diff --git a/log-tree.c b/log-tree.c
index 0fdf159..7b399b8 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -160,6 +160,20 @@ static void append_signoff(struct strbuf *sb, const char *signoff)
strbuf_addch(sb, '\n');
}
+static void append_metadata(struct strbuf *sb,
+ struct commit *commit,
+ const struct pretty_print_context *ctx)
+{
+
+ strbuf_addch(sb, '\n');
+ strbuf_addstr(sb, " Author: ");
+ pretty_print_commit(CMIT_FMT_AUTHOR_AND_DATE, commit, sb, ctx);
+
+ strbuf_addch(sb, '\n');
+ strbuf_addstr(sb, " Committer: ");
+ pretty_print_commit(CMIT_FMT_COMMITTER_AND_DATE, commit, sb, ctx);
+}
+
static unsigned int digits_in_number(unsigned int number)
{
unsigned int i = 10, result = 1;@@ -414,6 +428,7 @@ void show_log(struct rev_info *opt)
ctx.reflog_info = opt->reflog_info;
pretty_print_commit(opt->commit_format, commit, &msgbuf, &ctx);
+ append_metadata(&msgbuf, commit, &ctx);
if (opt->add_signoff)
append_signoff(&msgbuf, opt->add_signoff);
if (opt->show_log_size) {diff --git a/pretty.c b/pretty.c
index 8f5bd1a..2458509 100644
--- a/pretty.c
+++ b/pretty.c
@@ -1028,16 +1028,26 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit,
int need_8bit_cte = context->need_8bit_cte;
if (fmt == CMIT_FMT_USERFORMAT) {
- format_commit_message(commit, user_format, sb, context);
+ format_commit_message(commit, user_format, sb, context);
return;
}
+ if (fmt == CMIT_FMT_COMMITTER_AND_DATE) {
+ format_commit_message(commit, "%cn <%ce> %cd", sb, context);
+ return;
+ }
+ if (fmt == CMIT_FMT_AUTHOR_AND_DATE) {
+ format_commit_message(commit, "%an <%ae> %ad", sb, context);
+ return;
+ }
reencoded = reencode_commit_message(commit, &encoding);
if (reencoded) {
msg = reencoded;
}
- if (fmt == CMIT_FMT_ONELINE || fmt == CMIT_FMT_EMAIL)
+
+ if (fmt == CMIT_FMT_ONELINE || fmt == CMIT_FMT_EMAIL ||
+ fmt == CMIT_FMT_COMMITTER_AND_DATE || CMIT_FMT_AUTHOR_AND_DATE)
indent = 0;
/*@@ -1078,12 +1088,14 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit,
context->after_subject, encoding, need_8bit_cte);
beginning_of_body = sb->len;
- if (fmt != CMIT_FMT_ONELINE)
+ if (fmt != CMIT_FMT_ONELINE &&
+ fmt != CMIT_FMT_COMMITTER_AND_DATE && fmt != CMIT_FMT_AUTHOR_AND_DATE)
pp_remainder(fmt, &msg, sb, indent);
strbuf_rtrim(sb);
/* Make sure there is an EOLN for the non-oneline case */
- if (fmt != CMIT_FMT_ONELINE)
+ if (fmt != CMIT_FMT_ONELINE &&
+ fmt != CMIT_FMT_COMMITTER_AND_DATE && fmt != CMIT_FMT_AUTHOR_AND_DATE)
strbuf_addch(sb, '\n');
/*
@@ -1094,7 +1106,8 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit,
if (fmt == CMIT_FMT_EMAIL && sb->len <= beginning_of_body)
strbuf_addch(sb, '\n');
- if (fmt != CMIT_FMT_ONELINE)
+ if (fmt != CMIT_FMT_ONELINE &&
+ fmt != CMIT_FMT_COMMITTER_AND_DATE && fmt != CMIT_FMT_AUTHOR_AND_DATE)
get_commit_notes(commit, sb, encoding,
NOTES_SHOW_HEADER | NOTES_INDENT);
--
1.6.4.4