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

[PATCHv2 2/4] submodule.c: uninitialized submodules are ignored in recursive commands

From
Stefan Beller <sbeller@google.com>
Date
Apr 18, 2017, 21:37 UTC
Message-ID
<20170418213725.7901-3-sbeller@google.com>
In-Reply-To
<20170418213725.7901-1-sbeller@google.com>

This was an oversight when working on the working tree modifying commands recursing into submodules.

To test for uninitialized submodules, introduce another submodule "uninitialized_sub". Adding it via `submodule add` will activate the submodule in the preparation area (in create_lib_submodule_repo we setup all the things in submodule_update_repo), but the later tests will use a new testing repo that clones the preparation repo in which the new submodule is not initialized.

By adding it to the branch "add_sub1", which is the starting point of all other branches, we have wide coverage.

Signed-off-by: Stefan Beller <sbeller@google.com>
---
 submodule.c               | 3 +++
 t/lib-submodule-update.sh | 1 +
 2 files changed, 4 insertions(+)
diff --git a/submodule.c b/submodule.c
index 7c3c4b17fb..ccf8932731 100644
--- a/submodule.c
+++ b/submodule.c
@@ -1333,6 +1333,9 @@ int submodule_move_head(const char *path,
 	struct child_process cp = CHILD_PROCESS_INIT;
 	const struct submodule *sub;
 
+	if (!is_submodule_initialized(path))
+		return 0;
+
 	sub = submodule_from_path(null_sha1, path);
 
 	if (!sub)
diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh
index fb4f7b014e..22dd9e060c 100755
--- a/t/lib-submodule-update.sh
+++ b/t/lib-submodule-update.sh
@@ -73,6 +73,7 @@ create_lib_submodule_repo () {
 
 		git checkout -b "add_sub1" &&
 		git submodule add ../submodule_update_sub1 sub1 &&
+		git submodule add ../submodule_update_sub1 uninitialized_sub &&
 		git config -f .gitmodules submodule.sub1.ignore all &&
 		git config submodule.sub1.ignore all &&
 		git add .gitmodules &&
-- 
2.12.2.642.g1b8cc69eee.dirty
Previous: Stefan BellerNext: Stefan Beller
Message 3 of 10 in “[PATCHv2 0/4] recursive submodules: git-reset!”
  1. Stefan BellerApr 18, 2017
  2. 1/4 entry.c: submodule recursing: respect force flag correctlyStefan Beller, Apr 18, 2017
  3. 2/4 submodule.c: uninitialized submodules are ignored in recursive commandsStefan Beller, Apr 18, 2017
  4. 3/4 submodule.c: submodule_move_head works with broken submodulesStefan Beller, Apr 18, 2017
  5. 4/4 builtin/reset: add --recurse-submodules switchStefan Beller, Apr 18, 2017
  6. Junio C HamanoApr 19, 2017
  7. Stefan BellerApr 19, 2017
  8. 4/4 builtin/reset: add --recurse-submodules switchStefan Beller, Apr 21, 2017
  9. Brandon WilliamsApr 20, 2017
  10. Stefan BellerApr 20, 2017

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.