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@xxxxxxxxxxx> Reported-by: Heiko Voigt <hvoigt@xxxxxxxxxx> Signed-off-by: Jens Lehmann <Jens.Lehmann@xxxxxx> --- Am 28.05.2012 11:41, schrieb Nicolas Viennot and Sid Nair: > 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html