Merge branch 'jk/two-way-merge-corner-case-fix' into maint
"git am --abort" sometimes complained about not being able to write a tree with an 0{40} object in it. * jk/two-way-merge-corner-case-fix: t1005: add test for "read-tree --reset -u A B" t1005: reindent unpack-trees: fix "read-tree -u --reset A B" with conflicted index
This commit is contained in:
commit
4766036ecd
@ -43,6 +43,21 @@ test_expect_success 'reset should remove remnants from a failed merge' '
|
||||
! test -f old
|
||||
'
|
||||
|
||||
test_expect_success 'two-way reset should remove remnants too' '
|
||||
read_tree_u_must_succeed --reset -u HEAD &&
|
||||
git ls-files -s >expect &&
|
||||
sha1=$(git rev-parse :new) &&
|
||||
(
|
||||
echo "100644 $sha1 1 old"
|
||||
echo "100644 $sha1 3 old"
|
||||
) | git update-index --index-info &&
|
||||
>old &&
|
||||
git ls-files -s &&
|
||||
read_tree_u_must_succeed --reset -u HEAD HEAD &&
|
||||
git ls-files -s >actual &&
|
||||
! test -f old
|
||||
'
|
||||
|
||||
test_expect_success 'Porcelain reset should remove remnants too' '
|
||||
read_tree_u_must_succeed --reset -u HEAD &&
|
||||
git ls-files -s >expect &&
|
||||
|
@ -1763,7 +1763,16 @@ int twoway_merge(const struct cache_entry * const *src,
|
||||
newtree = NULL;
|
||||
|
||||
if (current) {
|
||||
if ((!oldtree && !newtree) || /* 4 and 5 */
|
||||
if (current->ce_flags & CE_CONFLICTED) {
|
||||
if (same(oldtree, newtree) || o->reset) {
|
||||
if (!newtree)
|
||||
return deleted_entry(current, current, o);
|
||||
else
|
||||
return merged_entry(newtree, current, o);
|
||||
}
|
||||
return o->gently ? -1 : reject_merge(current, o);
|
||||
}
|
||||
else if ((!oldtree && !newtree) || /* 4 and 5 */
|
||||
(!oldtree && newtree &&
|
||||
same(current, newtree)) || /* 6 and 7 */
|
||||
(oldtree && newtree &&
|
||||
|
Loading…
Reference in New Issue
Block a user