git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 2/3] submodule--helper: teach config subcommand --unset

From
Denton Liu <liu.denton@gmail.com>
Date
Feb 8, 2019, 11:21 UTC
Message-ID
<e204c58f0fd702a9bbd09fcc033ca1a9f99cd362.1549624679.git.liu.denton@gmail.com>
In-Reply-To
<cover.1549624679.git.liu.denton@gmail.com>

This teaches submodule--helper config the --unset option, which removes the specified configuration key from the .gitmodule file.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
---
 builtin/submodule--helper.c | 17 ++++++++++++-----
 t/t7411-submodule-config.sh |  9 +++++++++
 2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 0e140f176c..449e56f30c 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -2147,17 +2147,22 @@ static int check_name(int argc, const char **argv, const char *prefix)
 static int module_config(int argc, const char **argv, const char *prefix)
 {
 	enum {
-		CHECK_WRITEABLE = 1
+		CHECK_WRITEABLE = 1,
+		DO_UNSET = 2
 	} command = 0;
 
 	struct option module_config_options[] = {
 		OPT_CMDMODE(0, "check-writeable", &command,
 			    N_("check if it is safe to write to the .gitmodules file"),
 			    CHECK_WRITEABLE),
+		OPT_CMDMODE(0, "unset", &command,
+			    N_("unset the config in the .gitmodules file"),
+			    DO_UNSET),
 		OPT_END()
 	};
 	const char *const git_submodule_helper_usage[] = {
-		N_("git submodule--helper config name [value]"),
+		N_("git submodule--helper config <name> [<value>]"),
+		N_("git submodule--helper config --unset <name>"),
 		N_("git submodule--helper config --check-writeable"),
 		NULL
 	};
@@ -2169,15 +2174,17 @@ static int module_config(int argc, const char **argv, const char *prefix)
 		return is_writing_gitmodules_ok() ? 0 : -1;
 
 	/* Equivalent to ACTION_GET in builtin/config.c */
-	if (argc == 2)
+	if (argc == 2 && command != DO_UNSET)
 		return print_config_from_gitmodules(the_repository, argv[1]);
 
 	/* Equivalent to ACTION_SET in builtin/config.c */
-	if (argc == 3) {
+	if (argc == 3 || (argc == 2 && command == DO_UNSET)) {
+		const char *value = (argc == 3) ? argv[2] : NULL;
+
 		if (!is_writing_gitmodules_ok())
 			die(_("please make sure that the .gitmodules file is in the working tree"));
 
-		return config_set_in_gitmodules_file_gently(argv[1], argv[2]);
+		return config_set_in_gitmodules_file_gently(argv[1], value);
 	}
 
 	usage_with_options(git_submodule_helper_usage, module_config_options);
diff --git a/t/t7411-submodule-config.sh b/t/t7411-submodule-config.sh
index 89690b7adb..fcc0fb82d8 100755
--- a/t/t7411-submodule-config.sh
+++ b/t/t7411-submodule-config.sh
@@ -142,6 +142,15 @@ test_expect_success 'reading submodules config from the working tree with "submo
 	)
 '
 
+test_expect_success 'unsetting submodules config from the working tree with "submodule--helper config --unset"' '
+	(cd super &&
+		git submodule--helper config --unset submodule.submodule.url &&
+		git submodule--helper config submodule.submodule.url >actual &&
+		test_must_be_empty actual
+	)
+'
+
+
 test_expect_success 'writing submodules config with "submodule--helper config"' '
 	(cd super &&
 		echo "new_url" >expect &&
-- 
2.20.1.522.g5f42c252e9
Previous: Denton LiuNext: Denton Liu
Message 23 of 25 in “Teach submodule set-branch subcommand”
  1. 0/3 Teach submodule set-branch subcommandDenton Liu, Feb 6, 2019
  2. 1/3 git-submodule.txt: document default behavior without --branchDenton Liu, Feb 6, 2019
  3. Junio C HamanoFeb 6, 2019
  4. 2/3 submodule--helper: teach config subcommand --unsetDenton Liu, Feb 6, 2019
  5. Junio C HamanoFeb 6, 2019
  6. 3/3 submodule: teach set-branch subcommandDenton Liu, Feb 6, 2019
  7. 0/3 Teach submodule set-branch subcommandDenton Liu, Feb 7, 2019
  8. 1/3 git-submodule.txt: document default behavior without --branchDenton Liu, Feb 7, 2019
  9. 2/3 submodule--helper: teach config subcommand --unsetDenton Liu, Feb 7, 2019
  10. 3/3 submodule: teach set-branch subcommandDenton Liu, Feb 7, 2019
  11. 0/3 Teach submodule set-branch subcommandDenton Liu, Feb 7, 2019
  12. 1/3 git-submodule.txt: "--branch <branch>" option defaults to 'master'Denton Liu, Feb 7, 2019
  13. 2/3 submodule--helper: teach config subcommand --unsetDenton Liu, Feb 7, 2019
  14. Junio C HamanoFeb 7, 2019
  15. Junio C HamanoFeb 7, 2019
  16. 3/3 submodule: teach set-branch subcommandDenton Liu, Feb 7, 2019
  17. Junio C HamanoFeb 7, 2019
  18. Junio C HamanoFeb 7, 2019
  19. Denton LiuFeb 8, 2019
  20. Junio C HamanoFeb 8, 2019
  21. 0/3 Teach submodule set-branch subcommandDenton Liu, Feb 8, 2019
  22. 1/3 git-submodule.txt: "--branch <branch>" option defaults to 'master'Denton Liu, Feb 8, 2019
  23. 2/3 submodule--helper: teach config subcommand --unsetDenton Liu, Feb 8, 2019
  24. 3/3 submodule: teach set-branch subcommandDenton Liu, Feb 8, 2019
  25. Denton LiuFeb 8, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.