[RFC PATCH 2/4] Add attach_reflog_info
From: Deskin Miller <hidden>
Date: 2016-06-15 22:46:17
Subsystem:
the rest · Maintainer:
Linus Torvalds
To enable pretty-printing to print reflog information, the commit object needs to carry its associated reflog entry. This function uses the util field to point to the appropriate struct reflog_info. Signed-off-by: Deskin Miller <redacted> --- reflog-walk.c | 18 ++++++++++++++++++ reflog-walk.h | 2 ++ 2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/reflog-walk.c b/reflog-walk.c
index dd172ae..3e8457f 100644
--- a/reflog-walk.c
+++ b/reflog-walk.c@@ -235,6 +235,24 @@ void fake_reflog_parent(struct reflog_walk_info *info, struct commit *commit) commit->object.flags &= ~(ADDED | SEEN | SHOWN); } +void attach_reflog_info(struct reflog_walk_info *info, struct commit *commit) +{ + if (info && info->last_commit_reflog) { + struct commit_reflog *commit_reflog = info->last_commit_reflog; + + if (commit->util && + (((void *)(commit_reflog->reflogs->items + + commit_reflog->reflogs->nr) < commit->util) + || ((void *)(commit_reflog->reflogs->items + + commit_reflog->recno + 1) > commit->util))) { + die("commit->util being used, cannot attach reflog"); + } + + commit->util = &commit_reflog->reflogs->items + [commit_reflog->recno+1]; + } +} + void show_reflog_message(struct reflog_walk_info* info, int oneline, int relative_date) {
diff --git a/reflog-walk.h b/reflog-walk.h
index 7b00993..44f97e1 100644
--- a/reflog-walk.h
+++ b/reflog-walk.h@@ -16,6 +16,8 @@ extern int 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 attach_reflog_info(struct reflog_walk_info *info, + struct commit *commit); extern void show_reflog_message(struct reflog_walk_info *info, int, int); #endif
--
1.6.2.rc0.90.g0753