Re: [PATCHv4 12/14] git submodule update: cmd_update_clone
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:06:40
Stefan Beller [off-list ref] writes:
Split the cloning part out to its own function, this allow us in a later patch to convert cmd_update in C. Signed-off-by: Stefan Beller <redacted> ---
It appears that this is not just a refactor and loses the logic around $cloned_modules variable that seems to avoid doing the same thing twice. An explanation on the reason why it no longer is necessary in the proposed log message would be nice. Thanks.
quoted hunk
git-submodule.sh | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-)diff --git a/git-submodule.sh b/git-submodule.sh index ea3260e..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" --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)