summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2007-01-20 00:51:41 -0800
committerLibravatar Junio C Hamano <junkio@cox.net>2007-01-20 21:32:31 -0800
commit4d12a471230625da73be464f5a20b7480a6b8ecb (patch)
tree1a9a11d53059bdae1d114b5ca1b2747a767b06a1
parentreflog-walk: build fixes (diff)
downloadtgif-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.txt4
-rw-r--r--log-tree.c3
-rw-r--r--reflog-walk.c33
-rw-r--r--reflog-walk.h2
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