summaryrefslogtreecommitdiff
path: root/compat/poll
diff options
context:
space:
mode:
authorLibravatar Jerry Zhang <jerry@skydio.com>2021-12-17 15:29:02 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-12-20 12:39:45 -0800
commit34d607032c0db6a6c68754e7a339c3caf08d6a79 (patch)
tree0f24a284d6cfe1dbe5cf64e367e20baf76d9c1b4 /compat/poll
parentGit 2.34.1 (diff)
downloadtgif-34d607032c0db6a6c68754e7a339c3caf08d6a79.tar.xz
git-apply: skip threeway in add / rename cases
Certain invocations of "git apply --3way" will attempt threeway and fail due to missing objects, even though git is able to fall back on apply_fragments and apply the patch successfully with a return value of 0. To fix, return early from try_threeway() in the following cases: - When the patch is a rename and no lines have changed. In this case, "git diff" doesn't record the blob info, so 3way is neither possible nor necessary. - When the patch is an addition and there is no add/add conflict, i.e. direct_to_threeway is false. In this case, threeway will fail since the preimage is not in cache, but isn't necessary anyway since there is no conflict. This fixes a few unecessary error messages when applying these kinds of patches with --3way. It also fixes a reported issue where applying a concatenation of several git produced patches will fail when those patches involve a deletion followed by creation of the same file. Add a test for this case too. (test provided by <i@zenithal.me>) Signed-off-by: Jerry Zhang <jerry@skydio.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat/poll')
0 files changed, 0 insertions, 0 deletions