Junio C Hamano <gitster@xxxxxxxxx> writes: > Max Horn <max@xxxxxxxxx> writes: > >> But with next, I get this: >> >> ! [rejected] master -> master (already exists) >> error: failed to push some refs to '/Users/mhorn/Proje...o_orig' >> hint: Updates were rejected because the destination reference already exists >> hint: in the remote. >> >> This looks like a regression to me. > > It is an outright bug. The new helper function is_forwrdable() is > bogus to assume that both original and updated objects can be > locally inspected, but you do not necessarily have the original > locally. The way the caller uses the result of this function is equally questionable. If this function says "we do not want to let this push go through", it translates that unconditionally into "we blocked it because the destination already exists". It is fine when pushing into "refs/tags/" hierarchy. It is *NOT* OK if the type check does not satisfy this function. In that case, we do not actually see the existence of the destination as a problem, but it is reported as such. We are blocking because we do not like the type of the new object or the type of the old object. If the destination points at a commit, the push can succeed if the user changes what object to push, so saying "you cannot push because the destination already exists" is just wrong in such a case. -- 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