Re: [RFC] reflog: show committer date in verbose mode

2013-05-30 Thread Jiang Xin
2013/5/31 Jiang Xin :
> 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"
>

For example:

$ git reflog show master
edca41 master@{0}: merge kernel/master: Fast-forward
5e49f master@{1}: merge kernel/master: Fast-forward
de3a5 master@{2}: merge kernel/master: Fast-forward
0c2b1 master@{3}: merge kernel/master: Fast-forward
b387c master@{4}: merge kernel/master: Fast-forward
9b795 master@{5}: merge kernel/master: Fast-forward
4dcdc master@{6}: merge jx/zh_CN: Fast-forward
a09ab0 master@{7}: merge de-ralfth/master: Fast-forward
674c5

$ git reflog show -v -v master
edca41 master@{0}: merge kernel/master: Fast-forward
>> Fri, 24 May 2013 11:34:46 -0700 (6 days ago), by Junio C
Hamano: Git 1.8.3
5e49f master@{1}: merge kernel/master: Fast-forward
>> Tue, 21 May 2013 09:33:24 -0700 (9 days ago), by Felipe
Contreras: remote-hg: fix order of configuration comments
de3a5 master@{2}: merge kernel/master: Fast-forward
>> Fri, 17 May 2013 12:19:20 -0700 (13 days ago), by Junio C
Hamano: Git 1.8.3-rc3
0c2b1 master@{3}: merge kernel/master: Fast-forward
>> Wed, 15 May 2013 14:58:56 -0700 (2 weeks ago), by Junio C
Hamano: Merge branch 'fc/remote-hg' (early part)
b387c master@{4}: merge kernel/master: Fast-forward
>> Thu, 9 May 2013 13:32:54 -0700 (3 weeks ago), by Junio C
Hamano: Sync with v1.8.2.3
9b795 master@{5}: merge kernel/master: Fast-forward
>> Tue, 7 May 2013 22:50:05 -0700 (3 weeks ago), by Junio C
Hamano: Update draft release notes for 1.8.3
4dcdc master@{6}: merge jx/zh_CN: Fast-forward
>> Wed, 8 May 2013 08:13:32 +0800 (3 weeks ago), by Jiang Xin:
l10n: zh_CN.po: translate 44 messages (2080t0f0u)
a09ab0 master@{7}: merge de-ralfth/master: Fast-forward
>> Tue, 7 May 2013 19:28:19 +0200 (3 weeks ago), by Ralf Thielow:
l10n: de.po: translate 44 new messages
674c5 :
>> Wed, 1 May 2013 19:49:18 +0800 (4 weeks ago), by Jiang Xin:
Merge remote-tracking branch 'vi-vnwildman/master'


-- 
蒋鑫

北京群英汇信息技术有限公司
邮件: worldhello@gmail.com
网址: http://www.ossxp.com/
博客: http://www.worldhello.net/
微博: http://weibo.com/gotgit/
电话: 18601196889
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC] reflog: show committer date in verbose mode

2013-05-30 Thread Jiang Xin
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. Also add new flag "verbose" to rev_info.

Signed-off-by: Jiang Xin 
---
 builtin/log.c | 31 +++
 revision.c|  1 +
 revision.h|  1 +
 3 files changed, 33 insertions(+)

diff --git a/builtin/log.c b/builtin/log.c
index dd3f10..fd213 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -615,6 +615,37 @@ 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));
+   switch (rev.verbose) {
+   case 1:
+   strbuf_addf(&formatter, ">> %s%%ci%s (%s%%cr%s)",
+   diff_get_color_opt(&rev.diffopt, 
DIFF_METAINFO),
+   diff_get_color_opt(&rev.diffopt, 
DIFF_RESET),
+   diff_get_color_opt(&rev.diffopt, 
DIFF_METAINFO),
+   diff_get_color_opt(&rev.diffopt, 
DIFF_RESET));
+   strbuf_addstr(&formatter, ": %s");
+   break;
+   default:
+   strbuf_addf(&formatter, ">> %s%%cD%s (%s%%cr%s)",
+   diff_get_color_opt(&rev.diffopt, 
DIFF_METAINFO),
+   diff_get_color_opt(&rev.diffopt, 
DIFF_RESET),
+   diff_get_color_opt(&rev.diffopt, 
DIFF_METAINFO),
+   diff_get_color_opt(&rev.diffopt, 
DIFF_RESET));
+   strbuf_addf(&formatter, ", by %s%%an%s",
+   diff_get_color_opt(&rev.diffopt, 
DIFF_METAINFO),
+   diff_get_color_opt(&rev.diffopt, 
DIFF_RESET));
+   strbuf_addstr(&formatter, ": %s");
+   break;
+   }
+   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..032ec 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:4,
abbrev_commit:1,
abbrev_commit_given:1,
use_terminator:1,
-- 
1.8.3.466.g52d8e0f

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html