Without this patch, git-apply does not retain the mode when renaming or copying files.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> ---
apply.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
8dca30668d7077fa9b9157c3685b3ace8598a514
Show changes to apply.c +6 −2
diff --git a/apply.c b/apply.c --- a/apply.c +++ b/apply.c @@ -1043,8 +1043,12 @@ static int check_patch(struct patch *pat return error("%s: already exists in working directory", new_name); if (errno != ENOENT) return error("%s: %s", new_name, strerror(errno)); - if (!patch->new_mode) - patch->new_mode = S_IFREG | 0644; + if (!patch->new_mode) { + if (patch->is_new) + patch->new_mode = S_IFREG | 0644; + else + patch->new_mode = patch->old_mode; + } } if (new_name && old_name) {