Chandra Pratap noticed that "git apply" on a filesystem without executable bit support gives a warning when applying a patch that expects the preimage file to have executable bit on. Dscho noticed that the initial fix by Chandra did not work well when applying a patch in reverse. It turns out that apply.c:reverse_patches() invalidates the "a patch that does not change mode bits have the mode bits in .old_mode member and not in .new_mode member" invariant we rely on. Here is the result of concerted effort. Chandra Pratap (1): apply: ignore working tree filemode when !core.filemode Junio C Hamano (2): apply: correctly reverse patch's pre- and post-image mode bits apply: code simplification apply.c | 16 +++++++++++++--- t/t4129-apply-samemode.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) -- 2.43.0-174-g055bb6e996