diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-08-16 11:41:26 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-16 11:41:26 -0700 |
commit | 4a5a8008fde47a4c999657515b396d53153bec3d (patch) | |
tree | 6624368842e18a02e89e32f55bccfaeff7ffb55f /git-submodule.sh | |
parent | a35d78c0f483a65ea96c4f0c9a825bf28a386273 (diff) | |
parent | 2cd9de3e18183422cd7ec3cd81cebc656068ea42 (diff) | |
download | git-4a5a8008fde47a4c999657515b396d53153bec3d.tar.gz |
Merge branch 'jc/submodule-sync-no-auto-vivify' into maint
* jc/submodule-sync-no-auto-vivify:
submodule add: always initialize .git/config entry
submodule sync: do not auto-vivify uninteresting submodule
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-x | git-submodule.sh | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/git-submodule.sh b/git-submodule.sh index 9c6dca5a15..20c9bec970 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -246,7 +246,6 @@ cmd_add() url="$repo" ;; esac - git config submodule."$path".url "$url" else module_clone "$path" "$realrepo" "$reference" || exit @@ -260,6 +259,7 @@ cmd_add() esac ) || die "Unable to checkout submodule '$path'" fi + git config submodule."$path".url "$url" git add $force "$path" || die "Failed to add submodule '$path'" @@ -359,25 +359,26 @@ cmd_init() do # Skip already registered paths name=$(module_name "$path") || exit - url=$(git config submodule."$name".url) - test -z "$url" || continue - - url=$(git config -f .gitmodules submodule."$name".url) - test -z "$url" && - die "No url found for submodule path '$path' in .gitmodules" - - # Possibly a url relative to parent - case "$url" in - ./*|../*) - url=$(resolve_relative_url "$url") || exit - ;; - esac - - git config submodule."$name".url "$url" || - die "Failed to register url for submodule path '$path'" + if test -z "$(git config "submodule.$name.url")" + then + url=$(git config -f .gitmodules submodule."$name".url) + test -z "$url" && + die "No url found for submodule path '$path' in .gitmodules" + + # Possibly a url relative to parent + case "$url" in + ./*|../*) + url=$(resolve_relative_url "$url") || exit + ;; + esac + git config submodule."$name".url "$url" || + die "Failed to register url for submodule path '$path'" + fi + # Copy "update" setting when it is not set yet upd="$(git config -f .gitmodules submodule."$name".update)" test -z "$upd" || + test -n "$(git config submodule."$name".update)" || git config submodule."$name".update "$upd" || die "Failed to register update mode for submodule path '$path'" @@ -878,17 +879,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 } |