Commit Diff


commit - e8a967e0cafdb6604275a9cbfcce988d4f363ef5
commit + 886097241bdd8b9a2f0ea87f4791a549bb8e00c5
blob - 0420f2eb7bce0a7e9766b05bb32d65d93f222c90
blob + cebadef7f168d056f60bdde3f2eae62abb1e79b6
--- got/got.c
+++ got/got.c
@@ -1414,6 +1414,11 @@ update_ref(struct got_reference *ref, struct got_objec
 
 	if (!replace_tags &&
 	    strncmp(got_ref_get_name(ref), "refs/tags/", 10) == 0) {
+		err = got_ref_resolve(&old_id, repo, ref);
+		if (err)
+			goto done;
+		if (got_object_id_cmp(old_id, new_id) == 0)
+			goto done;
 		if (verbosity >= 0) {
 			printf("Rejecting update of existing tag %s: %s\n",
 			    got_ref_get_name(ref), new_id_str);