diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-06-25 22:41:25 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-06-26 13:06:08 -0700 |
commit | ccee60862bbba6aa65fafbdb1ce357d2b31a795b (patch) | |
tree | f38631d272ad8952b769bf2b4d438e552b274e35 /git-submodule.sh | |
parent | 33f072f8910081b12780197a2a5423227e437af8 (diff) | |
download | git-ccee60862bbba6aa65fafbdb1ce357d2b31a795b.tar.gz |
submodule sync: do not auto-vivify uninteresting submodule
Earlier 33f072f (submodule sync: Update "submodule.<name>.url" for empty
directories, 2010-10-08) attempted to fix a bug where "git submodule sync"
command does not update the URL if the current superproject does not have
a checkout of the submodule.
However, it did so by unconditionally registering submodule.$name.url to
every submodule in the project, even the ones that the user has never
showed interest in at all by running 'git submodule init' command. This
caused subsequent 'git submodule update' to start cloning/updating submodules
that are not interesting to the user at all.
Update the code so that the URL is updated from the .gitmodules file only
for submodules that already have submodule.$name.url entries, i.e. the
ones the user has showed interested in having a checkout.
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-x | git-submodule.sh | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/git-submodule.sh b/git-submodule.sh index c291eed59c..ce659714fe 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -836,17 +836,20 @@ cmd_sync() ;; esac - say "Synchronizing submodule url for '$name'" - git config submodule."$name".url "$url" - - if test -e "$path"/.git + if git config "submodule.$name.url" >/dev/null 2>/dev/null then - ( - clear_local_git_env - cd "$path" - remote=$(get_default_remote) - git config remote."$remote".url "$url" - ) + say "Synchronizing submodule url for '$name'" + git config submodule."$name".url "$url" + + if test -e "$path"/.git + then + ( + clear_local_git_env + cd "$path" + remote=$(get_default_remote) + git config remote."$remote".url "$url" + ) + fi fi done } |