This is a single patch that adds two new functions to try to hide the reflog implementation details from the callers in checkout.c and reflog.c. It adds new functions to test if a reflog exists and to delete it, thus allowing checkout.c to perform this if-test-then-delete operation without having to know the internal implementation of reflogs (i.e. that they are files that live unde r.git/logs) It also changes checkout.c to use ref_exists when checking for whether a ref exists or not instead of checking if the loose ref file exists or not. Using ref_exists instead both hides the reflog implementation details from checkout.c as well as making the code more robust against future changes. It currently has a hard assumption that the loose ref file must exist at this stage or else it would end up deleting the reflog which is true today, as far as I can tell, but would break if git would change such that we could have a branch checked out without having a loose ref file for that branch. Ronnie Sahlberg (1): refs.c: add new functions reflog_exists and delete_reflog builtin/checkout.c | 8 ++------ builtin/reflog.c | 2 +- refs.c | 20 ++++++++++++++------ refs.h | 6 ++++++ 4 files changed, 23 insertions(+), 13 deletions(-) -- 2.0.0.rc1.351.gd2b7e18.dirty -- 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