rename: don't return early if the target ref exists Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
diff --git a/src/refs.c b/src/refs.c
index 20c1d00..ae745e5 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1050,12 +1050,14 @@ int git_reference_rename_internal(git_reference *ref, const char *new_name, int
if (error < GIT_SUCCESS)
return error;
- /* Ensure we're not going to overwrite an existing reference */
+ /* Ensure we're not going to overwrite an existing reference
+ unless the user has allowed us */
error = git_reference_lookup(&looked_up_ref, ref->owner, new_name);
if (error == GIT_SUCCESS && !force)
return GIT_EEXISTS;
- if (error != GIT_ENOTFOUND)
+ if (error < GIT_SUCCESS &&
+ error != GIT_ENOTFOUND)
return error;