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

[GSoC PATCH] submodule: warn on valueless active config

From
TRTilak Raaz <raaztilak07@gmail.com>
Date
Aug 14, 2026, 17:37 UTC
Message-ID
<CABB4Jh3UUXvmAJpefaiP-xVRQfGRdTF2jW8GkdhbA1BXe6Okdw@mail.gmail.com>
Hi everyone,

My name is Tilak (he/him), and I am a second-year Electronics and Instrumentation Engineering student at NIT Rourkela. I am preparing to apply for GSoC 2027 and am starting my contributions to Git.

Regarding my background with Git: I have built Git from source, successfully navigated the codebase, and tackled the NEEDSWORK comment regarding valueless 'submodule.active' configurations in submodule.c.

Below is my microproject patch resolving this issue by switching from repo_config_get_string_multi() to repo_config_get_value_multi() and adding an automated test case in t7400-submodule-basic.sh.

I look forward to your feedback!

Thanks, Tilak

From 08a2f244efab6e4cf21638d87a721ca664ed9433 Mon Sep 17 00:00:00 2001
From: tilak-raaz <raaztilak07@gmail.com>
Date: Fri, 14 Aug 2026 22:50:11 +0530
Subject: [GSoC PATCH] submodule: warn on valueless active config

The config parser previously threw a hard error if 'submodule.active' was provided without a value, causing commands to abort.

Swap repo_config_get_string_multi() to repo_config_get_value_multi() to parse valueless keys safely, and emit a warning to the user rather than crashing.

This resolves a NEEDSWORK comment in submodule.c.
Signed-off-by: tilak-raaz <raaztilak07@gmail.com>
---
 submodule.c                | 16 ++++++++--------
 t/t7400-submodule-basic.sh | 11 +++++++++++
 2 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/submodule.c b/submodule.c
index 5c92575888..b709c429ba 100644
--- a/submodule.c
+++ b/submodule.c
@@ -231,11 +231,7 @@ int option_parse_recurse_submodules_worktree_updater(const struct option *opt,
 /*
  * Determine if a submodule has been initialized at a given 'path'
  */
-/*
- * NEEDSWORK: Emit a warning if submodule.active exists, but is valueless,
- * ie, the config looks like: "[submodule] active\n".
- * Since that is an invalid pathspec, we should inform the user.
- */
+
 int is_tree_submodule_active(struct repository *repo,
 			     const struct object_id *treeish_name,
 			     const char *path)
@@ -261,14 +257,18 @@ int is_tree_submodule_active(struct repository *repo,
 	free(key);
 
 	/* submodule.active is set */
-	if (!repo_config_get_string_multi(repo, "submodule.active", &sl)) {
+	if (!repo_config_get_value_multi(repo, "submodule.active", &sl)) {
 		struct pathspec ps;
 		struct strvec args = STRVEC_INIT;
 		const struct string_list_item *item;
 
 		for_each_string_list_item(item, sl) {
-			strvec_push(&args, item->string);
-		}
+                if (!item->string) {
+                        warning(_("submodule.active is present but has no value"));
+                        continue;
+                }
+                strvec_push(&args, item->string);
+        }
 
 		parse_pathspec(&ps, 0, 0, NULL, args.v);
 		ret = match_pathspec(repo->index, &ps, path, strlen(path), 0, NULL, 1);
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index eefdecb0bd..afc62ffa0b 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -1549,4 +1549,15 @@ test_expect_success 'submodule add fails when name is reused' '
 	)
 '
 
+
+test_expect_success 'warn on valueless submodule.active' '
+        test_when_finished "rm -rf empty-active" &&
+        git init empty-active &&
+        test_commit -C empty-active initial &&
+        git -c protocol.file.allow=always -C empty-active submodule add ../empty-active sub &&
+        git -C empty-active config --unset submodule.sub.active &&
+        printf "[submodule]\n\tactive\n" >>empty-active/.git/config &&
+        git -C empty-active submodule status 2>err &&
+        grep "submodule.active is present but has no value" err
+'
 test_done
-- 
2.50.1 (Apple Git-155)
Next: Weijie Yuan
Message 1 of 7 in “submodule: warn on valueless active config”
  1. submodule: warn on valueless active configTilak Raaz, Aug 14, 2026
  2. Weijie YuanAug 14, 2026
  3. Tilak RaazAug 14, 2026
  4. D. Ben KnobleAug 14, 2026
  5. Junio C HamanoAug 14, 2026
  6. submodule: warn on valueless active configtilak-raaz, Aug 14, 2026
  7. Junio C HamanoAug 14, 2026

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.