[RFC v2] reflog: show committer date in verbose mode
- From
Jiang Xin <worldhello.net@gmail.com>
- Date
- Jun 3, 2013, 01:58 UTC
- Message-ID
- <517a09251fbbc81073fbd53f04a3f4b58cb8b3f7.1370224175.git.worldhello.net@gmail.com>
By default, reflog won't show committer date and for some cases won't show commit log either. It will be helpful to show them all by passing a more complicated pretty formatter to `git reflog` like this:
$ git reflog show \
--pretty="%Cred%h%Creset %gd: %gs%n >> %Cblue%ci (%cr)%Creset: %s"It will be nice to add this pretty formatter automatically when run `git reflog` in verbose mode. And in order to support verbose mode, add new flag "verbose" in struct rev_info.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com> ---
For example:
$ git reflog show -3 master 727a4 master@{0}: merge kernel/master: Fast-forward edca41 master@{1}: merge kernel/master: Fast-forward 5e49f master@{2}: merge kernel/master: Fast-forward
$ git reflog show -3 -v master
727a4 master@{0}: merge kernel/master: Fast-forward
Wed May 29 15:21:47 2013 -0700 (by Junio C Hamano, at 4 days ago)
edca41 master@{1}: merge kernel/master: Fast-forward
Fri May 24 11:34:46 2013 -0700 (by Junio C Hamano, at 9 days ago)
5e49f master@{2}: merge kernel/master: Fast-forward
Tue May 21 09:33:24 2013 -0700 (by Junio C Hamano, at 12 days ago)$ git reflog show -3 -v -v master
727a4 master@{0}: merge kernel/master: Fast-forward
Wed May 29 15:21:47 2013 -0700 (by Junio C Hamano, at 4 days ago)
Sync with maint
edca41 master@{1}: merge kernel/master: Fast-forward
Fri May 24 11:34:46 2013 -0700 (by Junio C Hamano, at 9 days ago)
Git 1.8.3
5e49f master@{2}: merge kernel/master: Fast-forward
Tue May 21 09:33:24 2013 -0700 (by Junio C Hamano, at 12 days ago)
remote-hg: fix order of configuration commentsbuiltin/log.c | 15 +++++++++++++++ revision.c | 1 + revision.h | 1 + 3 files changed, 17 insertions(+)
diff --git a/builtin/log.c b/builtin/log.c index dd3f10..d611b 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -615,6 +615,21 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix) rev.use_terminator = 1; rev.always_show_header = 1; cmd_log_init_finish(argc, argv, prefix, &rev, &opt); + if (rev.verbose && !rev.pretty_given) { + struct strbuf formatter = STRBUF_INIT; + rev.verbose_header = 1; + rev.pretty_given = 1; + strbuf_addf(&formatter, "%s%%h%s %%gd: %%gs%%n", + diff_get_color_opt(&rev.diffopt, DIFF_COMMIT), + diff_get_color_opt(&rev.diffopt, DIFF_RESET)); + strbuf_addf(&formatter, " %s%%cd%s (by %%cn, at %%cr)", + diff_get_color_opt(&rev.diffopt, DIFF_METAINFO), + diff_get_color_opt(&rev.diffopt, DIFF_RESET)); + if (rev.verbose > 1) + strbuf_addstr(&formatter, "%n %s"); + get_commit_format(formatter.buf, &rev); + strbuf_release(&formatter); + } return cmd_log_walk(&rev); } diff --git a/revision.c b/revision.c index 518cd..f7483 100644 --- a/revision.c +++ b/revision.c @@ -1514,6 +1514,7 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg revs->combine_merges = 1; } else if (!strcmp(arg, "-v")) { revs->verbose_header = 1; + revs->verbose++; } else if (!strcmp(arg, "--pretty")) { revs->verbose_header = 1; revs->pretty_given = 1; diff --git a/revision.h b/revision.h index a313a..dc4d8 100644 --- a/revision.h +++ b/revision.h @@ -119,6 +119,7 @@ struct rev_info { show_notes_given:1, show_signature:1, pretty_given:1, + verbose:3, abbrev_commit:1, abbrev_commit_given:1, use_terminator:1,
-- 1.8.3.490.gfd67a58.dirty