remote: make match_refs() not short-circuit
match_refs() returns non-zero if there is an error in match_explicit_refs(), without handling any remaining pattern ref specs. Its existing callers exit upon receiving non-zero, so a partial result is of no consequence to them; however a new caller, builtin-remote, is interested in the complete result even if there are errors in match_explicit_refs(). Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
cdf690e53b
commit
5f48cb95aa
6
remote.c
6
remote.c
@ -1052,6 +1052,7 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
|
|||||||
struct refspec *rs;
|
struct refspec *rs;
|
||||||
int send_all = flags & MATCH_REFS_ALL;
|
int send_all = flags & MATCH_REFS_ALL;
|
||||||
int send_mirror = flags & MATCH_REFS_MIRROR;
|
int send_mirror = flags & MATCH_REFS_MIRROR;
|
||||||
|
int errs;
|
||||||
static const char *default_refspec[] = { ":", 0 };
|
static const char *default_refspec[] = { ":", 0 };
|
||||||
|
|
||||||
if (!nr_refspec) {
|
if (!nr_refspec) {
|
||||||
@ -1059,8 +1060,7 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
|
|||||||
refspec = default_refspec;
|
refspec = default_refspec;
|
||||||
}
|
}
|
||||||
rs = parse_push_refspec(nr_refspec, (const char **) refspec);
|
rs = parse_push_refspec(nr_refspec, (const char **) refspec);
|
||||||
if (match_explicit_refs(src, dst, dst_tail, rs, nr_refspec))
|
errs = match_explicit_refs(src, dst, dst_tail, rs, nr_refspec);
|
||||||
return -1;
|
|
||||||
|
|
||||||
/* pick the remainder */
|
/* pick the remainder */
|
||||||
for ( ; src; src = src->next) {
|
for ( ; src; src = src->next) {
|
||||||
@ -1116,6 +1116,8 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
|
|||||||
free_name:
|
free_name:
|
||||||
free(dst_name);
|
free(dst_name);
|
||||||
}
|
}
|
||||||
|
if (errs)
|
||||||
|
return -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user