Commit dad4a4d582c55394031f8e78a4994da47fca7540

Carlos Martín Nieto 2011-03-29T10:47:48

rename: don't return early if the target ref exists Signed-off-by: Carlos Martín Nieto <cmn@elego.de>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;