diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-02-03 11:25:19 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-02-03 11:25:19 -0800 |
commit | 4ba6bb2d1792bd799b295b879461ee5453faab3e (patch) | |
tree | 9eb86f7653c76d38c176847bf585feaa2208768a | |
parent | Merge branch 'sb/submodule-recursive-absorb' (diff) | |
parent | submodule update: run custom update script for initial populating as well (diff) | |
download | tgif-4ba6bb2d1792bd799b295b879461ee5453faab3e.tar.xz |
Merge branch 'sb/submodule-update-initial-runs-custom-script'
The user can specify a custom update method that is run when
"submodule update" updates an already checked out submodule. This
was ignored when checking the submodule out for the first time and
we instead always just checked out the commit that is bound to the
path in the superproject's index.
* sb/submodule-update-initial-runs-custom-script:
submodule update: run custom update script for initial populating as well
-rwxr-xr-x | git-submodule.sh | 5 | ||||
-rwxr-xr-x | t/t7406-submodule-update.sh | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/git-submodule.sh b/git-submodule.sh index 123ac104c6..136e26a2c8 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -613,7 +613,10 @@ cmd_update() if test $just_cloned -eq 1 then subsha1= - update_module=checkout + case "$update_module" in + merge | rebase | none) + update_module=checkout ;; + esac else subsha1=$(sanitize_submodule_env; cd "$sm_path" && git rev-parse --verify HEAD) || diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh index 725bbed1f8..347857fa7c 100755 --- a/t/t7406-submodule-update.sh +++ b/t/t7406-submodule-update.sh @@ -441,6 +441,16 @@ test_expect_success 'submodule update - command in .git/config catches failure - 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 Execution of 'false $submodulesha1' failed in submodule path '../super/submodule' Failed to recurse into submodule path '../super' @@ -493,6 +503,7 @@ test_expect_success 'submodule init picks up merge' ' ' test_expect_success 'submodule update --merge - ignores --merge for new submodules' ' + test_config -C super submodule.submodule.update checkout && (cd super && rm -rf submodule && git submodule update submodule && @@ -505,6 +516,7 @@ test_expect_success 'submodule update --merge - ignores --merge for new submod ' test_expect_success 'submodule update --rebase - ignores --rebase for new submodules' ' + test_config -C super submodule.submodule.update checkout && (cd super && rm -rf submodule && git submodule update submodule && |