apply: allow "new file" patches on i-t-a entries
authorRaymond E. Pasco <ray@ameretat.dev>
Thu, 6 Aug 2020 06:01:17 +0000 (02:01 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Aug 2020 20:07:52 +0000 (13:07 -0700)
commit7cfde3fa0f175d6c184d7876576c236b367d97bb
treec002dca0bfaffa20666f5024beeb96ae590efbe3
parentfeea6946a5b746ff4ebf8ccdf959e303203a6011
apply: allow "new file" patches on i-t-a entries

diff-files recently changed to treat changes to paths marked "intent to
add" in the index as new file diffs rather than diffs from the empty
blob.  However, apply refuses to apply new file diffs on top of existing
index entries, except in the case of renames. This causes "git add -p",
which uses apply, to fail when attempting to stage hunks from a file
when intent to add has been recorded.

This changes the logic in check_to_create() which checks if an entry
already exists in an index in two ways: first, we only search for an
index entry at all if ok_if_exists is false; second, we check for the
CE_INTENT_TO_ADD flag on any index entries we find and allow the apply
to proceed if it is set.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Raymond E. Pasco <ray@ameretat.dev>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
apply.c