From: Junio C Hamano Date: Tue, 22 Aug 2017 17:29:01 +0000 (-0700) Subject: Merge branch 'bw/clone-recursive-quiet' X-Git-Tag: v2.15.0-rc0~178 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/cd2a952458928ccef767cf3555601f07b07b2fb0?ds=inline;hp=-c Merge branch 'bw/clone-recursive-quiet' "git clone --recurse-submodules --quiet" did not pass the quiet option down to submodules. * bw/clone-recursive-quiet: clone: teach recursive clones to respect -q --- cd2a952458928ccef767cf3555601f07b07b2fb0 diff --combined builtin/clone.c index 08b5cc433c,f81b12330e..f7e17d2295 --- a/builtin/clone.c +++ b/builtin/clone.c @@@ -9,7 -9,6 +9,7 @@@ */ #include "builtin.h" +#include "config.h" #include "lockfile.h" #include "parse-options.h" #include "fetch-pack.h" @@@ -41,7 -40,6 +41,7 @@@ static const char * const builtin_clone static int option_no_checkout, option_bare, option_mirror, option_single_branch = -1; static int option_local = -1, option_no_hardlinks, option_shared; +static int option_no_tags; static int option_shallow_submodules; static int deepen; static char *option_template, *option_depth, *option_since; @@@ -122,8 -120,6 +122,8 @@@ static struct option builtin_clone_opti N_("deepen history of shallow clone, excluding rev")), OPT_BOOL(0, "single-branch", &option_single_branch, N_("clone only one branch, HEAD or --branch")), + OPT_BOOL(0, "no-tags", &option_no_tags, + N_("don't clone any tags, and make later fetches not to follow them")), OPT_BOOL(0, "shallow-submodules", &option_shallow_submodules, N_("any cloned submodules will be shallow")), OPT_STRING(0, "separate-git-dir", &real_git_dir, N_("gitdir"), @@@ -361,7 -357,7 +361,7 @@@ static void copy_alternates(struct strb * to turn entries with paths relative to the original * absolute, so that they can be used in the new repository. */ - FILE *in = fopen(src->buf, "r"); + FILE *in = xfopen(src->buf, "r"); struct strbuf line = STRBUF_INIT; while (strbuf_getline(&line, in) != EOF) { @@@ -567,7 -563,7 +567,7 @@@ static struct ref *wanted_peer_refs(con } else get_fetch_map(refs, refspec, &tail, 0); - if (!option_mirror && !option_single_branch) + if (!option_mirror && !option_single_branch && !option_no_tags) get_fetch_map(refs, tag_refspec, &tail, 0); return local_refs; @@@ -656,7 -652,7 +656,7 @@@ static void update_remote_refs(const st if (refs) { write_remote_refs(mapped_refs); - if (option_single_branch) + if (option_single_branch && !option_no_tags) write_followtags(refs, msg); } @@@ -686,7 -682,7 +686,7 @@@ static void update_head(const struct re install_branch_config(0, head, option_origin, our->name); } } else if (our) { - struct commit *c = lookup_commit_reference(our->old_oid.hash); + struct commit *c = lookup_commit_reference(&our->old_oid); /* --branch specifies a non-branch (i.e. tags), detach HEAD */ update_ref(msg, "HEAD", c->object.oid.hash, NULL, REF_NODEREF, UPDATE_REFS_DIE_ON_ERR); @@@ -743,7 -739,7 +743,7 @@@ static int checkout(int submodule_progr opts.src_index = &the_index; opts.dst_index = &the_index; - tree = parse_tree_indirect(oid.hash); + tree = parse_tree_indirect(&oid); parse_tree(tree); init_tree_desc(&t, tree->buffer, tree->size); if (unpack_trees(1, &t, &opts) < 0) @@@ -768,6 -764,9 +768,9 @@@ if (submodule_progress) argv_array_push(&args, "--progress"); + if (option_verbosity < 0) + argv_array_push(&args, "--quiet"); + err = run_command_v_opt(args.argv, RUN_GIT_CMD); argv_array_clear(&args); } @@@ -1041,12 -1040,6 +1044,12 @@@ int cmd_clone(int argc, const char **ar git_config_set(key.buf, repo); strbuf_reset(&key); + if (option_no_tags) { + strbuf_addf(&key, "remote.%s.tagOpt", option_origin); + git_config_set(key.buf, "--no-tags"); + strbuf_reset(&key); + } + if (option_required_reference.nr || option_optional_reference.nr) setup_reference();