This is v2 of the series. Thanks to Jonathan, Stefan, Junio, and Ronnie for their feedback on v1 [1]. I think I have addressed all of the issues that were raised. Changes since v1: * Several improvements to commit messages and comments; added some Reviewed-by comments from the mailing list. * Change the signature of expire_reflog() early in the series to cast off its heritage as an each_ref_fn. * Move the static lock_file object into expire_reflog(), and explain the locking policy better. * Report errors if hold_lock_file_for_update() or fdopen_lock_file() fails. * Fix the capitalization in some error messages. * When "enum expire_reflog_flags" is first introduced, put its definition earlier in the file so that a later patch in the series doesn't have to move it. * Rename reflog_expiry_select_fn to reflog_expiry_should_prune_fn. * Append Stefan's patch 24/24 "refs.c: let fprintf handle the formatting" This branch is also available on GitHub: https://github.com/mhagger/git.git, branch reflog-expire-api-v2 Michael [1] http://thread.gmane.org/gmane.comp.version-control.git/260812 Michael Haggerty (18): expire_reflog(): it's not an each_ref_fn anymore expire_reflog(): rename "ref" parameter to "refname" expire_reflog(): return early if the reference has no reflog expire_reflog(): use a lock_file for rewriting the reflog file Extract function should_expire_reflog_ent() expire_reflog(): extract two policy-related functions expire_reflog(): add a "flags" argument expire_reflog(): move dry_run to flags argument expire_reflog(): move updateref to flags argument Rename expire_reflog_cb to expire_reflog_policy_cb struct expire_reflog_cb: a new callback data type expire_reflog(): pass flags through to expire_reflog_ent() expire_reflog(): move verbose to flags argument expire_reflog(): move rewrite to flags argument Move newlog and last_kept_sha1 to "struct expire_reflog_cb" expire_reflog(): treat the policy callback data as opaque reflog_expire(): new function in the reference API lock_any_ref_for_update(): inline function Ronnie Sahlberg (4): refs.c: make ref_transaction_create a wrapper for ref_transaction_update refs.c: make ref_transaction_delete a wrapper for ref_transaction_update refs.c: add a function to append a reflog entry to a fd refs.c: remove unlock_ref/close_ref/commit_ref from the refs api Stefan Beller (2): refs.c: don't expose the internal struct ref_lock in the header file refs.c: let fprintf handle the formatting builtin/reflog.c | 259 ++++++++++++++++++++++-------------------------------- refs.c | 263 ++++++++++++++++++++++++++++++++++++++----------------- refs.h | 75 ++++++++++------ 3 files changed, 332 insertions(+), 265 deletions(-) -- 2.1.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html