summaryrefslogtreecommitdiff
path: root/builtin/read-tree.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2017-06-13 13:47:07 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2017-06-13 13:47:07 -0700
commit3c548de3788eda31388b435d8983866fe43e032f (patch)
treeebc1325a891abcf3fac7dcdf04c86c077a1d76a4 /builtin/read-tree.c
parentMerge branch 'jc/noent-notdir' (diff)
parentbuiltin/fetch.c: respect 'submodule.recurse' option (diff)
downloadtgif-3c548de3788eda31388b435d8983866fe43e032f.tar.xz
Merge branch 'sb/submodule-blanket-recursive'
Many commands learned to pay attention to submodule.recurse configuration. * sb/submodule-blanket-recursive: builtin/fetch.c: respect 'submodule.recurse' option builtin/push.c: respect 'submodule.recurse' option builtin/grep.c: respect 'submodule.recurse' option Introduce 'submodule.recurse' option for worktree manipulators submodule loading: separate code path for .gitmodules and config overlay reset/checkout/read-tree: unify config callback for submodule recursion submodule test invocation: only pass additional arguments submodule recursing: do not write a config variable twice
Diffstat (limited to 'builtin/read-tree.c')
-rw-r--r--builtin/read-tree.c32
1 files changed, 9 insertions, 23 deletions
diff --git a/builtin/read-tree.c b/builtin/read-tree.c
index 78d3193659..5bfd4c9f76 100644
--- a/builtin/read-tree.c
+++ b/builtin/read-tree.c
@@ -21,7 +21,6 @@
static int nr_trees;
static int read_empty;
static struct tree *trees[MAX_UNPACK_TREES];
-static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
static int list_tree(struct object_id *oid)
{
@@ -99,21 +98,12 @@ static int debug_merge(const struct cache_entry * const *stages,
return 0;
}
-static int option_parse_recurse_submodules(const struct option *opt,
- const char *arg, int unset)
+static int git_read_tree_config(const char *var, const char *value, void *cb)
{
- if (unset) {
- recurse_submodules = RECURSE_SUBMODULES_OFF;
- return 0;
- }
- if (arg)
- recurse_submodules =
- parse_update_recurse_submodules_arg(opt->long_name,
- arg);
- else
- recurse_submodules = RECURSE_SUBMODULES_ON;
+ if (!strcmp(var, "submodule.recurse"))
+ return git_default_submodule_config(var, value, cb);
- return 0;
+ return git_default_config(var, value, cb);
}
static struct lock_file lock_file;
@@ -157,9 +147,9 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
N_("skip applying sparse checkout filter")),
OPT_BOOL(0, "debug-unpack", &opts.debug_unpack,
N_("debug unpack-trees")),
- { OPTION_CALLBACK, 0, "recurse-submodules", &recurse_submodules,
+ { OPTION_CALLBACK, 0, "recurse-submodules", NULL,
"checkout", "control recursive updating of submodules",
- PARSE_OPT_OPTARG, option_parse_recurse_submodules },
+ PARSE_OPT_OPTARG, option_parse_recurse_submodules_worktree_updater },
OPT_END()
};
@@ -168,18 +158,14 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
opts.src_index = &the_index;
opts.dst_index = &the_index;
- git_config(git_default_config, NULL);
+ git_config(git_read_tree_config, NULL);
argc = parse_options(argc, argv, unused_prefix, read_tree_options,
read_tree_usage, 0);
- hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR);
+ load_submodule_cache();
- if (recurse_submodules != RECURSE_SUBMODULES_DEFAULT) {
- gitmodules_config();
- git_config(submodule_config, NULL);
- set_config_update_recurse_submodules(RECURSE_SUBMODULES_ON);
- }
+ hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR);
prefix_set = opts.prefix ? 1 : 0;
if (1 < opts.merge + opts.reset + prefix_set)