Browse Source

submodule update: run custom update script for initial populating as well

In 1b4735d9f3 (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>
maint
Stefan Beller 8 years ago committed by Junio C Hamano
parent
commit
e7b37caf4f
  1. 5
      git-submodule.sh
  2. 12
      t/t7406-submodule-update.sh

5
git-submodule.sh

@ -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) ||

12
t/t7406-submodule-update.sh

@ -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…
Cancel
Save