зеркало из https://github.com/microsoft/git.git
Merge branch 'sb/submodule-update-reset-fix'
When resetting the working tree files recursively, the working tree of submodules are now also reset to match. * sb/submodule-update-reset-fix: submodule: submodule_move_head omits old argument in forced case unpack-trees: oneway_merge to update submodules t/lib-submodule-update.sh: fix test ignoring ignored files in submodules t/lib-submodule-update.sh: clarify test
This commit is contained in:
Коммит
f0605836b7
|
@ -1657,7 +1657,9 @@ int submodule_move_head(const char *path,
|
|||
else
|
||||
argv_array_push(&cp.args, "-m");
|
||||
|
||||
argv_array_push(&cp.args, old ? old : EMPTY_TREE_SHA1_HEX);
|
||||
if (!(flags & SUBMODULE_MOVE_HEAD_FORCE))
|
||||
argv_array_push(&cp.args, old ? old : EMPTY_TREE_SHA1_HEX);
|
||||
|
||||
argv_array_push(&cp.args, new ? new : EMPTY_TREE_SHA1_HEX);
|
||||
|
||||
if (run_command(&cp)) {
|
||||
|
|
|
@ -664,8 +664,8 @@ test_submodule_recursing_with_args_common() {
|
|||
cd submodule_update &&
|
||||
git -C sub1 checkout -b keep_branch &&
|
||||
git -C sub1 rev-parse HEAD >expect &&
|
||||
git branch -t check-keep origin/modify_sub1 &&
|
||||
$command check-keep &&
|
||||
git branch -t modify_sub1 origin/modify_sub1 &&
|
||||
$command modify_sub1 &&
|
||||
test_superproject_content origin/modify_sub1 &&
|
||||
test_submodule_content sub1 origin/modify_sub1 &&
|
||||
git -C sub1 rev-parse keep_branch >actual &&
|
||||
|
@ -885,6 +885,7 @@ test_submodule_switch_recursing_with_args () {
|
|||
(
|
||||
cd submodule_update &&
|
||||
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
|
||||
echo ignored >.git/modules/sub1/info/exclude &&
|
||||
: >sub1/ignored &&
|
||||
$command replace_sub1_with_file &&
|
||||
test_superproject_content origin/replace_sub1_with_file &&
|
||||
|
@ -1014,4 +1015,18 @@ test_submodule_forced_switch_recursing_with_args () {
|
|||
test_submodule_content sub1 origin/modify_sub1
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success "$command: changed submodule worktree is reset" '
|
||||
prolog &&
|
||||
reset_work_tree_to_interested add_sub1 &&
|
||||
(
|
||||
cd submodule_update &&
|
||||
rm sub1/file1 &&
|
||||
: >sub1/new_file &&
|
||||
git -C sub1 add new_file &&
|
||||
$command HEAD &&
|
||||
test_path_is_file sub1/file1 &&
|
||||
test_path_is_missing sub1/new_file
|
||||
)
|
||||
'
|
||||
}
|
||||
|
|
|
@ -2139,6 +2139,9 @@ int oneway_merge(const struct cache_entry * const *src,
|
|||
ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE))
|
||||
update |= CE_UPDATE;
|
||||
}
|
||||
if (o->update && S_ISGITLINK(old->ce_mode) &&
|
||||
should_update_submodules() && !verify_uptodate(old, o))
|
||||
update |= CE_UPDATE;
|
||||
add_entry(o, old, update, 0);
|
||||
return 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче