remote.c: minor clean-up of match_explicit()
When checking what ref the source refspec matches, we have no business setting the default for the destination, so move that code lower. Also simplify the result from the code block that matches the source side by making it set matched_src only upon unambiguous match. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
163f0ee5ad
commit
3c8b7df1ba
23
remote.c
23
remote.c
@ -430,9 +430,6 @@ static int match_explicit(struct ref *src, struct ref *dst,
|
|||||||
if (rs->pattern)
|
if (rs->pattern)
|
||||||
return errs;
|
return errs;
|
||||||
|
|
||||||
if (dst_value == NULL)
|
|
||||||
dst_value = rs->src;
|
|
||||||
|
|
||||||
matched_src = matched_dst = NULL;
|
matched_src = matched_dst = NULL;
|
||||||
switch (count_refspec_match(rs->src, src, &matched_src)) {
|
switch (count_refspec_match(rs->src, src, &matched_src)) {
|
||||||
case 1:
|
case 1:
|
||||||
@ -445,16 +442,22 @@ static int match_explicit(struct ref *src, struct ref *dst,
|
|||||||
matched_src = try_explicit_object_name(rs->src);
|
matched_src = try_explicit_object_name(rs->src);
|
||||||
if (matched_src)
|
if (matched_src)
|
||||||
break;
|
break;
|
||||||
errs = 1;
|
|
||||||
error("src refspec %s does not match any.",
|
error("src refspec %s does not match any.",
|
||||||
rs->src);
|
rs->src);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
errs = 1;
|
matched_src = NULL;
|
||||||
error("src refspec %s matches more than one.",
|
error("src refspec %s matches more than one.",
|
||||||
rs->src);
|
rs->src);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!matched_src)
|
||||||
|
errs = 1;
|
||||||
|
|
||||||
|
if (dst_value == NULL)
|
||||||
|
dst_value = rs->src;
|
||||||
|
|
||||||
switch (count_refspec_match(dst_value, dst, &matched_dst)) {
|
switch (count_refspec_match(dst_value, dst, &matched_dst)) {
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
@ -466,21 +469,19 @@ static int match_explicit(struct ref *src, struct ref *dst,
|
|||||||
* remote does not have master yet.
|
* remote does not have master yet.
|
||||||
*/
|
*/
|
||||||
matched_dst = make_dst(matched_src->name, dst_tail);
|
matched_dst = make_dst(matched_src->name, dst_tail);
|
||||||
else {
|
else
|
||||||
errs = 1;
|
|
||||||
error("dst refspec %s does not match any "
|
error("dst refspec %s does not match any "
|
||||||
"existing ref on the remote and does "
|
"existing ref on the remote and does "
|
||||||
"not start with refs/.", dst_value);
|
"not start with refs/.", dst_value);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
errs = 1;
|
matched_dst = NULL;
|
||||||
error("dst refspec %s matches more than one.",
|
error("dst refspec %s matches more than one.",
|
||||||
dst_value);
|
dst_value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (errs)
|
if (errs || matched_dst == NULL)
|
||||||
return errs;
|
return 1;
|
||||||
if (matched_dst->peer_ref) {
|
if (matched_dst->peer_ref) {
|
||||||
errs = 1;
|
errs = 1;
|
||||||
error("dst ref %s receives from more than one src.",
|
error("dst ref %s receives from more than one src.",
|
||||||
|
Loading…
Reference in New Issue
Block a user