fetch: Also fetch submodules in subdirectories in on-demand mode
[gitweb.git] / git-submodule.sh
index 7f6b3cf207ae51be30fc677cb8810ffb20cc9433..4361ae418cfc032f793d14af057e2b178922ca1f 100755 (executable)
@@ -488,8 +488,11 @@ cmd_update()
 
                        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