submodule update: run custom update script for initial populating as well
Inmaint1b4735d9f3
(submodule: no [--merge|--rebase] when newly cloned, 2011-02-17), all actions were defaulted to checkout for populating a submodule initially, because merging or rebasing makes no sense in that situation. Other commands however do make sense, such as the custom command that was added later (6cb5728c43
, submodule update: allow custom command to update submodule working tree, 2013-07-03). I am unsure about the "none" command, as I can see an initial checkout there as a useful thing. On the other hand going strictly by our own documentation, we should do nothing in case of "none" as well, because the user asked for it. Reported-by: Han-Wen Nienhuys <hanwen@google.com> Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
parent
c3808ca698
commit
e7b37caf4f
|
@ -605,7 +605,10 @@ cmd_update()
|
||||||
if test $just_cloned -eq 1
|
if test $just_cloned -eq 1
|
||||||
then
|
then
|
||||||
subsha1=
|
subsha1=
|
||||||
update_module=checkout
|
case "$update_module" in
|
||||||
|
merge | rebase | none)
|
||||||
|
update_module=checkout ;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
subsha1=$(sanitize_submodule_env; cd "$sm_path" &&
|
subsha1=$(sanitize_submodule_env; cd "$sm_path" &&
|
||||||
git rev-parse --verify HEAD) ||
|
git rev-parse --verify HEAD) ||
|
||||||
|
|
|
@ -424,6 +424,16 @@ test_expect_success 'submodule update - command in .git/config catches failure -
|
||||||
test_i18ncmp actual expect
|
test_i18ncmp actual expect
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'submodule update - command run for initial population of submodule' '
|
||||||
|
cat <<-\ EOF >expect
|
||||||
|
Execution of '\''false $submodulesha1'\'' failed in submodule path '\''submodule'\''
|
||||||
|
EOF &&
|
||||||
|
rm -rf super/submodule &&
|
||||||
|
test_must_fail git -C super submodule update >../actual &&
|
||||||
|
test_cmp expect actual &&
|
||||||
|
git -C super submodule update --checkout
|
||||||
|
'
|
||||||
|
|
||||||
cat << EOF >expect
|
cat << EOF >expect
|
||||||
Execution of 'false $submodulesha1' failed in submodule path '../super/submodule'
|
Execution of 'false $submodulesha1' failed in submodule path '../super/submodule'
|
||||||
Failed to recurse into submodule path '../super'
|
Failed to recurse into submodule path '../super'
|
||||||
|
@ -476,6 +486,7 @@ test_expect_success 'submodule init picks up merge' '
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'submodule update --merge - ignores --merge for new submodules' '
|
test_expect_success 'submodule update --merge - ignores --merge for new submodules' '
|
||||||
|
test_config -C super submodule.submodule.update checkout &&
|
||||||
(cd super &&
|
(cd super &&
|
||||||
rm -rf submodule &&
|
rm -rf submodule &&
|
||||||
git submodule update submodule &&
|
git submodule update submodule &&
|
||||||
|
@ -488,6 +499,7 @@ test_expect_success 'submodule update --merge - ignores --merge for new submod
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'submodule update --rebase - ignores --rebase for new submodules' '
|
test_expect_success 'submodule update --rebase - ignores --rebase for new submodules' '
|
||||||
|
test_config -C super submodule.submodule.update checkout &&
|
||||||
(cd super &&
|
(cd super &&
|
||||||
rm -rf submodule &&
|
rm -rf submodule &&
|
||||||
git submodule update submodule &&
|
git submodule update submodule &&
|
||||||
|
|
Loading…
Reference in New Issue