diff options
| -rw-r--r-- | send-pack.c | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/send-pack.c b/send-pack.c index 949cb61aa0..4974825923 100644 --- a/send-pack.c +++ b/send-pack.c @@ -190,10 +190,13 @@ static void advertise_shallow_grafts_buf(struct strbuf *sb)  	for_each_commit_graft(advertise_shallow_grafts_cb, sb);  } -static int ref_update_to_be_sent(const struct ref *ref, const struct send_pack_args *args) +#define CHECK_REF_NO_PUSH -1 +#define CHECK_REF_STATUS_REJECTED -2 +#define CHECK_REF_UPTODATE -3 +static int check_to_send_update(const struct ref *ref, const struct send_pack_args *args)  {  	if (!ref->peer_ref && !args->send_mirror) -		return 0; +		return CHECK_REF_NO_PUSH;  	/* Check for statuses set by set_ref_status_for_push() */  	switch (ref->status) { @@ -203,10 +206,11 @@ static int ref_update_to_be_sent(const struct ref *ref, const struct send_pack_a  	case REF_STATUS_REJECT_NEEDS_FORCE:  	case REF_STATUS_REJECT_STALE:  	case REF_STATUS_REJECT_NODELETE: +		return CHECK_REF_STATUS_REJECTED;  	case REF_STATUS_UPTODATE: -		return 0; +		return CHECK_REF_UPTODATE;  	default: -		return 1; +		return 0;  	}  } @@ -250,7 +254,7 @@ static int generate_push_cert(struct strbuf *req_buf,  	strbuf_addstr(&cert, "\n");  	for (ref = remote_refs; ref; ref = ref->next) { -		if (!ref_update_to_be_sent(ref, args)) +		if (check_to_send_update(ref, args) < 0)  			continue;  		update_seen = 1;  		strbuf_addf(&cert, "%s %s %s\n", @@ -359,7 +363,7 @@ int send_pack(struct send_pack_args *args,  	 * the pack data.  	 */  	for (ref = remote_refs; ref; ref = ref->next) { -		if (!ref_update_to_be_sent(ref, args)) +		if (check_to_send_update(ref, args) < 0)  			continue;  		if (!ref->deletion) @@ -380,7 +384,7 @@ int send_pack(struct send_pack_args *args,  		if (args->dry_run || args->push_cert)  			continue; -		if (!ref_update_to_be_sent(ref, args)) +		if (check_to_send_update(ref, args) < 0)  			continue;  		old_hex = sha1_to_hex(ref->old_sha1);  | 
