Subject: [RFC PATCH 0/4] git log -g --pretty=format: learns about reflog

From: Deskin Miller <[email-masked]>
Date: Wed, 25 Feb 2009 23:44:03 -0500

This series exposes reflog information to the pretty-printer when using
--pretty=format: to git log -g and git rev-list --walk-reflogs, through
similar format codes as are used currently.

Thomas Rast mentioned almost as an aside that this would be useful in 

http://article.gmane.org/gmane.comp.version-control.git/108009

and I've wanted to hack this series for a long time, even before that
comment, but my first attempts broke stash horribly.  Hopefully this
version fares better.

I'm a little leery of using commit->util to carry the reflog info, but I
didn't see a much better way, without altering the signature of
pretty_print_commit to take an optional reflog parameter.  The code
checks that util is not being used before assigning the reflog to it, so
it shouldn't break any existing uses of util of which I am unaware.  I
confess to having not done an appropriate amount of research into
whether my use of util will actually break anything.  For what it's
worth this patch series doesn't break any existing tests.

One of the things I was hoping to do in the unsuccessful version was to
allow the revision walker to use the reflog, but let the commit
structures retain their real parents.  That way, one could still obtain
meaningful information from %p even when walking reflogs, which would be
distinct from %rp.  It is primarily with this in mind that %rp exists at
all.  However, as I mentioned, my attempt to change the revision walker
broke existing tests, and I didn't have the wherewithal to discover how
to correct it.  It's possible with the current series that one could
simply try to re-parse the commit, but I haven't investigated the
feasibility of doing that.

I strongly suspect that there's a cleaner way to do this, but don't
really know what that would be, so any comments regarding alternate
approaches would be very appreciated.  Also, I'm more than happy to
write testcases and documentation once there is some agreement about
what the preferred implementation is.

Deskin Miller (4):
  Expose reflog_info struct in header
  Add attach_reflog_info
  Attach reflog to commit prior to pretty-printing
  Teach pretty-printer new reflog format codes

 list-objects.c |    3 +++
 log-tree.c     |    3 +++
 pretty.c       |   38 ++++++++++++++++++++++++++++++++++++++
 reflog-walk.c  |   26 +++++++++++++++++++-------
 reflog-walk.h  |   12 ++++++++++++
 5 files changed, 75 insertions(+), 7 deletions(-)