summaryrefslogtreecommitdiff
path: root/parse-options.h
diff options
context:
space:
mode:
authorLibravatar Elijah Newren <newren@gmail.com>2011-08-11 23:20:11 -0600
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-08-14 14:19:38 -0700
commitec61d14963470b02db0d6e3825e2b5bbb1815cb6 (patch)
treeeb2925c7839584acf9575b31625b37526e362804 /parse-options.h
parentmerge-recursive: When we detect we can skip an update, actually skip it (diff)
downloadtgif-ec61d14963470b02db0d6e3825e2b5bbb1815cb6.tar.xz
merge-recursive: Fix modify/delete resolution in the recursive case
When o->call_depth>0 and we have conflicts, we try to find "middle ground" when creating the virtual merge base. In the case of content conflicts, this can be done by doing a three-way content merge and using the result. In all parts where the three-way content merge is clean, it is the correct middle ground, and in parts where it conflicts there is no middle ground but the conflict markers provide a good compromise since they are unlikely to accidentally match any further changes. In the case of a modify/delete conflict, we cannot do the same thing. Accepting either endpoint as the resolution for the virtual merge base runs the risk that when handling the non-recursive case we will silently accept one person's resolution over another without flagging a conflict. In this case, the closest "middle ground" we have is actually the merge base of the candidate merge bases. (We could alternatively attempt a three way content merge using an empty file in place of the deleted file, but that seems to be more work than necessary.) Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'parse-options.h')
0 files changed, 0 insertions, 0 deletions