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