The following 5 [RFC] patches from me are all related to logging changes made to a ref. These patches contain the same basic idea as the two patches I floated earlier this week. Log files reside in .git/logs<ref> and logging is enabled either by creating the log file or by setting 'core.logAllRefUpdates' to true.
Summary is:
* [RFC 1/5] Remove unnecessary local in get_ref_sha1.
A minor code cleanup.
* [RFC 2/5] Improve abstraction of ref lock/write.
A major reorg of the write_ref_sha1 APIs. This reorg allows all internal code to use the same logic for updating any ref, which makes it much easier to hook logging in. * [RFC 3/5] Convert update-ref to use ref_lock API.
Modify update-ref to use the reorg'd write_ref_sha1 API.
* [RFC 4/5] Log ref updates to logs/refs/<ref>
Add logging of refs. This is the pretty much my latest logging patch but cleaned up and built on the above.
* [RFC 5/5] Support 'master@2 hours ago' syntax
Extend the SHA1 syntax to search the log for the SHA1 which was valid at the given point in time.
I still need to fix the receive-pack code to log ref changes prior to running the update hook. I'll probably look at that later this week. I also need to edit the ~20 sites which call 'git-update-ref' to make use of the new "-m <reason>" flag.
-- Shawn.