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 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); -- 1.9.rc0.28.ge3363ff -- 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