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 -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' '
|
test_expect_success 'Porcelain reset should remove remnants too' '
|
||||||
read_tree_u_must_succeed --reset -u HEAD &&
|
read_tree_u_must_succeed --reset -u HEAD &&
|
||||||
git ls-files -s >expect &&
|
git ls-files -s >expect &&
|
||||||
|
@ -1763,7 +1763,16 @@ int twoway_merge(const struct cache_entry * const *src,
|
|||||||
newtree = NULL;
|
newtree = NULL;
|
||||||
|
|
||||||
if (current) {
|
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 &&
|
(!oldtree && newtree &&
|
||||||
same(current, newtree)) || /* 6 and 7 */
|
same(current, newtree)) || /* 6 and 7 */
|
||||||
(oldtree && newtree &&
|
(oldtree && newtree &&
|
||||||
|
Loading…
Reference in New Issue
Block a user