diff --git a/git-submodule.sh b/git-submodule.sh
index 7f6b3cf207ae51be30fc677cb8810ffb20cc9433..b010a673097a9cfcf009b307114669b6221d066c 100755 (executable)
--- a/git-submodule.sh
+++ b/git-submodule.sh
if test -z "$nofetch"
then
+ # Run fetch only if $sha1 isn't present or it
+ # is not reachable from a ref.
(clear_local_git_env; cd "$path" &&
- git-fetch) ||
+ ((rev=$(git rev-list -n 1 $sha1 --not --all 2>/dev/null) &&
+ test -z "$rev") || git-fetch)) ||
die "Unable to fetch in submodule path '$path'"
fi