OSDN Git Service

submodule sync: skip work for inactive submodules
authorBrandon Williams <bmwill@google.com>
Thu, 16 Mar 2017 22:29:45 +0000 (15:29 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 17 Mar 2017 18:06:09 +0000 (11:06 -0700)
Sync does some work determining what URLs should be used for a submodule
but then throws this work away if the submodule isn't active.  Instead
perform the activity check earlier and skip inactive submodule in order
to avoid doing unnecessary work.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-submodule.sh

index ab23371..5771361 100755 (executable)
@@ -1090,6 +1090,13 @@ cmd_sync()
        do
                die_if_unmatched "$mode" "$sha1"
                name=$(git submodule--helper name "$sm_path")
+
+               # skip inactive submodules
+               if ! git config "submodule.$name.url" >/dev/null 2>/dev/null
+               then
+                       continue
+               fi
+
                url=$(git config -f .gitmodules --get submodule."$name".url)
 
                # Possibly a url relative to parent
@@ -1111,27 +1118,24 @@ cmd_sync()
                        ;;
                esac
 
-               if git config "submodule.$name.url" >/dev/null 2>/dev/null
+               displaypath=$(git submodule--helper relative-path "$prefix$sm_path" "$wt_prefix")
+               say "$(eval_gettext "Synchronizing submodule url for '\$displaypath'")"
+               git config submodule."$name".url "$super_config_url"
+
+               if test -e "$sm_path"/.git
                then
-                       displaypath=$(git submodule--helper relative-path "$prefix$sm_path" "$wt_prefix")
-                       say "$(eval_gettext "Synchronizing submodule url for '\$displaypath'")"
-                       git config submodule."$name".url "$super_config_url"
+               (
+                       sanitize_submodule_env
+                       cd "$sm_path"
+                       remote=$(get_default_remote)
+                       git config remote."$remote".url "$sub_origin_url"
 
-                       if test -e "$sm_path"/.git
+                       if test -n "$recursive"
                        then
-                       (
-                               sanitize_submodule_env
-                               cd "$sm_path"
-                               remote=$(get_default_remote)
-                               git config remote."$remote".url "$sub_origin_url"
-
-                               if test -n "$recursive"
-                               then
-                                       prefix="$prefix$sm_path/"
-                                       eval cmd_sync
-                               fi
-                       )
+                               prefix="$prefix$sm_path/"
+                               eval cmd_sync
                        fi
+               )
                fi
        done
 }