Merge branch 'tb/refspec-fetch-cleanup'
Code clean-up. * tb/refspec-fetch-cleanup: refspec: replace `refspec_item_init()` with fetch/push variants refspec: remove refspec_item_init_or_die() refspec: replace `refspec_init()` with fetch/push variants refspec: treat 'fetch' as a Boolean value
This commit is contained in:
@@ -586,7 +586,7 @@ static struct ref *get_ref_map(struct remote *remote,
|
|||||||
struct refspec_item tag_refspec;
|
struct refspec_item tag_refspec;
|
||||||
|
|
||||||
/* also fetch all tags */
|
/* also fetch all tags */
|
||||||
refspec_item_init(&tag_refspec, TAG_REFSPEC, 0);
|
refspec_item_init_push(&tag_refspec, TAG_REFSPEC);
|
||||||
get_fetch_map(remote_refs, &tag_refspec, &tail, 0);
|
get_fetch_map(remote_refs, &tag_refspec, &tail, 0);
|
||||||
refspec_item_clear(&tag_refspec);
|
refspec_item_clear(&tag_refspec);
|
||||||
} else if (tags == TAGS_DEFAULT && *autotags) {
|
} else if (tags == TAGS_DEFAULT && *autotags) {
|
||||||
|
|||||||
@@ -738,7 +738,8 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)
|
|||||||
const char *spec_src;
|
const char *spec_src;
|
||||||
const char *merge_branch;
|
const char *merge_branch;
|
||||||
|
|
||||||
refspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);
|
if (!refspec_item_init_fetch(&spec, refspec))
|
||||||
|
die(_("invalid refspec '%s'"), refspec);
|
||||||
spec_src = spec.src;
|
spec_src = spec.src;
|
||||||
if (!*spec_src || !strcmp(spec_src, "HEAD"))
|
if (!*spec_src || !strcmp(spec_src, "HEAD"))
|
||||||
spec_src = "HEAD";
|
spec_src = "HEAD";
|
||||||
|
|||||||
38
refspec.c
38
refspec.c
@@ -153,18 +153,22 @@ static int parse_refspec(struct refspec_item *item, const char *refspec, int fet
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)
|
static int refspec_item_init(struct refspec_item *item, const char *refspec,
|
||||||
|
int fetch)
|
||||||
{
|
{
|
||||||
memset(item, 0, sizeof(*item));
|
memset(item, 0, sizeof(*item));
|
||||||
item->raw = xstrdup(refspec);
|
item->raw = xstrdup(refspec);
|
||||||
return parse_refspec(item, refspec, fetch);
|
return parse_refspec(item, refspec, fetch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,
|
int refspec_item_init_fetch(struct refspec_item *item, const char *refspec)
|
||||||
int fetch)
|
|
||||||
{
|
{
|
||||||
if (!refspec_item_init(item, refspec, fetch))
|
return refspec_item_init(item, refspec, 1);
|
||||||
die(_("invalid refspec '%s'"), refspec);
|
}
|
||||||
|
|
||||||
|
int refspec_item_init_push(struct refspec_item *item, const char *refspec)
|
||||||
|
{
|
||||||
|
return refspec_item_init(item, refspec, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void refspec_item_clear(struct refspec_item *item)
|
void refspec_item_clear(struct refspec_item *item)
|
||||||
@@ -178,17 +182,29 @@ void refspec_item_clear(struct refspec_item *item)
|
|||||||
item->exact_sha1 = 0;
|
item->exact_sha1 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void refspec_init(struct refspec *rs, int fetch)
|
void refspec_init_fetch(struct refspec *rs)
|
||||||
{
|
{
|
||||||
memset(rs, 0, sizeof(*rs));
|
struct refspec blank = REFSPEC_INIT_FETCH;
|
||||||
rs->fetch = fetch;
|
memcpy(rs, &blank, sizeof(*rs));
|
||||||
|
}
|
||||||
|
|
||||||
|
void refspec_init_push(struct refspec *rs)
|
||||||
|
{
|
||||||
|
struct refspec blank = REFSPEC_INIT_PUSH;
|
||||||
|
memcpy(rs, &blank, sizeof(*rs));
|
||||||
}
|
}
|
||||||
|
|
||||||
void refspec_append(struct refspec *rs, const char *refspec)
|
void refspec_append(struct refspec *rs, const char *refspec)
|
||||||
{
|
{
|
||||||
struct refspec_item item;
|
struct refspec_item item;
|
||||||
|
int ret;
|
||||||
|
|
||||||
refspec_item_init_or_die(&item, refspec, rs->fetch);
|
if (rs->fetch)
|
||||||
|
ret = refspec_item_init_fetch(&item, refspec);
|
||||||
|
else
|
||||||
|
ret = refspec_item_init_push(&item, refspec);
|
||||||
|
if (!ret)
|
||||||
|
die(_("invalid refspec '%s'"), refspec);
|
||||||
|
|
||||||
ALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);
|
ALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);
|
||||||
rs->items[rs->nr] = item;
|
rs->items[rs->nr] = item;
|
||||||
@@ -233,7 +249,7 @@ void refspec_clear(struct refspec *rs)
|
|||||||
int valid_fetch_refspec(const char *fetch_refspec_str)
|
int valid_fetch_refspec(const char *fetch_refspec_str)
|
||||||
{
|
{
|
||||||
struct refspec_item refspec;
|
struct refspec_item refspec;
|
||||||
int ret = refspec_item_init(&refspec, fetch_refspec_str, REFSPEC_FETCH);
|
int ret = refspec_item_init_fetch(&refspec, fetch_refspec_str);
|
||||||
refspec_item_clear(&refspec);
|
refspec_item_clear(&refspec);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -249,7 +265,7 @@ void refspec_ref_prefixes(const struct refspec *rs,
|
|||||||
if (item->negative)
|
if (item->negative)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (rs->fetch == REFSPEC_FETCH) {
|
if (rs->fetch) {
|
||||||
if (item->exact_sha1)
|
if (item->exact_sha1)
|
||||||
continue;
|
continue;
|
||||||
prefix = item->src;
|
prefix = item->src;
|
||||||
|
|||||||
18
refspec.h
18
refspec.h
@@ -32,11 +32,8 @@ struct refspec_item {
|
|||||||
|
|
||||||
struct string_list;
|
struct string_list;
|
||||||
|
|
||||||
#define REFSPEC_FETCH 1
|
#define REFSPEC_INIT_FETCH { .fetch = 1 }
|
||||||
#define REFSPEC_PUSH 0
|
#define REFSPEC_INIT_PUSH { .fetch = 0 }
|
||||||
|
|
||||||
#define REFSPEC_INIT_FETCH { .fetch = REFSPEC_FETCH }
|
|
||||||
#define REFSPEC_INIT_PUSH { .fetch = REFSPEC_PUSH }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An array of strings can be parsed into a struct refspec using
|
* An array of strings can be parsed into a struct refspec using
|
||||||
@@ -47,15 +44,14 @@ struct refspec {
|
|||||||
int alloc;
|
int alloc;
|
||||||
int nr;
|
int nr;
|
||||||
|
|
||||||
int fetch;
|
unsigned fetch : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
int refspec_item_init(struct refspec_item *item, const char *refspec,
|
int refspec_item_init_fetch(struct refspec_item *item, const char *refspec);
|
||||||
int fetch);
|
int refspec_item_init_push(struct refspec_item *item, const char *refspec);
|
||||||
void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,
|
|
||||||
int fetch);
|
|
||||||
void refspec_item_clear(struct refspec_item *item);
|
void refspec_item_clear(struct refspec_item *item);
|
||||||
void refspec_init(struct refspec *rs, int fetch);
|
void refspec_init_fetch(struct refspec *rs);
|
||||||
|
void refspec_init_push(struct refspec *rs);
|
||||||
void refspec_append(struct refspec *rs, const char *refspec);
|
void refspec_append(struct refspec *rs, const char *refspec);
|
||||||
__attribute__((format (printf,2,3)))
|
__attribute__((format (printf,2,3)))
|
||||||
void refspec_appendf(struct refspec *rs, const char *fmt, ...);
|
void refspec_appendf(struct refspec *rs, const char *fmt, ...);
|
||||||
|
|||||||
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 = -1; /* unspecified */
|
||||||
ret->prune_tags = -1; /* unspecified */
|
ret->prune_tags = -1; /* unspecified */
|
||||||
ret->name = xstrndup(name, len);
|
ret->name = xstrndup(name, len);
|
||||||
refspec_init(&ret->push, REFSPEC_PUSH);
|
refspec_init_push(&ret->push);
|
||||||
refspec_init(&ret->fetch, REFSPEC_FETCH);
|
refspec_init_fetch(&ret->fetch);
|
||||||
string_list_init_dup(&ret->server_options);
|
string_list_init_dup(&ret->server_options);
|
||||||
|
|
||||||
ALLOC_GROW(remote_state->remotes, remote_state->remotes_nr + 1,
|
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->helper = helper;
|
||||||
data->no_disconnect_req = 0;
|
data->no_disconnect_req = 0;
|
||||||
refspec_init(&data->rs, REFSPEC_FETCH);
|
refspec_init_fetch(&data->rs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Open the output as FILE* so strbuf_getline_*() family of
|
* Open the output as FILE* so strbuf_getline_*() family of
|
||||||
|
|||||||
Reference in New Issue
Block a user