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

[PATCH 6/7] git-submodule: "update --force" to enforce cloning non-submodule

From
Ping Yin <pkufranky@gmail.com>
Date
Apr 16, 2008, 14:19 UTC
Message-ID
<1208355577-8734-7-git-send-email-pkufranky@gmail.com>
In-Reply-To
<1208355577-8734-6-git-send-email-pkufranky@gmail.com>

If the update subcommand combines with --force, instead of issuing a "Not a submodule" warning for non-submodules, non-submodules (i.e. modules existing in .gitmodules or $GIT_DIR/config but not added to the super module) will also be cloned and the master branch will be checked out.

However, if a non-submodule has already been cloned before, the update will be rejected since we don't know what the update means.

Signed-off-by: Ping Yin <pkufranky@gmail.com>
---
 git-submodule.sh |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 87d84fa..ed6f698 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -361,6 +361,9 @@ cmd_update()
 		-q|--quiet)
 			quiet=1
 			;;
+		-f | --force)
+			force="$1"
+			;;
 		--)
 			shift
 			break
@@ -381,7 +384,8 @@ cmd_update()
 		test -n "$name" || exit
 		if test $sha1 = 0000000000000000000000000000000000000000
 		then
-			say "Not a submodule: $name @ $path"
+			test -z "$force" &&
+			say "Not a submodule: $name @ $path" &&
 			continue
 		elif test -z "$url"
 		then
@@ -395,8 +399,15 @@ cmd_update()
 		if ! test -d "$path"/.git
 		then
 			module_clone "$path" "$url" || exit
+			test "$sha1" = 0000000000000000000000000000000000000000 &&
+			(unset GIT_DIR; cd "$path" && git checkout -q master) &&
+			say "non-submodule cloned and master checked out: $name @ $path" &&
+			continue
 			subsha1=
 		else
+			test "$sha1" = 0000000000000000000000000000000000000000 &&
+			say "non-submodule already cloned: $name @ $path" &&
+			continue
 			subsha1=$(unset GIT_DIR; cd "$path" &&
 				git rev-parse --verify HEAD) ||
 			die "Unable to find current revision in submodule path '$path'"
-- 
1.5.5.70.gd68a
Previous: Ping YinNext: Ping Yin
Message 7 of 18 in “submodule: fallback to .gitmodules and multiple level module definition”
  1. 0/7 submodule: fallback to .gitmodules and multiple level module definitionPing Yin, Apr 16, 2008
  2. 1/7 git-submodule: Extract functions module_info and module_urlPing Yin, Apr 16, 2008
  3. 2/7 git-submodule: Extract absolute_url & move absolute url logic to module_clonePing Yin, Apr 16, 2008
  4. 3/7 git-submodule: Fall back on .gitmodules if info not found in $GIT_DIR/configPing Yin, Apr 16, 2008
  5. 4/7 git-submodule: Extract module_add from cmd_addPing Yin, Apr 16, 2008
  6. 5/7 git-submodule: multi-level module definitionPing Yin, Apr 16, 2008
  7. 6/7 git-submodule: "update --force" to enforce cloning non-submodulePing Yin, Apr 16, 2008
  8. 7/7 git-submodule: Don't die when command fails for one submodulePing Yin, Apr 16, 2008
  9. Junio C HamanoApr 22, 2008
  10. Ping YinApr 22, 2008
  11. Junio C HamanoApr 22, 2008
  12. Ping YinApr 22, 2008
  13. Ping YinApr 22, 2008
  14. Ping YinApr 22, 2008
  15. Ping YinApr 22, 2008
  16. Ping YinApr 22, 2008
  17. Jakub NarebskiApr 22, 2008
  18. Ping YinApr 22, 2008

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.