diff --git a/git-submodule.sh b/git-submodule.sh
index 7f6b3cf207ae51be30fc677cb8810ffb20cc9433..4361ae418cfc032f793d14af057e2b178922ca1f 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