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

[PATCH] submodules: print "registered for path" message only once

From
Jens Lehmann <jens.lehmann@web.de>
Date
May 28, 2012, 19:46 UTC
Message-ID
<4FC3D632.6030604@web.de>
In-Reply-To
<1338198114-20480-1-git-send-email-nviennot+sidnair@viennot.biz>

Since 2cd9de3e (submodule add: always initialize .git/config entry) the message "Submodule '\$name' (\$url) registered for path '\$sm_path'" is printed every time cmd_init() is called, e.g. each time "git submodule update" is used with the --init option.

This was not intended and leads to bogus output which can confuse users and build systems. Apart from that the $url variable was not set after the first run which did the actual initialization and only "()" was printed in subsequent runs where "($url)" was meant to inform the user about the upstream repo.

Fix that by moving the say command in question into the if block where the url is initialized, restoring the behavior that was in place before the 2cd9de3e commit. While at it also remove the comment which still describes the logic used before 2cd9de3e and add a comment about how things work now.

Reported-by: Nicolas Viennot and Sid Nair <nicolas@viennot.com>
Reported-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
---
Am 28.05.2012 11:41, schrieb Nicolas Viennot and Sid Nair:
Show 9 quoted lines
> When git submodule init was called, the $url variable was not initialized
> properly for submodules which have already been initialized. This led
> to two problems.
> 
> First, when all of the submodules were initialized, each showed an empty url
> instead of the actual url.
> 
> Second, when previously initialized submodules were printed after newly
> added submodules, the displayed urls were incorrect.

Thanks for pointing this one out. Me thinks the real culprit here is to print the "registered for path" message even though that was not what was done. This popped up last week at $dayjob and I just got around to do this fix when your patch appeared on the list ;-)

 git-submodule.sh | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 64a70d6..5c61ae2 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -396,8 +396,9 @@ cmd_init()
 	module_list "$@" |
 	while read mode sha1 stage sm_path
 	do
-		# Skip already registered paths
 		name=$(module_name "$sm_path") || exit
+
+		# Copy url setting when it is not set yet
 		if test -z "$(git config "submodule.$name.url")"
 		then
 			url=$(git config -f .gitmodules submodule."$name".url)
@@ -412,6 +413,8 @@ cmd_init()
 			esac
 			git config submodule."$name".url "$url" ||
 			die "$(eval_gettext "Failed to register url for submodule path '\$sm_path'")"
+
+			say "$(eval_gettext "Submodule '\$name' (\$url) registered for path '\$sm_path'")"
 		fi

 		# Copy "update" setting when it is not set yet
@@ -420,8 +423,6 @@ cmd_init()
 		test -n "$(git config submodule."$name".update)" ||
 		git config submodule."$name".update "$upd" ||
 		die "$(eval_gettext "Failed to register update mode for submodule path '\$sm_path'")"
-
-		say "$(eval_gettext "Submodule '\$name' (\$url) registered for path '\$sm_path'")"
 	done
 }
-- 
1.7.11.rc0.dirty
Previous: Nicolas Viennot and Sid Nair
Message 2 of 2 in “git-submodule.sh: Always initialize $url variable”
  1. git-submodule.sh: Always initialize $url variableNicolas Viennot and Sid Nair, May 28, 2012
  2. submodules: print "registered for path" message only onceJens Lehmann, May 28, 2012

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.