Commits

Anonymous committed 4d12a47

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>

Comments (0)

Files changed (4)

Documentation/git-rev-list.txt

 	     [ \--pretty | \--header ]
 	     [ \--bisect ]
 	     [ \--merge ]
+	     [ \--walk-reflogs ]
 	     <commit>... [ \-- <paths>... ]
 
 DESCRIPTION
 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_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);;
 	}
 
 	/*
 	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);
+		}
 	}
 }
 		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