зеркало из https://github.com/microsoft/git.git
Merge branch 'hv/submodule-update-none'
* hv/submodule-update-none: add update 'none' flag to disable update of submodule by default submodule: move update configuration variable further up
This commit is contained in:
Коммит
61f9db7a50
|
@ -120,6 +120,8 @@ too (and can also report changes to a submodule's work tree).
|
||||||
init::
|
init::
|
||||||
Initialize the submodules, i.e. register each submodule name
|
Initialize the submodules, i.e. register each submodule name
|
||||||
and url found in .gitmodules into .git/config.
|
and url found in .gitmodules into .git/config.
|
||||||
|
It will also copy the value of `submodule.$name.update` into
|
||||||
|
.git/config.
|
||||||
The key used in .git/config is `submodule.$name.url`.
|
The key used in .git/config is `submodule.$name.url`.
|
||||||
This command does not alter existing information in .git/config.
|
This command does not alter existing information in .git/config.
|
||||||
You can then customize the submodule clone URLs in .git/config
|
You can then customize the submodule clone URLs in .git/config
|
||||||
|
@ -133,7 +135,7 @@ update::
|
||||||
checkout the commit specified in the index of the containing repository.
|
checkout the commit specified in the index of the containing repository.
|
||||||
This will make the submodules HEAD be detached unless `--rebase` or
|
This will make the submodules HEAD be detached unless `--rebase` or
|
||||||
`--merge` is specified or the key `submodule.$name.update` is set to
|
`--merge` is specified or the key `submodule.$name.update` is set to
|
||||||
`rebase` or `merge`.
|
`rebase`, `merge` or `none`.
|
||||||
+
|
+
|
||||||
If the submodule is not yet initialized, and you just want to use the
|
If the submodule is not yet initialized, and you just want to use the
|
||||||
setting as stored in .gitmodules, you can automatically initialize the
|
setting as stored in .gitmodules, you can automatically initialize the
|
||||||
|
@ -141,6 +143,10 @@ submodule with the `--init` option.
|
||||||
+
|
+
|
||||||
If `--recursive` is specified, this command will recurse into the
|
If `--recursive` is specified, this command will recurse into the
|
||||||
registered submodules, and update any nested submodules within.
|
registered submodules, and update any nested submodules within.
|
||||||
|
+
|
||||||
|
If the configuration key `submodule.$name.update` is set to `none` the
|
||||||
|
submodule with name `$name` will not be updated by default. This can be
|
||||||
|
overriden by adding `--checkout` to the command.
|
||||||
|
|
||||||
summary::
|
summary::
|
||||||
Show commit summary between the given commit (defaults to HEAD) and
|
Show commit summary between the given commit (defaults to HEAD) and
|
||||||
|
|
|
@ -30,6 +30,7 @@ test_expect_success 'setup a submodule tree' '
|
||||||
git clone super submodule &&
|
git clone super submodule &&
|
||||||
git clone super rebasing &&
|
git clone super rebasing &&
|
||||||
git clone super merging &&
|
git clone super merging &&
|
||||||
|
git clone super none &&
|
||||||
(cd super &&
|
(cd super &&
|
||||||
git submodule add ../submodule submodule &&
|
git submodule add ../submodule submodule &&
|
||||||
test_tick &&
|
test_tick &&
|
||||||
|
@ -58,6 +59,11 @@ test_expect_success 'setup a submodule tree' '
|
||||||
test_tick &&
|
test_tick &&
|
||||||
git commit -m "rebasing"
|
git commit -m "rebasing"
|
||||||
)
|
)
|
||||||
|
(cd super &&
|
||||||
|
git submodule add ../none none &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m "none"
|
||||||
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'submodule update detaching the HEAD ' '
|
test_expect_success 'submodule update detaching the HEAD ' '
|
||||||
|
@ -298,6 +304,62 @@ test_expect_success 'submodule update ignores update=rebase config for new submo
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'submodule init picks up update=none' '
|
||||||
|
(cd super &&
|
||||||
|
git config -f .gitmodules submodule.none.update none &&
|
||||||
|
git submodule init none &&
|
||||||
|
test "none" = "$(git config submodule.none.update)"
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'submodule update - update=none in .git/config' '
|
||||||
|
(cd super &&
|
||||||
|
git config submodule.submodule.update none &&
|
||||||
|
(cd submodule &&
|
||||||
|
git checkout master &&
|
||||||
|
compare_head
|
||||||
|
) &&
|
||||||
|
git diff --raw | grep " submodule" &&
|
||||||
|
git submodule update &&
|
||||||
|
git diff --raw | grep " submodule" &&
|
||||||
|
(cd submodule &&
|
||||||
|
compare_head
|
||||||
|
) &&
|
||||||
|
git config --unset submodule.submodule.update &&
|
||||||
|
git submodule update submodule
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'submodule update - update=none in .git/config but --checkout given' '
|
||||||
|
(cd super &&
|
||||||
|
git config submodule.submodule.update none &&
|
||||||
|
(cd submodule &&
|
||||||
|
git checkout master &&
|
||||||
|
compare_head
|
||||||
|
) &&
|
||||||
|
git diff --raw | grep " submodule" &&
|
||||||
|
git submodule update --checkout &&
|
||||||
|
test_must_fail git diff --raw \| grep " submodule" &&
|
||||||
|
(cd submodule &&
|
||||||
|
test_must_fail compare_head
|
||||||
|
) &&
|
||||||
|
git config --unset submodule.submodule.update
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'submodule update --init skips submodule with update=none' '
|
||||||
|
(cd super &&
|
||||||
|
git add .gitmodules &&
|
||||||
|
git commit -m ".gitmodules"
|
||||||
|
) &&
|
||||||
|
git clone super cloned &&
|
||||||
|
(cd cloned &&
|
||||||
|
git submodule update --init &&
|
||||||
|
test -e submodule/.git &&
|
||||||
|
test_must_fail test -e none/.git
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'submodule update continues after checkout error' '
|
test_expect_success 'submodule update continues after checkout error' '
|
||||||
(cd super &&
|
(cd super &&
|
||||||
git reset --hard HEAD &&
|
git reset --hard HEAD &&
|
||||||
|
|
Загрузка…
Ссылка в новой задаче