fetch: refactor calculation of remote list

Separate out the calculation of remotes to be fetched from and the actual fetching. This will allow us to include an additional step before the actual fetching in a subsequent commit. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jonathan Tan committed Dec 8, 2017 at 15:58 UTC a1743343f410290578fbd6e0ada50b8cdf1e7df8
1 file changed +8 -6
builtin/fetch.c
+8 -6
@@ -1322,7 +1322,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
1322 {
1323 int i;
1324 struct string_list list = STRING_LIST_INIT_DUP;
1325 - struct remote *remote;
1325 + struct remote *remote = NULL;
1326 int result = 0;
1327 struct argv_array argv_gc_auto = ARGV_ARRAY_INIT;
1328
@@ -1367,17 +1367,14 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
1367 else if (argc > 1)
1368 die(_("fetch --all does not make sense with refspecs"));
1369 (void) for_each_remote(get_one_remote_for_fetch, &list);
1370 - result = fetch_multiple(&list);
1370 } else if (argc == 0) {
1371 /* No arguments -- use default remote */
1372 remote = remote_get(NULL);
1374 - result = fetch_one(remote, argc, argv);
1373 } else if (multiple) {
1374 /* All arguments are assumed to be remotes or groups */
1375 for (i = 0; i < argc; i++)
1376 if (!add_remote_or_group(argv[i], &list))
1377 die(_("No such remote or remote group: %s"), argv[i]);
1380 - result = fetch_multiple(&list);
1378 } else {
1379 /* Single remote or group */
1380 (void) add_remote_or_group(argv[0], &list);
@@ -1385,14 +1382,19 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
1382 /* More than one remote */
1383 if (argc > 1)
1384 die(_("Fetching a group and specifying refspecs does not make sense"));
1388 - result = fetch_multiple(&list);
1385 } else {
1386 /* Zero or one remotes */
1387 remote = remote_get(argv[0]);
1392 - result = fetch_one(remote, argc-1, argv+1);
1388 + argc--;
1389 + argv++;
1390 }
1391 }
1392
1393 + if (remote)
1394 + result = fetch_one(remote, argc, argv);
1395 + else
1396 + result = fetch_multiple(&list);
1397 +
1398 if (!result && (recurse_submodules != RECURSE_SUBMODULES_OFF)) {
1399 struct argv_array options = ARGV_ARRAY_INIT;
1400