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 <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brandon Williams committed
May 16, 2018 at 15:58 UTC
65d96c8b7dd78aad623d833c2c8dec625b8e00b6
1 file changed
+20
-23
builtin/fetch.c
+20
-23
@@ -337,7 +337,7 @@ static void find_non_local_tags(struct transport *transport,
337
}
338
339
static struct ref *get_ref_map(struct transport *transport,
340
- struct refspec_item *refspecs, int refspec_count,
340
+ struct refspec *rs,
341
int tags, int *autotags)
342
{
343
int i;
@@ -351,15 +351,16 @@ static struct ref *get_ref_map(struct transport *transport,
351
352
const struct ref *remote_refs;
353
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, '*');
358
if (glob)
359
argv_array_pushf(&ref_prefixes, "%.*s",
359
- (int)(glob - refspecs[i].src),
360
- refspecs[i].src);
360
+ (int)(glob - item->src),
361
+ item->src);
362
else
362
- expand_ref_prefix(&ref_prefixes, refspecs[i].src);
363
+ expand_ref_prefix(&ref_prefixes, item->src);
364
}
365
}
366
@@ -367,13 +368,12 @@ static struct ref *get_ref_map(struct transport *transport,
368
369
argv_array_clear(&ref_prefixes);
370
370
- if (refspec_count) {
371
- struct refspec_item *fetch_refspec;
372
- int fetch_refspec_nr;
371
+ if (rs->nr) {
372
+ struct refspec *fetch_refspec;
373
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])
377
*autotags = 1;
378
}
379
/* Merge everything on the command line (but not --tags) */
@@ -400,16 +400,13 @@ static struct ref *get_ref_map(struct transport *transport,
400
* by ref_remove_duplicates() in favor of one of these
401
* opportunistic entries with FETCH_HEAD_IGNORE.
402
*/
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;
407
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);
410
} else if (refmap.nr) {
411
die("--refmap option is only meaningful with command-line refspec(s).");
412
} else {
@@ -1136,7 +1133,7 @@ static int do_fetch(struct transport *transport,
1133
goto cleanup;
1134
}
1135
1139
- ref_map = get_ref_map(transport, rs->items, rs->nr, tags, &autotags);
1136
+ ref_map = get_ref_map(transport, rs, tags, &autotags);
1137
if (!update_head_ok)
1138
check_not_current_branch(ref_map);
1139