fi
cloned_modules=
- module_list "$@" |
+ module_list "$@" | {
+ err=
while read mode sha1 stage path
do
if test "$stage" = U
# Only mention uninitialized submodules when its
# path have been specified
test "$#" != "0" &&
- say "Submodule path '$path' not initialized" &&
- say "Maybe you want to use 'update --init'?"
+ say "$(eval_gettext "Submodule path '\$path' not initialized
+Maybe you want to use 'update --init'?")"
continue
fi
# Run fetch only if $sha1 isn't present or it
# is not reachable from a ref.
(clear_local_git_env; cd "$path" &&
- ((rev=$(git rev-list -n 1 $sha1 --not --all 2>/dev/null) &&
+ ( (rev=$(git rev-list -n 1 $sha1 --not --all 2>/dev/null) &&
test -z "$rev") || git-fetch)) ||
die "$(eval_gettext "Unable to fetch in submodule path '\$path'")"
fi
update_module= ;;
esac
+ must_die_on_failure=
case "$update_module" in
rebase)
command="git rebase"
die_msg="$(eval_gettext "Unable to rebase '\$sha1' in submodule path '\$path'")"
say_msg="$(eval_gettext "Submodule path '\$path': rebased into '\$sha1'")"
+ must_die_on_failure=yes
;;
merge)
command="git merge"
die_msg="$(eval_gettext "Unable to merge '\$sha1' in submodule path '\$path'")"
say_msg="$(eval_gettext "Submodule path '\$path': merged in '\$sha1'")"
+ must_die_on_failure=yes
;;
*)
command="git checkout $subforce -q"
;;
esac
- (clear_local_git_env; cd "$path" && $command "$sha1") || die $die_msg
- say $say_msg
+ if (clear_local_git_env; cd "$path" && $command "$sha1")
+ then
+ say "$say_msg"
+ elif test -n "$must_die_on_failure"
+ then
+ die_with_status 2 "$die_msg"
+ else
+ err="${err};$die_msg"
+ continue
+ fi
fi
if test -n "$recursive"
then
- (clear_local_git_env; cd "$path" && eval cmd_update "$orig_flags") ||
- die "$(eval_gettext "Failed to recurse into submodule path '\$path'")"
+ (clear_local_git_env; cd "$path" && eval cmd_update "$orig_flags")
+ res=$?
+ if test $res -gt 0
+ then
+ die_msg="$(eval_gettext "Failed to recurse into submodule path '\$path'")"
+ if test $res -eq 1
+ then
+ err="${err};$die_msg"
+ continue
+ else
+ die_with_status $res "$die_msg"
+ fi
+ fi
fi
done
+
+ if test -n "$err"
+ then
+ OIFS=$IFS
+ IFS=';'
+ for e in $err
+ do
+ if test -n "$e"
+ then
+ echo >&2 "$e"
+ fi
+ done
+ IFS=$OIFS
+ exit 1
+ fi
+ }
}
set_name_rev () {
sha1_abbr_dst=$(echo $sha1_dst | cut -c1-7)
if test $status = T
then
+ blob="$(gettext "blob")"
+ submodule="$(gettext "submodule")"
if test $mod_dst = 160000
then
- echo "* $name $sha1_abbr_src(blob)->$sha1_abbr_dst(submodule)$total_commits:"
+ echo "* $name $sha1_abbr_src($blob)->$sha1_abbr_dst($submodule)$total_commits:"
else
- echo "* $name $sha1_abbr_src(submodule)->$sha1_abbr_dst(blob)$total_commits:"
+ echo "* $name $sha1_abbr_src($submodule)->$sha1_abbr_dst($blob)$total_commits:"
fi
else
echo "* $name $sha1_abbr_src...$sha1_abbr_dst$total_commits:"