Jens Lehmann <Jens.Lehmann@xxxxxx> writes: > This new option will allow the user to not only reset the work tree of > the superproject but to also update the work tree of all initialized > submodules (so they match the SHA-1 recorded in the superproject) when > used together with --hard or --merge. But this commit only adds the I agree that --soft and --mixed should not do anything. I am not sure why --keep should not do anything to submodule working trees when asked to recurse, though. > option without any functionality, that will be added to unpack_trees() > in subsequent commits. > > Signed-off-by: Jens Lehmann <Jens.Lehmann@xxxxxx> > --- > Documentation/git-reset.txt | 4 ++++ > builtin/reset.c | 14 ++++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt > index f445cb3..8f833f4 100644 > --- a/Documentation/git-reset.txt > +++ b/Documentation/git-reset.txt > @@ -94,6 +94,10 @@ OPTIONS > --quiet:: > Be quiet, only report errors. > > +include::recurse-submodules-update.txt[] > ++ > +This option only makes sense together with `--hard` and `--merge` and is > +ignored when used without these options. > > EXAMPLES > -------- > diff --git a/builtin/reset.c b/builtin/reset.c > index 6004803..adf372e 100644 > --- a/builtin/reset.c > +++ b/builtin/reset.c > @@ -20,6 +20,7 @@ > #include "parse-options.h" > #include "unpack-trees.h" > #include "cache-tree.h" > +#include "submodule.h" > > static const char * const git_reset_usage[] = { > N_("git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"), > @@ -255,6 +256,8 @@ int cmd_reset(int argc, const char **argv, const char *prefix) > { > int reset_type = NONE, update_ref_status = 0, quiet = 0; > int patch_mode = 0, unborn; > + const char *recurse_submodules_default = "off"; > + int recurse_submodules = RECURSE_SUBMODULES_DEFAULT; > const char *rev; > unsigned char sha1[20]; > struct pathspec pathspec; > @@ -270,13 +273,24 @@ int cmd_reset(int argc, const char **argv, const char *prefix) > OPT_SET_INT(0, "keep", &reset_type, > N_("reset HEAD but keep local changes"), KEEP), > OPT_BOOL('p', "patch", &patch_mode, N_("select hunks interactively")), > + { OPTION_CALLBACK, 0, "recurse-submodules", &recurse_submodules, > + "checkout", "control recursive updating of submodules", > + PARSE_OPT_OPTARG, option_parse_update_submodules }, > + { OPTION_STRING, 0, "recurse-submodules-default", > + &recurse_submodules_default, NULL, > + "default mode for recursion", PARSE_OPT_HIDDEN }, > OPT_END() > }; > > + gitmodules_config(); > git_config(git_default_config, NULL); > > argc = parse_options(argc, argv, prefix, options, git_reset_usage, > PARSE_OPT_KEEP_DASHDASH); > + set_config_update_recurse_submodules( > + parse_update_recurse_submodules_arg("--recurse-submodules-default", > + recurse_submodules_default), > + recurse_submodules); > parse_args(&pathspec, argv, prefix, patch_mode, &rev); > > unborn = !strcmp(rev, "HEAD") && get_sha1("HEAD", sha1); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html