diff options
author | Mark Mentovai <mark@chromium.org> | 2025-05-23 23:40:46 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2025-05-27 06:48:07 -0700 |
commit | 1d9a66493be9fef38e531da587dd47f6f17ea483 (patch) | |
tree | 9d2fcd934624849972667e8c0b29a2a9a8de2162 /builtin/commit-graph.c | |
parent | 2cc8c17d67265f1912b79f8e57fc2718597ca686 (diff) |
apply: set file mode when --reverse creates a deleted file
Commit 01aff0a (apply: correctly reverse patch's pre- and post-image
mode bits, 2023-12-26) revised reverse_patches() to maintain the desired
property that when only one of patch::old_mode and patch::new_mode is
set, the mode will be carried in old_mode. That property is generally
correct, with one notable exception: when creating a file, only new_mode
will be set. Since reversing a deletion results in a creation, new_mode
must be set in that case.
Omitting handling for this case means that reversing a patch that
removes an executable file will not result in the executable permission
being set on the re-created file. Existing test coverage for file modes
focuses only on mode changes of existing files.
Swap old_mode and new_mode in reverse_patches() for what's represented
in the patch as a file deletion, as it is transformed into a file
creation under reversal. This causes git apply --reverse to set the
executable permission properly when re-creating a deleted executable
file.
Add tests ensuring that git apply sets file modes correctly on file
creation, both in the forward and reverse directions.
Signed-off-by: Mark Mentovai <mark@chromium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/commit-graph.c')
0 files changed, 0 insertions, 0 deletions