mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
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
This commit is contained in:
commit
4a5a8008fd
|
@ -167,7 +167,9 @@ commit for each submodule.
|
|||
|
||||
sync::
|
||||
Synchronizes submodules' remote URL configuration setting
|
||||
to the value specified in .gitmodules. This is useful when
|
||||
to the value specified in .gitmodules. It will only affect those
|
||||
submodules which already have an url entry in .git/config (that is the
|
||||
case when they are initialized or freshly added). This is useful when
|
||||
submodule URLs change upstream and you need to update your local
|
||||
repositories accordingly.
|
||||
+
|
||||
|
|
|
@ -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
|
||||
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"
|
||||
|
||||
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'"
|
||||
# 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
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ test_expect_success setup '
|
|||
git clone super super-clone &&
|
||||
(cd super-clone && git submodule update --init) &&
|
||||
git clone super empty-clone &&
|
||||
(cd empty-clone && git submodule init)
|
||||
(cd empty-clone && git submodule init) &&
|
||||
git clone super top-only-clone
|
||||
'
|
||||
|
||||
test_expect_success 'change submodule' '
|
||||
|
@ -66,7 +67,7 @@ test_expect_success '"git submodule sync" should update submodule URLs' '
|
|||
)
|
||||
'
|
||||
|
||||
test_expect_success '"git submodule sync" should update submodule URLs if not yet cloned' '
|
||||
test_expect_success '"git submodule sync" should update known submodule URLs' '
|
||||
(cd empty-clone &&
|
||||
git pull &&
|
||||
git submodule sync &&
|
||||
|
@ -74,4 +75,14 @@ test_expect_success '"git submodule sync" should update submodule URLs if not ye
|
|||
)
|
||||
'
|
||||
|
||||
test_expect_success '"git submodule sync" should not vivify uninteresting submodule' '
|
||||
(cd top-only-clone &&
|
||||
git pull &&
|
||||
git submodule sync &&
|
||||
test -z "$(git config submodule.submodule.url)" &&
|
||||
git submodule sync submodule &&
|
||||
test -z "$(git config submodule.submodule.url)"
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue