Skip to content

Commit 65d96c8

Browse files
bmwillgitster
authored andcommitted
fetch: convert get_ref_map to take a struct refspec
Convert 'get_ref_map()' to take a 'struct refspec' as a parameter instead of a list of 'struct refspec_item'. Signed-off-by: Brandon Williams <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 65a1301 commit 65d96c8

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

builtin/fetch.c

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ static void find_non_local_tags(struct transport *transport,
337337
}
338338

339339
static struct ref *get_ref_map(struct transport *transport,
340-
struct refspec_item *refspecs, int refspec_count,
340+
struct refspec *rs,
341341
int tags, int *autotags)
342342
{
343343
int i;
@@ -351,29 +351,29 @@ static struct ref *get_ref_map(struct transport *transport,
351351

352352
const struct ref *remote_refs;
353353

354-
for (i = 0; i < refspec_count; i++) {
355-
if (!refspecs[i].exact_sha1) {
356-
const char *glob = strchr(refspecs[i].src, '*');
354+
for (i = 0; i < rs->nr; i++) {
355+
const struct refspec_item *item = &rs->items[i];
356+
if (!item->exact_sha1) {
357+
const char *glob = strchr(item->src, '*');
357358
if (glob)
358359
argv_array_pushf(&ref_prefixes, "%.*s",
359-
(int)(glob - refspecs[i].src),
360-
refspecs[i].src);
360+
(int)(glob - item->src),
361+
item->src);
361362
else
362-
expand_ref_prefix(&ref_prefixes, refspecs[i].src);
363+
expand_ref_prefix(&ref_prefixes, item->src);
363364
}
364365
}
365366

366367
remote_refs = transport_get_remote_refs(transport, &ref_prefixes);
367368

368369
argv_array_clear(&ref_prefixes);
369370

370-
if (refspec_count) {
371-
struct refspec_item *fetch_refspec;
372-
int fetch_refspec_nr;
371+
if (rs->nr) {
372+
struct refspec *fetch_refspec;
373373

374-
for (i = 0; i < refspec_count; i++) {
375-
get_fetch_map(remote_refs, &refspecs[i], &tail, 0);
376-
if (refspecs[i].dst && refspecs[i].dst[0])
374+
for (i = 0; i < rs->nr; i++) {
375+
get_fetch_map(remote_refs, &rs->items[i], &tail, 0);
376+
if (rs->items[i].dst && rs->items[i].dst[0])
377377
*autotags = 1;
378378
}
379379
/* Merge everything on the command line (but not --tags) */
@@ -400,16 +400,13 @@ static struct ref *get_ref_map(struct transport *transport,
400400
* by ref_remove_duplicates() in favor of one of these
401401
* opportunistic entries with FETCH_HEAD_IGNORE.
402402
*/
403-
if (refmap.nr) {
404-
fetch_refspec = refmap.items;
405-
fetch_refspec_nr = refmap.nr;
406-
} else {
407-
fetch_refspec = transport->remote->fetch.items;
408-
fetch_refspec_nr = transport->remote->fetch.nr;
409-
}
403+
if (refmap.nr)
404+
fetch_refspec = &refmap;
405+
else
406+
fetch_refspec = &transport->remote->fetch;
410407

411-
for (i = 0; i < fetch_refspec_nr; i++)
412-
get_fetch_map(ref_map, &fetch_refspec[i], &oref_tail, 1);
408+
for (i = 0; i < fetch_refspec->nr; i++)
409+
get_fetch_map(ref_map, &fetch_refspec->items[i], &oref_tail, 1);
413410
} else if (refmap.nr) {
414411
die("--refmap option is only meaningful with command-line refspec(s).");
415412
} else {
@@ -1136,7 +1133,7 @@ static int do_fetch(struct transport *transport,
11361133
goto cleanup;
11371134
}
11381135

1139-
ref_map = get_ref_map(transport, rs->items, rs->nr, tags, &autotags);
1136+
ref_map = get_ref_map(transport, rs, tags, &autotags);
11401137
if (!update_head_ok)
11411138
check_not_current_branch(ref_map);
11421139

0 commit comments

Comments
 (0)