diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2005-08-17 09:01:07 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-08-17 12:13:12 -0700 |
commit | 35cc4bcd10862db190df9685b7ad221f2a25404f (patch) | |
tree | 58597968f13ac962d1607c6c7c0cc2beedd71657 /apply.c | |
parent | e4aec26f8068100ae7b496b904d013943626d8c2 (diff) | |
download | git-35cc4bcd10862db190df9685b7ad221f2a25404f.tar.gz git-35cc4bcd10862db190df9685b7ad221f2a25404f.tar.xz |
[PATCH] When copying or renaming, keep the mode, please
Without this patch, git-apply does not retain the mode when renaming or
copying files.
[jc: Good catch, Johannes. I added a test case to demonstrate the
breackage in the original.]
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'apply.c')
-rw-r--r-- | apply.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -1043,8 +1043,12 @@ static int check_patch(struct patch *patch) 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) { |