Signed-off-by: Stefan Beller <sbel...@google.com>
---
 git-submodule.sh | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index 71385cb..7f11158 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -607,6 +607,24 @@ cmd_update_recursive()
        fi
 }
 
+cmd_update_clone()
+{
+       command="git checkout $subforce -q"
+       die_msg="$(eval_gettext "Unable to checkout '\$sha1' in submodule path 
'\$displaypath'")"
+       say_msg="$(eval_gettext "Submodule path '\$displaypath': checked out 
'\$sha1'")"
+
+       git submodule--helper clone ${GIT_QUIET:+--quiet} ${prefix:+--prefix 
"$prefix"} --path "$sm_path" --name "$name" --url "$url" "$reference" "$depth" 
|| exit
+
+       if (clear_local_git_env; cd "$sm_path" && $command "$sha1")
+       then
+               say "$say_msg"
+       else
+               err="${err};$die_msg"
+               return
+       fi
+       cmd_update_recursive
+}
+
 #
 # Update each submodule path to correct revision, using clone and checkout as 
needed
 #
@@ -680,7 +698,6 @@ cmd_update()
                cmd_init "--" "$@" || return
        fi
 
-       cloned_modules=
        git submodule--helper list --prefix "$wt_prefix" "$@" | {
        err=
        while read mode sha1 stage sm_path
@@ -725,9 +742,8 @@ Maybe you want to use 'update --init'?")"
 
                if ! test -d "$sm_path"/.git && ! test -f "$sm_path"/.git
                then
-                       git submodule--helper clone ${GIT_QUIET:+--quiet} 
${prefix:+--prefix "$prefix"} --path "$sm_path" --name "$name" --url "$url" 
"$reference" "$depth" || exit
-                       cloned_modules="$cloned_modules;$name"
-                       subsha1=
+                       cmd_update_clone
+                       continue
                else
                        subsha1=$(clear_local_git_env; cd "$sm_path" &&
                                git rev-parse --verify HEAD) ||
@@ -767,13 +783,6 @@ Maybe you want to use 'update --init'?")"
                                die "$(eval_gettext "Unable to fetch in 
submodule path '\$displaypath'")"
                        fi
 
-                       # Is this something we just cloned?
-                       case ";$cloned_modules;" in
-                       *";$name;"*)
-                               # then there is no local change to integrate
-                               update_module=checkout ;;
-                       esac
-
                        must_die_on_failure=
                        case "$update_module" in
                        checkout)
-- 
2.5.0.275.ge015d2a

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to