Skip to content

Commit

Permalink
parse_fetch_refspec(): clarify the codeflow a bit
Browse files Browse the repository at this point in the history
Most parts of the cascaded if/else if/... checked an allowable
condition but some checked forbidden conditions.  This makes adding
new allowable conditions unnecessarily inconvenient.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Feb 7, 2013
1 parent daebaa7 commit def2499
Showing 1 changed file with 12 additions and 17 deletions.
29 changes: 12 additions & 17 deletions remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,7 @@ static struct refspec *parse_refspec_internal(int nr_refspec, const char **refsp

/*
* Before going on, special case ":" (or "+:") as a refspec
* for matching refs.
* for pushing matching refs.
*/
if (!fetch && rhs == lhs && rhs[1] == '\0') {
rs[i].matching = 1;
Expand All @@ -565,26 +565,21 @@ static struct refspec *parse_refspec_internal(int nr_refspec, const char **refsp
flags = REFNAME_ALLOW_ONELEVEL | (is_glob ? REFNAME_REFSPEC_PATTERN : 0);

if (fetch) {
/*
* LHS
* - empty is allowed; it means HEAD.
* - otherwise it must be a valid looking ref.
*/
/* LHS */
if (!*rs[i].src)
; /* empty is ok */
else if (check_refname_format(rs[i].src, flags))
; /* empty is ok; it means "HEAD" */
else if (!check_refname_format(rs[i].src, flags))
; /* valid looking ref is ok */
else
goto invalid;
/*
* RHS
* - missing is ok, and is same as empty.
* - empty is ok; it means not to store.
* - otherwise it must be a valid looking ref.
*/
/* RHS */
if (!rs[i].dst)
; /* ok */
; /* missing is ok; it is the same as empty */
else if (!*rs[i].dst)
; /* ok */
else if (check_refname_format(rs[i].dst, flags))
; /* empty is ok; it means "do not store" */
else if (!check_refname_format(rs[i].dst, flags))
; /* valid looking ref is ok */
else
goto invalid;
} else {
/*
Expand Down

0 comments on commit def2499

Please sign in to comment.