aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-06-09 00:14:04 -0700
committerJunio C Hamano <gitster@pobox.com>2007-06-09 11:53:01 -0700
commit3c8b7df1ba6dd2093672afc460fd5de0e755f162 (patch)
tree2c45f71784d191eedb366852e1842349a0d45690
parent163f0ee5ad0a5cb7d862431479c270ae3fef79cf (diff)
downloadgit-3c8b7df1ba6dd2093672afc460fd5de0e755f162.tar.gz
git-3c8b7df1ba6dd2093672afc460fd5de0e755f162.tar.xz
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>
-rw-r--r--remote.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/remote.c b/remote.c
index f469fb34e..30abdbb4d 100644
--- a/remote.c
+++ b/remote.c
@@ -430,9 +430,6 @@ static int match_explicit(struct ref *src, struct ref *dst,
if (rs->pattern)
return errs;
- if (dst_value == NULL)
- dst_value = rs->src;
-
matched_src = matched_dst = NULL;
switch (count_refspec_match(rs->src, src, &matched_src)) {
case 1:
@@ -445,16 +442,22 @@ static int match_explicit(struct ref *src, struct ref *dst,
matched_src = try_explicit_object_name(rs->src);
if (matched_src)
break;
- errs = 1;
error("src refspec %s does not match any.",
rs->src);
break;
default:
- errs = 1;
+ matched_src = NULL;
error("src refspec %s matches more than one.",
rs->src);
break;
}
+
+ if (!matched_src)
+ errs = 1;
+
+ if (dst_value == NULL)
+ dst_value = rs->src;
+
switch (count_refspec_match(dst_value, dst, &matched_dst)) {
case 1:
break;
@@ -466,21 +469,19 @@ static int match_explicit(struct ref *src, struct ref *dst,
* remote does not have master yet.
*/
matched_dst = make_dst(matched_src->name, dst_tail);
- else {
- errs = 1;
+ else
error("dst refspec %s does not match any "
"existing ref on the remote and does "
"not start with refs/.", dst_value);
- }
break;
default:
- errs = 1;
+ matched_dst = NULL;
error("dst refspec %s matches more than one.",
dst_value);
break;
}
- if (errs)
- return errs;
+ if (errs || matched_dst == NULL)
+ return 1;
if (matched_dst->peer_ref) {
errs = 1;
error("dst ref %s receives from more than one src.",