зеркало из https://github.com/microsoft/git.git
Merge branch 'nd/checkout-f-while-conflicted-fix'
"git checkout -f <branch>" while the index has an unmerged path incorrectly left some paths in an unmerged state, which has been corrected. * nd/checkout-f-while-conflicted-fix: unpack-trees: fix oneway_merge accidentally carry over stage index
This commit is contained in:
Коммит
04f879a7fb
|
@ -46,4 +46,28 @@ test_expect_success '-m restores 3-way conflicted+resolved file' '
|
|||
test_cmp both.txt.conflicted.cleaned both.txt.cleaned
|
||||
'
|
||||
|
||||
test_expect_success 'force checkout a conflict file creates stage zero entry' '
|
||||
git init co-force &&
|
||||
(
|
||||
cd co-force &&
|
||||
echo a >a &&
|
||||
git add a &&
|
||||
git commit -ama &&
|
||||
A_OBJ=$(git rev-parse :a) &&
|
||||
git branch topic &&
|
||||
echo b >a &&
|
||||
git commit -amb &&
|
||||
B_OBJ=$(git rev-parse :a) &&
|
||||
git checkout topic &&
|
||||
echo c >a &&
|
||||
C_OBJ=$(git hash-object a) &&
|
||||
git checkout -m master &&
|
||||
test_cmp_rev :1:a $A_OBJ &&
|
||||
test_cmp_rev :2:a $B_OBJ &&
|
||||
test_cmp_rev :3:a $C_OBJ &&
|
||||
git checkout -f topic &&
|
||||
test_cmp_rev :0:a $A_OBJ
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
|
@ -2386,7 +2386,7 @@ int oneway_merge(const struct cache_entry * const *src,
|
|||
if (o->update && S_ISGITLINK(old->ce_mode) &&
|
||||
should_update_submodules() && !verify_uptodate(old, o))
|
||||
update |= CE_UPDATE;
|
||||
add_entry(o, old, update, 0);
|
||||
add_entry(o, old, update, CE_STAGEMASK);
|
||||
return 0;
|
||||
}
|
||||
return merged_entry(a, old, o);
|
||||
|
|
Загрузка…
Ссылка в новой задаче