fetch: convert refmap to use struct refspec
Convert the refmap in builtin/fetch.c to be stored in a 'struct refspec'. Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
d7c8e30716
commit
e4cffacc80
@ -60,8 +60,7 @@ static const char *submodule_prefix = "";
|
|||||||
static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
|
static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
|
||||||
static int recurse_submodules_default = RECURSE_SUBMODULES_ON_DEMAND;
|
static int recurse_submodules_default = RECURSE_SUBMODULES_ON_DEMAND;
|
||||||
static int shown_url = 0;
|
static int shown_url = 0;
|
||||||
static int refmap_alloc, refmap_nr;
|
static struct refspec refmap = REFSPEC_INIT_FETCH;
|
||||||
static const char **refmap_array;
|
|
||||||
static struct list_objects_filter_options filter_options;
|
static struct list_objects_filter_options filter_options;
|
||||||
|
|
||||||
static int git_fetch_config(const char *k, const char *v, void *cb)
|
static int git_fetch_config(const char *k, const char *v, void *cb)
|
||||||
@ -108,14 +107,12 @@ static int gitmodules_fetch_config(const char *var, const char *value, void *cb)
|
|||||||
|
|
||||||
static int parse_refmap_arg(const struct option *opt, const char *arg, int unset)
|
static int parse_refmap_arg(const struct option *opt, const char *arg, int unset)
|
||||||
{
|
{
|
||||||
ALLOC_GROW(refmap_array, refmap_nr + 1, refmap_alloc);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "git fetch --refmap='' origin foo"
|
* "git fetch --refmap='' origin foo"
|
||||||
* can be used to tell the command not to store anywhere
|
* can be used to tell the command not to store anywhere
|
||||||
*/
|
*/
|
||||||
if (*arg)
|
refspec_append(&refmap, arg);
|
||||||
refmap_array[refmap_nr++] = arg;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,9 +400,9 @@ static struct ref *get_ref_map(struct transport *transport,
|
|||||||
* by ref_remove_duplicates() in favor of one of these
|
* by ref_remove_duplicates() in favor of one of these
|
||||||
* opportunistic entries with FETCH_HEAD_IGNORE.
|
* opportunistic entries with FETCH_HEAD_IGNORE.
|
||||||
*/
|
*/
|
||||||
if (refmap_array) {
|
if (refmap.nr) {
|
||||||
fetch_refspec = parse_fetch_refspec(refmap_nr, refmap_array);
|
fetch_refspec = refmap.items;
|
||||||
fetch_refspec_nr = refmap_nr;
|
fetch_refspec_nr = refmap.nr;
|
||||||
} else {
|
} else {
|
||||||
fetch_refspec = transport->remote->fetch.items;
|
fetch_refspec = transport->remote->fetch.items;
|
||||||
fetch_refspec_nr = transport->remote->fetch.nr;
|
fetch_refspec_nr = transport->remote->fetch.nr;
|
||||||
@ -413,7 +410,7 @@ static struct ref *get_ref_map(struct transport *transport,
|
|||||||
|
|
||||||
for (i = 0; i < fetch_refspec_nr; i++)
|
for (i = 0; i < fetch_refspec_nr; i++)
|
||||||
get_fetch_map(ref_map, &fetch_refspec[i], &oref_tail, 1);
|
get_fetch_map(ref_map, &fetch_refspec[i], &oref_tail, 1);
|
||||||
} else if (refmap_array) {
|
} else if (refmap.nr) {
|
||||||
die("--refmap option is only meaningful with command-line refspec(s).");
|
die("--refmap option is only meaningful with command-line refspec(s).");
|
||||||
} else {
|
} else {
|
||||||
/* Use the defaults */
|
/* Use the defaults */
|
||||||
|
Reference in New Issue
Block a user