push: require force for refs under refs/tags/
References are allowed to update from one commit-ish to another if the former is an ancestor of the latter. This behavior is oriented to branches which are expected to move with commits. Tag references are expected to be static in a repository, though, thus an update to something under refs/tags/ should be rejected unless the update is forced. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
8c5f6f717d
commit
dbfeddb12e
@ -661,6 +661,11 @@ static void push_update_ref_status(struct strbuf *buf,
|
||||
free(msg);
|
||||
msg = NULL;
|
||||
}
|
||||
else if (!strcmp(msg, "already exists")) {
|
||||
status = REF_STATUS_REJECT_ALREADY_EXISTS;
|
||||
free(msg);
|
||||
msg = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (*ref)
|
||||
@ -720,6 +725,7 @@ static int push_refs_with_push(struct transport *transport,
|
||||
/* Check for statuses set by set_ref_status_for_push() */
|
||||
switch (ref->status) {
|
||||
case REF_STATUS_REJECT_NONFASTFORWARD:
|
||||
case REF_STATUS_REJECT_ALREADY_EXISTS:
|
||||
case REF_STATUS_UPTODATE:
|
||||
continue;
|
||||
default:
|
||||
|
Reference in New Issue
Block a user