Patch Set 3:

Regarding 'who to get when':  That is the Git data model.  Timestamps are stored as part of an identity.  The identity is (partially) optional.  If you want the time of a commit, you need to also specify from whose perspective you want the time:  the author, or the committer, because they can differ by quite a bit.  Consequently we just expose it through the identity.