refspec: treat 'fetch' as a Boolean value
Since 6d4c057859
(refspec: introduce struct refspec, 2018-05-16), we
have macros called REFSPEC_FETCH and REFSPEC_PUSH. This confusingly
suggests that we might introduce other modes in the future, which, while
possible, is highly unlikely.
But these values are treated as a Boolean, and stored in a struct field
called 'fetch'. So the following:
if (refspec->fetch == REFSPEC_FETCH) { ... }
, and
if (refspec->fetch) { ... }
are equivalent. Let's avoid renaming the Boolean values "true" and
"false" here and remove the two REFSPEC_ macros mentioned above.
Since this value is truly a Boolean and will only ever take on a value
of 0 or 1, we can declare it as a single bit unsigned field. In
practice this won't shrink the size of 'struct refspec', but it more
clearly indicates the intent.
Note that this introduces some awkwardness like:
refspec_item_init_or_die(&spec, refspec, 1);
, where it's unclear what the final "1" does. This will be addressed in
the following commits.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
parent
f543202a16
commit
3809633d0a
|
@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)
|
|||
const char *spec_src;
|
||||
const char *merge_branch;
|
||||
|
||||
refspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);
|
||||
refspec_item_init_or_die(&spec, refspec, 1);
|
||||
spec_src = spec.src;
|
||||
if (!*spec_src || !strcmp(spec_src, "HEAD"))
|
||||
spec_src = "HEAD";
|
||||
|
|
|
@ -233,7 +233,7 @@ void refspec_clear(struct refspec *rs)
|
|||
int valid_fetch_refspec(const char *fetch_refspec_str)
|
||||
{
|
||||
struct refspec_item refspec;
|
||||
int ret = refspec_item_init(&refspec, fetch_refspec_str, REFSPEC_FETCH);
|
||||
int ret = refspec_item_init(&refspec, fetch_refspec_str, 1);
|
||||
refspec_item_clear(&refspec);
|
||||
return ret;
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ void refspec_ref_prefixes(const struct refspec *rs,
|
|||
if (item->negative)
|
||||
continue;
|
||||
|
||||
if (rs->fetch == REFSPEC_FETCH) {
|
||||
if (rs->fetch) {
|
||||
if (item->exact_sha1)
|
||||
continue;
|
||||
prefix = item->src;
|
||||
|
|
|
@ -32,11 +32,8 @@ struct refspec_item {
|
|||
|
||||
struct string_list;
|
||||
|
||||
#define REFSPEC_FETCH 1
|
||||
#define REFSPEC_PUSH 0
|
||||
|
||||
#define REFSPEC_INIT_FETCH { .fetch = REFSPEC_FETCH }
|
||||
#define REFSPEC_INIT_PUSH { .fetch = REFSPEC_PUSH }
|
||||
#define REFSPEC_INIT_FETCH { .fetch = 1 }
|
||||
#define REFSPEC_INIT_PUSH { .fetch = 0 }
|
||||
|
||||
/**
|
||||
* An array of strings can be parsed into a struct refspec using
|
||||
|
@ -47,7 +44,7 @@ struct refspec {
|
|||
int alloc;
|
||||
int nr;
|
||||
|
||||
int fetch;
|
||||
unsigned fetch : 1;
|
||||
};
|
||||
|
||||
int refspec_item_init(struct refspec_item *item, const char *refspec,
|
||||
|
|
4
remote.c
4
remote.c
|
@ -143,8 +143,8 @@ static struct remote *make_remote(struct remote_state *remote_state,
|
|||
ret->prune = -1; /* unspecified */
|
||||
ret->prune_tags = -1; /* unspecified */
|
||||
ret->name = xstrndup(name, len);
|
||||
refspec_init(&ret->push, REFSPEC_PUSH);
|
||||
refspec_init(&ret->fetch, REFSPEC_FETCH);
|
||||
refspec_init(&ret->push, 0);
|
||||
refspec_init(&ret->fetch, 1);
|
||||
string_list_init_dup(&ret->server_options);
|
||||
|
||||
ALLOC_GROW(remote_state->remotes, remote_state->remotes_nr + 1,
|
||||
|
|
|
@ -162,7 +162,7 @@ static struct child_process *get_helper(struct transport *transport)
|
|||
|
||||
data->helper = helper;
|
||||
data->no_disconnect_req = 0;
|
||||
refspec_init(&data->rs, REFSPEC_FETCH);
|
||||
refspec_init(&data->rs, 1);
|
||||
|
||||
/*
|
||||
* Open the output as FILE* so strbuf_getline_*() family of
|
||||
|
|
Loading…
Reference in New Issue