diff options
Diffstat (limited to 'builtin/fetch.c')
| -rw-r--r-- | builtin/fetch.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/builtin/fetch.c b/builtin/fetch.c index bd7a10164f..7b41a7e388 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -405,6 +405,8 @@ static int iterate_ref_map(void *cb_data, unsigned char sha1[20])  	struct ref **rm = cb_data;  	struct ref *ref = *rm; +	while (ref && ref->status == REF_STATUS_REJECT_SHALLOW) +		ref = ref->next;  	if (!ref)  		return -1; /* end of the list */  	*rm = ref->next; @@ -451,6 +453,13 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,  			struct ref *ref = NULL;  			const char *merge_status_marker = ""; +			if (rm->status == REF_STATUS_REJECT_SHALLOW) { +				if (want_status == FETCH_HEAD_MERGE) +					warning(_("reject %s because shallow roots are not allowed to be updated"), +						rm->peer_ref ? rm->peer_ref->name : rm->name); +				continue; +			} +  			commit = lookup_commit_reference_gently(rm->old_sha1, 1);  			if (!commit)  				rm->fetch_head_status = FETCH_HEAD_NOT_FOR_MERGE;  | 
