refs: deploy git_reference_has_log()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
diff --git a/include/git2/reflog.h b/include/git2/reflog.h
index f490e29..8acba34 100644
--- a/include/git2/reflog.h
+++ b/include/git2/reflog.h
@@ -53,6 +53,8 @@ GIT_EXTERN(int) git_reflog_write(git_reference *ref, const git_oid *oid_old, con
/**
* Rename the reflog for the given reference
*
+ * The reflog to be renamed is expected to already exist
+ *
* @param ref the reference
* @param new_name the new name of the reference
* @return 0 or an error code
diff --git a/src/refs.c b/src/refs.c
index 2aba83e..fbbb866 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1404,18 +1404,12 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force)
}
/*
- * Rename the reflog file.
+ * Rename the reflog file, if it exists.
*/
- git_buf_clear(&aux_path);
- if (git_buf_join_n(&aux_path, '/', 3, ref->owner->path_repository, GIT_REFLOG_DIR, ref->name) < 0)
+ if ((git_reference_has_log(ref)) && (git_reflog_rename(ref, new_name) < 0))
goto cleanup;
- if (git_path_exists(aux_path.ptr) == true) {
- if (git_reflog_rename(ref, new_name) < 0)
- goto cleanup;
- } else {
- giterr_clear();
- }
+ giterr_clear();
/*
* Change the name of the reference given by the user.