Imported Upstream version 2.27.0
[platform/upstream/git.git] / builtin / fetch.c
index bf6bab8..b5788c1 100644 (file)
@@ -27,6 +27,7 @@
 #include "branch.h"
 #include "promisor-remote.h"
 #include "commit-graph.h"
+#include "shallow.h"
 
 #define FORCED_UPDATES_DELAY_WARNING_IN_MS (10 * 1000)
 
@@ -156,9 +157,9 @@ static struct option builtin_fetch_options[] = {
                 N_("prune remote-tracking branches no longer on remote")),
        OPT_BOOL('P', "prune-tags", &prune_tags,
                 N_("prune local tags no longer on remote and clobber changed tags")),
-       { OPTION_CALLBACK, 0, "recurse-submodules", &recurse_submodules, N_("on-demand"),
+       OPT_CALLBACK_F(0, "recurse-submodules", &recurse_submodules, N_("on-demand"),
                    N_("control recursive fetching of submodules"),
-                   PARSE_OPT_OPTARG, option_fetch_parse_recurse_submodules },
+                   PARSE_OPT_OPTARG, option_fetch_parse_recurse_submodules),
        OPT_BOOL(0, "dry-run", &dry_run,
                 N_("dry run")),
        OPT_BOOL('k', "keep", &keep, N_("keep downloaded pack")),
@@ -178,15 +179,15 @@ static struct option builtin_fetch_options[] = {
                      1, PARSE_OPT_NONEG),
        { OPTION_STRING, 0, "submodule-prefix", &submodule_prefix, N_("dir"),
                   N_("prepend this to submodule path output"), PARSE_OPT_HIDDEN },
-       { OPTION_CALLBACK, 0, "recurse-submodules-default",
+       OPT_CALLBACK_F(0, "recurse-submodules-default",
                   &recurse_submodules_default, N_("on-demand"),
                   N_("default for recursive fetching of submodules "
                      "(lower priority than config files)"),
-                  PARSE_OPT_HIDDEN, option_fetch_parse_recurse_submodules },
+                  PARSE_OPT_HIDDEN, option_fetch_parse_recurse_submodules),
        OPT_BOOL(0, "update-shallow", &update_shallow,
                 N_("accept refs that update .git/shallow")),
-       { OPTION_CALLBACK, 0, "refmap", NULL, N_("refmap"),
-         N_("specify fetch refmap"), PARSE_OPT_NONEG, parse_refmap_arg },
+       OPT_CALLBACK_F(0, "refmap", NULL, N_("refmap"),
+                      N_("specify fetch refmap"), PARSE_OPT_NONEG, parse_refmap_arg),
        OPT_STRING_LIST('o', "server-option", &server_options, N_("server-specific"), N_("option to transmit")),
        OPT_SET_INT('4', "ipv4", &family, N_("use IPv4 addresses only"),
                        TRANSPORT_FAMILY_IPV4),
@@ -908,13 +909,6 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
        if (!connectivity_checked) {
                struct check_connected_options opt = CHECK_CONNECTED_INIT;
 
-               if (filter_options.choice)
-                       /*
-                        * Since a filter is specified, objects indirectly
-                        * referenced by refs are allowed to be absent.
-                        */
-                       opt.check_refs_are_promisor_objects_only = 1;
-
                rm = ref_map;
                if (check_connected(iterate_ref_map, &rm, &opt)) {
                        rc = error(_("%s did not send all necessary objects\n"), url);
@@ -1759,7 +1753,6 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
        struct remote *remote = NULL;
        int result = 0;
        int prune_tags_ok = 1;
-       struct argv_array argv_gc_auto = ARGV_ARRAY_INIT;
 
        packet_trace_identity("fetch");
 
@@ -1886,13 +1879,8 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
 
        close_object_store(the_repository->objects);
 
-       if (enable_auto_gc) {
-               argv_array_pushl(&argv_gc_auto, "gc", "--auto", NULL);
-               if (verbosity < 0)
-                       argv_array_push(&argv_gc_auto, "--quiet");
-               run_command_v_opt(argv_gc_auto.argv, RUN_GIT_CMD);
-               argv_array_clear(&argv_gc_auto);
-       }
+       if (enable_auto_gc)
+               run_auto_gc(verbosity < 0);
 
        return result;
 }