Merge branch 'bw/clone-recursive-quiet' into next
authorJunio C Hamano <gitster@pobox.com>
Mon, 14 Aug 2017 22:22:52 +0000 (15:22 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 14 Aug 2017 22:22:52 +0000 (15:22 -0700)
"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

1  2 
builtin/clone.c
diff --combined builtin/clone.c
index 08b5cc433c6fcad5eea2dfc3321aea28a599d51f,f81b12330e74e42ae560b70ed6377c6dc72453bf..f7e17d22951cfd8e498143c009fa0303d0ff8319
@@@ -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)
                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();