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::
|
sync::
|
||||||
Synchronizes submodules' remote URL configuration setting
|
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
|
submodule URLs change upstream and you need to update your local
|
||||||
repositories accordingly.
|
repositories accordingly.
|
||||||
+
|
+
|
||||||
|
@ -246,7 +246,6 @@ cmd_add()
|
|||||||
url="$repo"
|
url="$repo"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
git config submodule."$path".url "$url"
|
|
||||||
else
|
else
|
||||||
|
|
||||||
module_clone "$path" "$realrepo" "$reference" || exit
|
module_clone "$path" "$realrepo" "$reference" || exit
|
||||||
@ -260,6 +259,7 @@ cmd_add()
|
|||||||
esac
|
esac
|
||||||
) || die "Unable to checkout submodule '$path'"
|
) || die "Unable to checkout submodule '$path'"
|
||||||
fi
|
fi
|
||||||
|
git config submodule."$path".url "$url"
|
||||||
|
|
||||||
git add $force "$path" ||
|
git add $force "$path" ||
|
||||||
die "Failed to add submodule '$path'"
|
die "Failed to add submodule '$path'"
|
||||||
@ -359,25 +359,26 @@ cmd_init()
|
|||||||
do
|
do
|
||||||
# Skip already registered paths
|
# Skip already registered paths
|
||||||
name=$(module_name "$path") || exit
|
name=$(module_name "$path") || exit
|
||||||
url=$(git config submodule."$name".url)
|
if test -z "$(git config "submodule.$name.url")"
|
||||||
test -z "$url" || continue
|
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)
|
# Possibly a url relative to parent
|
||||||
test -z "$url" &&
|
case "$url" in
|
||||||
die "No url found for submodule path '$path' in .gitmodules"
|
./*|../*)
|
||||||
|
url=$(resolve_relative_url "$url") || exit
|
||||||
# Possibly a url relative to parent
|
;;
|
||||||
case "$url" in
|
esac
|
||||||
./*|../*)
|
git config submodule."$name".url "$url" ||
|
||||||
url=$(resolve_relative_url "$url") || exit
|
die "Failed to register url for submodule path '$path'"
|
||||||
;;
|
fi
|
||||||
esac
|
|
||||||
|
|
||||||
git config submodule."$name".url "$url" ||
|
|
||||||
die "Failed to register url for submodule path '$path'"
|
|
||||||
|
|
||||||
|
# Copy "update" setting when it is not set yet
|
||||||
upd="$(git config -f .gitmodules submodule."$name".update)"
|
upd="$(git config -f .gitmodules submodule."$name".update)"
|
||||||
test -z "$upd" ||
|
test -z "$upd" ||
|
||||||
|
test -n "$(git config submodule."$name".update)" ||
|
||||||
git config submodule."$name".update "$upd" ||
|
git config submodule."$name".update "$upd" ||
|
||||||
die "Failed to register update mode for submodule path '$path'"
|
die "Failed to register update mode for submodule path '$path'"
|
||||||
|
|
||||||
@ -878,17 +879,20 @@ cmd_sync()
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
say "Synchronizing submodule url for '$name'"
|
if git config "submodule.$name.url" >/dev/null 2>/dev/null
|
||||||
git config submodule."$name".url "$url"
|
|
||||||
|
|
||||||
if test -e "$path"/.git
|
|
||||||
then
|
then
|
||||||
(
|
say "Synchronizing submodule url for '$name'"
|
||||||
clear_local_git_env
|
git config submodule."$name".url "$url"
|
||||||
cd "$path"
|
|
||||||
remote=$(get_default_remote)
|
if test -e "$path"/.git
|
||||||
git config remote."$remote".url "$url"
|
then
|
||||||
)
|
(
|
||||||
|
clear_local_git_env
|
||||||
|
cd "$path"
|
||||||
|
remote=$(get_default_remote)
|
||||||
|
git config remote."$remote".url "$url"
|
||||||
|
)
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,8 @@ test_expect_success setup '
|
|||||||
git clone super super-clone &&
|
git clone super super-clone &&
|
||||||
(cd super-clone && git submodule update --init) &&
|
(cd super-clone && git submodule update --init) &&
|
||||||
git clone super empty-clone &&
|
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' '
|
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 &&
|
(cd empty-clone &&
|
||||||
git pull &&
|
git pull &&
|
||||||
git submodule sync &&
|
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
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user