]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/submodule--helper.c
Merge branch 'jt/t5500-unflake'
[thirdparty/git.git] / builtin / submodule--helper.c
index 1a4b391c882ad1bcdee8340d1594fe8a4bbc6af0..46c03d2a12671e15296b34d5e194fa837a12cdfb 100644 (file)
@@ -2246,6 +2246,37 @@ static int module_config(int argc, const char **argv, const char *prefix)
        usage_with_options(git_submodule_helper_usage, module_config_options);
 }
 
+static int module_set_url(int argc, const char **argv, const char *prefix)
+{
+       int quiet = 0;
+       const char *newurl;
+       const char *path;
+       char *config_name;
+
+       struct option options[] = {
+               OPT__QUIET(&quiet, N_("Suppress output for setting url of a submodule")),
+               OPT_END()
+       };
+       const char *const usage[] = {
+               N_("git submodule--helper set-url [--quiet] <path> <newurl>"),
+               NULL
+       };
+
+       argc = parse_options(argc, argv, prefix, options, usage, 0);
+
+       if (argc != 2 || !(path = argv[0]) || !(newurl = argv[1]))
+               usage_with_options(usage, options);
+
+       config_name = xstrfmt("submodule.%s.url", path);
+
+       config_set_in_gitmodules_file_gently(config_name, newurl);
+       sync_submodule(path, prefix, quiet ? OPT_QUIET : 0);
+
+       free(config_name);
+
+       return 0;
+}
+
 #define SUPPORT_SUPER_PREFIX (1<<0)
 
 struct cmd_struct {
@@ -2276,6 +2307,7 @@ static struct cmd_struct commands[] = {
        {"is-active", is_active, 0},
        {"check-name", check_name, 0},
        {"config", module_config, 0},
+       {"set-url", module_set_url, 0},
 };
 
 int cmd_submodule__helper(int argc, const char **argv, const char *prefix)