send-pack/receive-pack: allow errors to be reported back to pusher.

This updates the protocol between git-send-pack/git-receive-pack
in a backward compatible way to allow failures at the receiving
end to be propagated back to the sender.  Most notably, versions
of git-push before this could not notice if the update hook on
the receiving end refused to update the ref for its own policy
reasons.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2005-12-25 23:18:37 -08:00
parent 9b88fcef7d
commit cfee10a773
3 changed files with 148 additions and 39 deletions

View File

@ -34,10 +34,6 @@ struct ref **get_remote_heads(int in, struct ref **list,
die("protocol error: expected sha/ref, got '%s'", buffer);
name = buffer + 41;
if (ignore_funny && 45 < len && !memcmp(name, "refs/", 5) &&
check_ref_format(name + 5))
continue;
name_len = strlen(name);
if (len != name_len + 41) {
if (server_capabilities)
@ -45,6 +41,10 @@ struct ref **get_remote_heads(int in, struct ref **list,
server_capabilities = strdup(name + name_len + 1);
}
if (ignore_funny && 45 < len && !memcmp(name, "refs/", 5) &&
check_ref_format(name + 5))
continue;
if (nr_match && !path_match(name, nr_match, match))
continue;
ref = xcalloc(1, sizeof(*ref) + len - 40);