submodule: port subcommand 'set-url' from shell to C
Convert submodule subcommand 'set-url' to a builtin. Port 'set-url' to 'submodule--helper.c' and call the latter via 'git-submodule.sh'. Signed-off-by: Shourya Shukla <shouryashukla.oo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									07d8ea56f2
								
							
						
					
					
						commit
						6417cf9c21
					
				|  | @ -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) | ||||
|  |  | |||
|  | @ -805,27 +805,7 @@ cmd_set_url() { | |||
| 		shift | ||||
| 	done | ||||
|  | ||||
| 	if test $# -ne 2 | ||||
| 	then | ||||
| 		usage | ||||
| 	fi | ||||
|  | ||||
| 	# we can't use `git submodule--helper name` here because internally, it | ||||
| 	# hashes the path so a trailing slash could lead to an unintentional no match | ||||
| 	name="$(git submodule--helper list "$1" | cut -f2)" | ||||
| 	if test -z "$name" | ||||
| 	then | ||||
| 		exit 1 | ||||
| 	fi | ||||
|  | ||||
| 	url="$2" | ||||
| 	if test -z "$url" | ||||
| 	then | ||||
| 		exit 1 | ||||
| 	fi | ||||
|  | ||||
| 	git submodule--helper config submodule."$name".url "$url" | ||||
| 	git submodule--helper sync ${GIT_QUIET:+--quiet} "$name" | ||||
| 	git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper set-url ${GIT_QUIET:+--quiet} -- "$@" | ||||
| } | ||||
|  | ||||
| # | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Shourya Shukla
						Shourya Shukla