diff options
author | Junio C Hamano <junkio@cox.net> | 2007-01-20 00:51:41 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-20 21:32:31 -0800 |
commit | 4d12a471230625da73be464f5a20b7480a6b8ecb (patch) | |
tree | 1a9a11d53059bdae1d114b5ca1b2747a767b06a1 | |
parent | reflog-walk: build fixes (diff) | |
download | tgif-4d12a471230625da73be464f5a20b7480a6b8ecb.tar.xz |
Fix --walk-reflog with --pretty=oneline
Now, "git log --abbrev-commit --pretty=o --walk-reflogs HEAD" is
reasonably pleasant to use.
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | Documentation/git-rev-list.txt | 4 | ||||
-rw-r--r-- | log-tree.c | 3 | ||||
-rw-r--r-- | reflog-walk.c | 33 | ||||
-rw-r--r-- | reflog-walk.h | 2 |
4 files changed, 28 insertions, 14 deletions
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt index fcc540bd3e..a996f6cb1e 100644 --- a/Documentation/git-rev-list.txt +++ b/Documentation/git-rev-list.txt @@ -27,6 +27,7 @@ SYNOPSIS [ \--pretty | \--header ] [ \--bisect ] [ \--merge ] + [ \--walk-reflogs ] <commit>... [ \-- <paths>... ] DESCRIPTION @@ -203,7 +204,8 @@ this causes the output to have two extra lines of information taken from the reflog. By default, 'commit@{Nth}' notation is used in the output. When the starting commit is specified as 'commit@{now}', output also uses 'commit@{timestamp}' notation -instead. +instead. Under '\--pretty=oneline', the commit message is +prefixed with this information on the same line. --merge:: diff --git a/log-tree.c b/log-tree.c index f043ad3723..c0fa096327 100644 --- a/log-tree.c +++ b/log-tree.c @@ -225,7 +225,8 @@ void show_log(struct rev_info *opt, const char *sep) diff_get_color(opt->diffopt.color_diff, DIFF_RESET)); putchar(opt->commit_format == CMIT_FMT_ONELINE ? ' ' : '\n'); if (opt->reflog_info) - show_reflog_message(opt->reflog_info); + show_reflog_message(opt->reflog_info, + opt->commit_format == CMIT_FMT_ONELINE);; } /* diff --git a/reflog-walk.c b/reflog-walk.c index 989a7aee95..8ccbe97760 100644 --- a/reflog-walk.c +++ b/reflog-walk.c @@ -219,21 +219,32 @@ void fake_reflog_parent(struct reflog_walk_info *info, struct commit *commit) commit->object.flags &= ~(ADDED | SEEN | SHOWN); } -void show_reflog_message(struct reflog_walk_info* info) +void show_reflog_message(struct reflog_walk_info* info, int oneline) { if (info && info->last_commit_reflog) { struct commit_reflog *commit_reflog = info->last_commit_reflog; struct reflog_info *info; - printf("Reflog: %s@{", commit_reflog->reflogs->ref); - info = &commit_reflog->reflogs->items[commit_reflog->recno + 1]; - if (commit_reflog->flag) - printf("%s", show_rfc2822_date(info->timestamp, - info->tz)); - else - printf("%d", commit_reflog->reflogs->nr - - 2 - commit_reflog->recno); - printf("} (%s)\nReflog message: %s", - info->email, info->message); + info = &commit_reflog->reflogs->items[commit_reflog->recno+1]; + if (oneline) { + printf("%s@{", commit_reflog->reflogs->ref); + if (commit_reflog->flag) + printf("%s", show_date(info->timestamp, 0, 1)); + else + printf("%d", commit_reflog->reflogs->nr + - 2 - commit_reflog->recno); + printf("}: "); + } + else { + printf("Reflog: %s@{", commit_reflog->reflogs->ref); + if (commit_reflog->flag) + printf("%s", show_rfc2822_date(info->timestamp, + info->tz)); + else + printf("%d", commit_reflog->reflogs->nr + - 2 - commit_reflog->recno); + printf("} (%s)\nReflog message: %s", + info->email, info->message); + } } } diff --git a/reflog-walk.h b/reflog-walk.h index 787996b377..e63d86778b 100644 --- a/reflog-walk.h +++ b/reflog-walk.h @@ -6,6 +6,6 @@ extern void add_reflog_for_walk(struct reflog_walk_info *info, struct commit *commit, const char *name); extern void fake_reflog_parent(struct reflog_walk_info *info, struct commit *commit); -extern void show_reflog_message(struct reflog_walk_info* info); +extern void show_reflog_message(struct reflog_walk_info *info, int); #endif |