mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
submodule--helper: use submodule_from_path in set-{url,branch}
The commands need a path to a submodule but treated it as the name when modifying the .gitmodules file, leading to confusion when a submodule's name does not match its path. Because calling submodule_from_path initializes the submodule cache, we need to manually trigger a reread before syncing, as the cache is missing the config change we just made. Signed-off-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d0e8084c65
commit
6327085aa0
1 changed files with 18 additions and 4 deletions
|
@ -2901,19 +2901,26 @@ static int module_set_url(int argc, const char **argv, const char *prefix)
|
||||||
N_("git submodule set-url [--quiet] <path> <newurl>"),
|
N_("git submodule set-url [--quiet] <path> <newurl>"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
const struct submodule *sub;
|
||||||
|
|
||||||
argc = parse_options(argc, argv, prefix, options, usage, 0);
|
argc = parse_options(argc, argv, prefix, options, usage, 0);
|
||||||
|
|
||||||
if (argc != 2 || !(path = argv[0]) || !(newurl = argv[1]))
|
if (argc != 2 || !(path = argv[0]) || !(newurl = argv[1]))
|
||||||
usage_with_options(usage, options);
|
usage_with_options(usage, options);
|
||||||
|
|
||||||
config_name = xstrfmt("submodule.%s.url", path);
|
sub = submodule_from_path(the_repository, null_oid(), path);
|
||||||
|
|
||||||
|
if (!sub)
|
||||||
|
die(_("no submodule mapping found in .gitmodules for path '%s'"),
|
||||||
|
path);
|
||||||
|
|
||||||
|
config_name = xstrfmt("submodule.%s.url", sub->name);
|
||||||
config_set_in_gitmodules_file_gently(config_name, newurl);
|
config_set_in_gitmodules_file_gently(config_name, newurl);
|
||||||
sync_submodule(path, prefix, NULL, quiet ? OPT_QUIET : 0);
|
|
||||||
|
repo_read_gitmodules (the_repository, 0);
|
||||||
|
sync_submodule(sub->path, prefix, NULL, quiet ? OPT_QUIET : 0);
|
||||||
|
|
||||||
free(config_name);
|
free(config_name);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2941,6 +2948,7 @@ static int module_set_branch(int argc, const char **argv, const char *prefix)
|
||||||
N_("git submodule set-branch [-q|--quiet] (-b|--branch) <branch> <path>"),
|
N_("git submodule set-branch [-q|--quiet] (-b|--branch) <branch> <path>"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
const struct submodule *sub;
|
||||||
|
|
||||||
argc = parse_options(argc, argv, prefix, options, usage, 0);
|
argc = parse_options(argc, argv, prefix, options, usage, 0);
|
||||||
|
|
||||||
|
@ -2953,7 +2961,13 @@ static int module_set_branch(int argc, const char **argv, const char *prefix)
|
||||||
if (argc != 1 || !(path = argv[0]))
|
if (argc != 1 || !(path = argv[0]))
|
||||||
usage_with_options(usage, options);
|
usage_with_options(usage, options);
|
||||||
|
|
||||||
config_name = xstrfmt("submodule.%s.branch", path);
|
sub = submodule_from_path(the_repository, null_oid(), path);
|
||||||
|
|
||||||
|
if (!sub)
|
||||||
|
die(_("no submodule mapping found in .gitmodules for path '%s'"),
|
||||||
|
path);
|
||||||
|
|
||||||
|
config_name = xstrfmt("submodule.%s.branch", sub->name);
|
||||||
ret = config_set_in_gitmodules_file_gently(config_name, opt_branch);
|
ret = config_set_in_gitmodules_file_gently(config_name, opt_branch);
|
||||||
|
|
||||||
free(config_name);
|
free(config_name);
|
||||||
|
|
Loading…
Reference in a new issue